现在的位置: 首页 > 综合 > 正文

C#面试3

2012年02月29日 ⁄ 综合 ⁄ 共 2634字 ⁄ 字号 评论关闭

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语句性能、数据库是否死锁等。



抱歉!评论已关闭.