• C#面试3


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

    
  • 相关阅读:
    SpringBoot 动态修改定时任务频率
    window三种程序自启动方式
    vbs与bat脚本实现本地jdk版本自动切换
    java连接sqlserver数据库
    java连接Access数据库
    Java如何连接Access数据库(两种方式实例代码)
    java连接access数据库的三种方式以及远程连接
    Linux下实现MySQL数据库每天定时自动备份
    解决谷歌浏览器http链接自动跳转到https的问题
    2021年第一天
  • 原文地址:https://www.cnblogs.com/lhws/p/1969795.html
Copyright © 2020-2023  润新知