2011-2012 基础C#面试题目及答案
此题目为公司HR而做,分初级(50分)、中级(60分)、高级程序员(70分)测试用。
基础题(50分)
题目A:现有sqlserver数据库Test(数据库连接帐号/密码为:test/123)
表Article(字段:ID,Title,Introduce,Content)
1.使用ado.net写出(题目A中)数据库访问的代码(只写函数,返回类型为DataSet) (10分)
考察点:.net常用框架中日常工作的理解力、代码规范
答案:(考察点:1.使用Using,2.变量定义规范,3。需求的理解,要求写函数和返回DataSet、数据库表和链接帐号密码)
2.写出(题目A中)此表的增加、删除、修改存储过程 (10分)
考察点:对数据库操作的熟悉程度
3.常用的js类库的熟悉程度及其原理(10分)
如jquery YUI等
考察点:对常用WEB开发中类库的使用熟练程度。
4.传统3层开发框架和MVC的理解(10分)
参考答案:
1.表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)(答对这个给2分)
2.ASP.NET三层架构是一种理论,告诉你理论上怎么分层,ASP.NET MVC 是一种实践,告诉你了具体怎么分层。(答对这个给3分)
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了 “高内聚,低耦合”的思想。(答对这个给5分)
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
MVC是Model-View-Controller,严格说这三个加起来以后才是三层架构中的UI层,也就是说,MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。
所以,.net的三层结构中,并没有action这个概念。
5.对c#泛型的理解和应用场景(10分)
概念答案:
泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性。泛型为.NET框架引入了类型参数(type parameters)的概念。类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明、实现。这意味着使用泛型的类型参数T,写一个类MyList<T>,客户代码可以这样调用:MyList<int>,MyList<string>或MyList<MyClass>。这避免了运行时类型转换或装箱操作的代价和风险。
应用场景:
1.泛型避免装箱拆箱的性能损耗
2.代码复用,比如用在ORM中
3.参数的范围约束
提高题(30分)
6.(题目A中)写一个监控此表变化的触发器 (8分)
考察点:对数据库DB的深入一点理解(主要要区别对Update Insert Delete的监控)
7.WCF的概念及其应用场景(12分)(目前公司内部系统间接口使用)
参考答案:
WCF(原代号为Indigo)是一个用于创建和运行分布式系统的技术集合,使用它能创建安全的(Secure)、可靠的(Reliable)、跨平台的(transacted messaging along with interoperability)的分布式解决方案。它的面向服务的编程模型整合了.Net平台下以往全部的分布式开发技术,例如.Net Remoting,Asp.Net Xml Web Service,MSMQ,WSE,和Enterprise Service等,它可以支持跨应用程序域(AppDomain),进程(Process),网络(NetWork)的进行数据通讯,而且能寄宿在诸如IIS,Windows Service,Console,Windows Application等多种宿主(Host)中。
1.展开概念包括:契约Contract、地址Address、绑定Binding细节等
8.c# Cache的理解及其应用 (对比Application, Cache, Session, Cookie, Viewstate, Hidden, memcached的用法和区别)(15分)
参考答案:
Application 任意大小(内存限制), 整个应用程序的生命周期, 所有用户,服务器端 。
Cache 任意大小(内存限制),程序指定生命周期,所有用户,服务器端。(比较灵活)
Session 小量数据, 某个用户活动时间+ 延迟时间(默认20分钟), 单个用户, 服务器端。
Cookie 小量数据, 程序指定生命周期, 单个用户, 客户端 。
ViewState 小量数据,一个web页面的生命期,单个用户,客户端。
Hidden控件 小量简单的数据,一个web页面的生命期,单个用户, 客户端 。
memcached非关系型数据库,支持KEY/VALUE存储和分布式,存储时间可以设定。
9.对常用的设计模式的理解(至少要写出一个,如简单工厂模式)(8分)
参考答案:
简单工厂模式是类的创建模式,又叫做静态工厂方法模式。就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。一般涉及到三种角色(如下):
工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。
抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。
具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例,由具体类实现。
简单工厂模式优缺点:
模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。但由于工厂类集中了所有产品创建逻辑的,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码。
加分题(20分)
10.设计一个通用的日志存储模块:(4分)
要求:考虑到不同监控对象日志的通用性、完整性和高性能
考察要点:1.数据库设计是否通用2.是否考虑分布式3.数据库设计是否考虑大数据量并发(数据如何按照一定的维度拆分,但要考虑统计的性能)
11.对Nosql数据库和关系性数据库的理解及实际应用场景(4分)
1、High performance - 对数据库高并发读写的需求
2、Huge Storage - 对海量数据的高效率存储和访问的需求
3、High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求
上面提到的“三高”需求面前,关系数据库遇到了难以克服的障碍,所有才出现非关系性数据库。
包括:
一、满足极高读写性能需求的Kye-Value数据库:Memcached Redis,Tokyo Cabinet,Flare
二、满足海量存储需求和访问的面向文档的数据库:MongoDB,CouchDB
三、满足高可扩展性和可用性的面向分布式计算的数据库:Cassandra,Voldemort
应用场景:1.SNS 2.大数据量访问的缓存,顶到数据库前面。
不适用的场景:电信、金融证券等要求大量事物的应用场景。
12.项目管理中需求、架构、开发、测试、运维的实际体验。(4分)
13.设计一个高性能的分布式架构(4分)
答案:(参考静态页面CDN和动态ask的架构)
如:Cache+XML+MemCached+DB
14.Map/Reduce的理解(4分)
参考答案:
MapReduce是一个最先由Google提出的分布式计算软件构架,它可以支持大数据量的分布式处理。这个架构最初起源于函数式程式的map和reduce两个函
补充:软件开发 , C# ,