1、 请用一个例子来说明泛型的好处。
泛型泛型可以存放任何的引用或值类型,避免了显式强制转换
List<int> list =new List<int>();
list.add(100);
list.add(“a string”); //会报错
在使用值类型泛型集合时,避免装箱和拆卸操作,效率更高
泛型功能提供了类型安全检查,不需要编写代码来检测数据类型是否正确,因为会在编译时强制使用正确的数据类型。减少了类型强制转换的需要和运行时错误的可能性
2、 描述下你常用的设计模式,并解释下你在什么业务逻辑下用的?为什么要用这样的模式?
2、简单工厂模式
通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利,有利于整个软件体系结构的优化。
单例模式
单例模式提供全局唯一的访问入口,易如控制可能发生的冲突。通常在多线程环境下全局计数器对象,日志管理对象等使用。
观察者模式
观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。一个目标可以有任意数目的依赖它的观察者,一旦目标的状态发生改变,所有的观察者都得到通知,作为对这个通知的响应,每个观察者都将查询目标以使其状态与目标的状态同步。
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、杂志业务有两个表,分别是杂志信息表和期刊表,请简要设计下表结构,并写一个sql查找所有杂志的最新期刊。
杂志信息表 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 ='2011春节联欢晚会'))
通过标签获得多个新闻
select newName from tbl_NewInfo where newID in(select newID from tbl_NandM where markID =(select markID from tbl_MarkInfo where markName ='赵本山小品同桌的你'))
6、请设计一个手机通讯录数据库,要求兼容性好(支持市面上的多数机型),可扩展性好。
(1)手机类型表(tb_phoneType)
typeID 主键编号(自增标识)
typeName 类型名称
typeDetail 类型描述
(2)通讯录(tb_CommBook)
ID 主键(自增标识)
phoneType 手机类型编号(机型)
friendName 好友名称
Tel 电话
mobile 手机
addDate 添加时间
(3)关系分类表(tb_class)
ID 主键(自增标识)
className 分类名称
7、假设一个老系统出现了性能问题,没有源码,没有数据库设计文档,是C#+Sql2000开发的,请问你通过什么方式可以快速的定位问题。
1、使用黑盒和压力测试判断性能问题所在(代码问题,SqlServer问题)
2、使用Reflector对程序进行反编译,检查代码
3、使用SqlServer事件探查器收集跟踪信息,检查sql语句性能、数据库是否死锁等。