asp.net 面试题

1、请用一个例子来说明泛型的好处。

2、描述下你常用的设计模式,并解释下你在什么业务逻辑下用的?为什么要用这样的模式?

3、有两个有序整形数组(已经按从小到大排序),请写一个算法找出二者相同的元素和不同的元素。

4、杂志业务有两个表,分别是杂志信息表和期刊表,请简要设计下表结构,并写一个sql查找所有杂志的最新期刊。

5、新闻通常有多个标签(关键字),请设计表结构来描述二者的关系,要求很方便查找某个新闻的标签和查找指定标签所有的新闻。

6、请设计一个手机通讯录数据库,要求兼容性好(支持市面上的多数机型),可扩展性好。

7、假设一个老系统出现了性能问题,没有源码,没有数据库设计文档,是C#+Sql2000开发的,请问你通过什么方式可以快速的定位问题。

1.泛型可以存放任何的引用或值类型,避免了显式强制转换
List<T> list =new ArrayList<T>();
list.add("可以放个值,也可以放对象")
访问时由于已经指定了存放类型T 所以在取值时不需要强制转换了 可以用foreach(T t in list){
Console.WriteLine(""+t.属性);
}
使用时很方便 也精简了代码
2.MVC设计模式 在使用三层架构时最适合 它将页面和代码很好的分离 也将逻辑代码和显示代码很好的分离开来 易于管理和维护升级
3.int[] num1=new int[]{3,5,7,8,9} int[] num2=new int[]{2,4,6,8}
这里要用到两个循环
int commonNumInt=0;
int diffentNumInt=0;
for(int i=0;i<num1.length;i++){
for(int j=0;j<num2.length;j++){
if(num1[i]==num2[j]){
commonNumInt ++; //相同元素的个数
break;
}else{
if(j==num2.length-1){
diffentNumInt ++; //不同元素的个数
}
}

}
}
4.杂志信息表 tbl_MagazineInfo
杂志编号:magazineID nvarchar(5) not null
杂志名称:magazineName nvarchar(20) not null
杂志作者:magazineAuthor nvarchar(20) not null
出版时间:magazineTime nvarchar(20) not null
出版社名:magazinePubliName nvarchar(50) not null
期刊表 tbl_Periodical
期刊编号:periodicalID nvarchar(5) not null
杂志编号:magazineID nvarchar(5) not null
期刊名称:periodicalName nvarchar(20) not null
期刊时间:periodicalTime nvarchar(20) not null

select max(periodicalTime) from tbl_Periodical where magazineID in(select magazineID from tbl_MagazineInfo)
5.新闻信息 tbl_NewInfo
新闻ID: newID int not null
新闻名称: newName nvarchar(20) not null
标签信息 tbl_MarkInfo
标签ID: markID int not null
标签名称: markName nvarchar(20) not null
中间表 tbl_NandM
ID: id
新闻ID: newID int not null
标签ID: markID int not null
通过指定新闻名获得多个标签
select markName from tbl_markInfo where markID in( select markID from tbl_NandM where newID =(select newID from tbl_NewInfo where newName ='参数'))
通过标签获得多个新闻
select newName from tbl_NewInfo where newID in(select newID from tbl_NandM where markID =(select markID from tbl_MarkInfo where markName ='参数'))
6要在数据库中设计 这里就不做了
7还在考虑筹划之中……
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-06
1.关于泛型好处较多!举个常用的例子,泛型集合的例子如:ClassConditionInfo是你自己定义的一个

参数的添加类,这时候你要添加参数可以使用这种方式:List<ClassConditionInfo> arrParam=new
List<ClassConditionInfo>();
arrParm.Add(new ClassConditionInfo("@yourParam",theText));这时候其他的方式就不如这种泛型集

合方便,其不仅可以做为数据源,而且可以方便的添加删除!更重要的是可以对任意数据类型进行操作


2.最常用的设计模式就是抽象工厂,当你需要在不同的数据库进行切换时(如:sqlserver,oracle),

考虑用这种设计模式,这种方式可以方便的在两种数据操作类之间进行切换!另外一种常用的设计模式

其实就是我们常用的事件,其实它的原型是观察者模式,发送者只管发送请求;接收者只管接收请求,

谁发出的你不需要知道。
另外其实.net前台(aspx)和后台(cs)分开的方式,其实就是mvc模式。
3.可以考虑二分查找!
(1)假设数组为arrA和arrB,先取出arrA数组的中值,从arrB中的第一个元素开始取,如果元素小于其

中值,就在arrA小于中值的元素中取,同理仍可以用二分法查找,直到只剩一个元素,与其比较如果相

等打印出来!
(2)同理循环arrB中的所有元素用(1)中的方法在arrA中查找如遇相等的则打印出来!
(3)可以考虑把arrA和arrB中的元素各放入一个集合中,移除(Remove)相同的剩下的就是不同的!
4.(没说明白期刊和杂志的区别)
杂志信息表(tb_Magazine)
字段 说明
id 主键编号(自增标识)
magazineName 杂志名
Author 作者
publisher 出版社
publisherDate 出版时间
publisherType 刊出类型

期刊表(tb_pub)
字段 说明
id 主键编号(自增标识)
pubNo 期刊号
magazineID 杂志编号
pubDate 发行日期
select max(pubDate),max(pubNo) from tb_pub where magazineID in (select magazineID in tb_Magazine) group by magazineID
5.(多对多关系)
新闻表(tb_news)(省略)
字段 说明
id 主键编号(自增标识)
Title 标题
Content 内容

新闻标签表(tb_news_tags)
字段 说明
id 主键编号(自增标识)
newsID 新闻编号
TagsID 标签编号

标签表(tb_tags)
字段 说明
id 主键编号(自增标识)
TagsName 标签名

6.(1)手机类型表(tb_phoneType)
字段 说明
typeID 主键编号(自增标识)
typeName 类型名称
typeDetail 类型描述
(2)通讯录(tb_CommBook)
字段 说明
ID 主键(自增标识)
phoneType 手机类型编号(机型)
class 关系分类号
friendName 好友名称
Tel 电话
Email 电子邮箱
mobile 手机
addDate 添加时间
friendImeUrl 好友图片地址
(3)关系分类表(tb_class)
字段 说明
ID 主键(自增标识)
className 分类名称

7.是否是要判断是代码问题还是数据库的性能问题 (黑盒,压力测试)