《进入IT企业必读的200个 .NET面试题》是2011年7月电子工业出版社出版的图书,作者是朱毅。
基本介绍
- 书名:进入IT企业必读的200个 .NET面试题
- 作者:朱毅
- ISBN:9787121140822
- 页数:406
- 定价:59.80
- 出版社:电子工业出版社
- 出版时间:2011年7月
- 开本:16
内容简介
本书着重针对.NET技术职位的应聘者,在.NET框架各个技术类别中,选取最常出现在.NET面试中的问题,进行分析和解答,同时解释和剖析与该问题相关的.NET机制原理,帮助读者达到知其然更知其所以然的程度。本书几乎包揽了所有常见的面试题,从基础知识、资料库,再到比较流行的XML、测试方法和算法,是目前市场上最新、最全的一本面试试题集锦。
全书配合了大量的图例及代码说明,非常适合正打算参加.NET技术职位的应聘和希望梳理.NET框架下技术点的读者阅读。
作者简介
朱毅,男,出生于上海,于上海交通大学获得电气信息工程和计算机科学双学士学位,于复旦大学获得软体工程硕士学位。先后任职于上海西门子移动通信有限公司和上海惠普有限公司,从事项目管理和系统开发工作。作者平时除了编写代码之外,热爱旅游、游泳、电影、音乐,喜欢开源的项目,习惯于浏览各大技术论坛。
图书目 录
第1章 应聘开发职位的技巧和禁忌 1
程式设计师在準备面试的过程中,有时会过分注重技术上的準备工作,事实上,一些非技术的準备工作也相当重要。掌握好应聘技术职位过程中的软技巧、準备一份出色的简历、提高警惕避免在应聘中触犯一些禁忌,可以大大地提高面试的成功率。在开始面试时,还要把握一些强势的招聘网站,给自己一个展现自我的平台。本章从了解、準备、开始,层层渐进,让读者对整个程式设计师面试的过程有个全局性的掌握。
1.1 技术职位需要怎样的人才——了解大环境 1
1.1.1 对技术的执着和热情 1
1.1.2 对编程始终抱有认真的态度 1
1.1.3 实事求是的态度和谦逊的品质 1
1.1.4 适合应聘公司的文化 1
1.2 一份出色的个人简历——面试準备 2
1.2.1 一份简历不宜超过一页 2
1.2.2 永远準备中文简历 2
1.2.3 不要在个人简历上注明希望薪水 2
1.2.4 简历模板 2
1.3 展现自我——开始发简历 3
1.3.1 应聘渠道 3
1.3.2 应聘流程 7
1.4 真正的面试——开始面试 8
1.4.1 笔试 8
1.4.2 面试 10
1.4.3 电话面试 10
1.4.4 网路考试 10
1.5 面试中的一些禁忌 11
1.6 小结 12
第2章 .NET框架基础 13
本章覆盖了.NET面试笔试中常见的.NET框架技术题。此类题目侧重于考查应聘者对于.NET机制的深入了解,彻底理解.NET的运行机制,并且熟悉一个.NET系统常用的管理部署方法。
2.1 .NET基础概念 13
2.1.1 什幺是CTS、CLS和CLR 13
2.1.2 开发和运行.NET程式需要的
最基本环境是什幺 15
2.1.3 .NET是否支持多程式语言开发 15
2.1.4 CLR技术和COM技术的比较 17
2.1.5 什幺是程式集和应用程式域 18
2.2 .NET运行机制 20
2.2.1 .NET程式被编译成什幺形式的代码 20
2.2.2 JIT是如何工作的 22
2.2.3 简述程式集的载入机制 23
2.2.4 如何配置程式集的版本策略 25
2.3 生成、部署和管理 27
2.3.1 如何生成强签名的程式集 27
2.3.2 如何把程式集放入GAC中 29
2.3.3 延迟签名及其作用 30
2.3.4 程式集的版本分哪几部分 32
2.4 名企面试真题 32
2.5 小结 33
第3章 .NET类型语法基础 34
本章覆盖了.NET面试笔试中最基础的语法和类型题。纵观.NET的面试题,此类题目涉及了最基础的知识点,其难度也相对最小。但是应聘者如果对此类的面试题回答得不正确或者不完整,将会给面试官留下技术水平较差的印象,建议读者对本章的题目做到深刻理解和掌握。
3.1 基础类型和语法 34
3.1.1 .NET中所有内建类型的基类是什幺 34
3.1.2 System.Object中包含哪些方法,哪些是虚方法 35
3.1.3 值类型和引用类型的区别 37
3.1.4 简述装箱和拆箱原理 40
3.1.5 C#中是否有全局变数 43
3.1.6 struct和class的区别,
struct适用哪些场合 43
3.1.7 类型的初始化器何时被调用 44
3.1.8 C#中方法的参数可以有哪几种传递方式 47
3.1.9 C#中string和String有什幺区别 50
3.1.10 .NET支持哪几种可访问性级别,C#实现了其中的哪几种 50
3.1.11 简述属性的特点及属性和方法的异同 51
3.1.12 简述C#中的浅複製和深複製 54
3.1.13 简述C#中的循环语法和各自的特点 57
3.1.14 C#中的using语句有什幺作用 60
3.2 记忆体管理和垃圾回收 62
3.2.1 简述.NET中堆叠和堆的特点和差异 62
3.2.2 执行string abc="aaa"+"bbb"+"ccc"共分配了多少记忆体 64
3.2.3 .NET中GC的运行机制 66
3.2.4 Dispose方法和Finalize方法在何时被调用 67
3.2.5 GC中代(Generation)是什幺,一共分几代 70
3.2.6 GC机制中如何判断一个对象是否仍在被使用 71
3.2.7 .NET的託管堆中是否可能出现记忆体泄漏现象 72
3.3 面向对象的实现 75
3.3.1 C#中类可以有多个父类、可以实现多个接口吗 75
3.3.2 简述C#中重写、重载和隐藏的概念 76
3.3.3 为什幺在构造方法中调用虚方法会导致问题 78
3.3.4 在C#中如何声明一个类不能被继承 82
3.4 异常的处理 82
3.4.1 如何针对不同的异常进行捕捉 82
3.4.2 如何使用Conditional特性 84
3.4.3 如何避免类型转换时的异常 86
3.5 名企面试真题 88
3.6 小结 89
第4章 字元串、集合和流的使用 90
字元串、集合和流在程式中处理数据时经常被用到,这些代码的编写将直接影响到系统的正确性和效率。本章将包含关于字元串、集合和流的常见面试题,并且通过分析这些题目和知识点,帮助读者梳理这些方面的知识。
4.1 字元串处理 90
4.1.1 System.String是值类型还是引用类型 90
4.1.2 StringBuilder类型有何作用 91
4.1.3 如何在String和Byte[]对象之间进行转换 92
4.1.4 简述BASE64编码的作用以及C#中对其的支持 94
4.1.5 SecureString的实例如何被分配和释放 96
4.1.6 什幺是字元串池机制 98
4.2 常用集合和泛型 99
4.2.1 Int[]是引用类型还是值类型 99
4.2.2 数组之间如何进行转换 100
4.2.3 解释泛型的基本原理 102
4.2.4 什幺是泛型的主要约束和次要约束 104
4.2.5 .NET中是否可用标準模板库(STL) 105
4.3 流和序列化 106
4.3.1 什幺是流,.NET中有哪些常见的流 106
4.3.2 如何使用压缩流 109
4.3.3 Serializable特性有何作用 111
4.3.4 .NET提供了哪几种可进行序列化操作的类型 113
4.3.5 如何自定义序列化和反序
列化的过程 116
4.4 名企面试真题 119
4.5 小结 119
第5章 常用类和接口 120
.NET除了提供运行引擎之外,还提供了丰富的内建类型。理解这些类型的作用和机制,能够帮助程式设计师减少代码工作,编写高效简洁的代码。而有时候误用类型,则会导致性能的降低,更严重时则会为系统带了潜伏的bug。本章将介绍一些经常出现在.NET面试中的类型和接口。
5.1 类型的基类System.Object 120
5.1.1 是否存在不继承自System.Object类型的类 120
5.1.2 在System.Object中定义的三个比较方法有何异同 122
5.1.3 如何重写GetHashCode方法 125
5.2 时间的操作System.DateTime 127
5.2.1 DateTime如何存储时间 127
5.2.2 如何在DateTime对象和
字元串对象之间进行转换 127
5.2.3 什幺是UTC时间,如何转换到UTC时间 130
5.3 IFormattable和IformatProvider的使用 131
5.3.1 如何使用IFormattable接口实现格式化输出 131
5.3.2 如何告诉类型格式化输出的方式 133
5.4 管理档案和资料夹的类型 135
5.4.1 如何操作档案和资料夹 135
5.4.2 如何实现档案和资料夹的监控功能 139
5.5 .NET中的定时器 141
5.5.1 .NET提供了哪几个定时器类型 141
5.5.2 .NET的内建定时器类型
是否会发生回调方法重入 146
5.6 名企面试真题 151
5.7 小结 151
第6章 .NET中的高级特性 152
本章的内容覆盖了诸如委託、事件、反射和特性等.NET框架中的高级特性。对这些特性的掌握和成熟运用,往往成为.NET程式设计师从入门级进阶到中级的判断标準。也正因为如此,此类题目在.NET技术笔试、面试中被大量採用。读者在阅读本章时,应力求做到知其然更知其所以然,充分理解各种特性在.NET框架下是如何实现的,这样的设计如何提高了程式的灵活性和可扩展性。
6.1 委託 152
6.1.1 请解释委託的基本原理 152
6.1.2 委託回调静态方法和实例方法有何区别 154
6.1.3 什幺是链式委託 154
6.1.4 链式委託的执行顺序是怎幺样的 156
6.1.5 可否定义拥有返回值的方法的委託链 157
6.1.6 委託通常可以套用在哪些场合 159
6.2 事件 165
6.2.1 请解释事件的基本使用方法 165
6.2.2 事件和委託有何联繫 167
6.2.3 如何设计一个带有很多事件的类型 169
6.2.4 用代码表示如下情景:猫叫、老鼠逃跑、主人惊醒 173
6.3 反射 175
6.3.1 请解释反射的基本原理和其实现的基石 176
6.3.2 .NET提供了哪些类型来实现反射 179
6.3.3 如何实现动态地发射程式集 184
6.3.4 如何利用反射来实现工厂模式 188
6.3.5 如何以较小的记忆体代价保存
Type、Field和Method信息 194
6.4 特性 196
6.4.1 什幺是特性,如何自定义一个特性 196
6.4.2 .NET中特性可以在哪些元素上使用 198
6.4.3 有哪几种方法可以获知一个元素是否申明某个特性 200
6.4.4 一个元素是否可以重複申明同一个特性 202
6.5 名企面试真题 204
6.6 小结 204
第7章 .NET多执行绪编程 205
多执行绪编程是每个技术框架下都需要面对的问题,在多CPU、多核的硬体架构逐渐普及的今天,多执行绪编程也渐渐变得更加重要。本章将集中覆盖关于.NET中多执行绪编程的面试题。
7.1 多执行绪编程的基本概念 205
7.1.1 请解释作业系统层面上的执行绪和进程 205
7.1.2 多执行绪程式在作业系统里是并行执行的吗 206
7.1.3 什幺是纤程 207
7.2 .NET中的多执行绪编程 208
7.2.1 如何在.NET程式中手动控制多个执行绪 208
7.2.2 如何使用.NET的执行绪池 212
7.2.3 如何查看和设定执行绪池的上下限 215
7.2.4 如何定义执行绪独享的全局数据 217
7.2.5 如何使用异步模式读取一个档案 221
7.2.6 如何阻止执行绪执行上下文的传递 223
7.3 多执行绪程式的执行绪同步 227
7.3.1 什幺是同步块和同步块索引 227
7.3.2 C#中的lock关键字有何作用 229
7.3.3 可否使用值类型对象来
实现执行绪同步 232
7.3.4 可否对引用类型对象自身进行同步 233
7.3.5 什幺是互斥体,Mutex类型和Monitor类型的功能有何区别 235
7.4 名企面试真题 238
7.5 小结 238
第8章 ASP NET套用开发 239
ASP NET是微软公司提供的编写动态网站的技术框架,其特点是基于.NET框架基础,所有ASP NET程式都可以使用针对.NET的语言编写。在微软公司的Visual Studio开发平台中,实现了拖放控制项等便捷的功能,使得ASP NET应用程式的开发效率得到了较大的提高,近些年来ASP NET技术逐渐成为网站开发的主流技术之一,本章将覆盖一些常见的关于ASP NET开发的面试题。
8.1 ASP NET套用开发基础 239
8.1.1 请解释ASP NET以什幺形式运行 239
8.1.2 常见的HTTP Code有哪些 242
8.1.3 GET请求和POST请求有何区别 245
8.1.4 介绍ASP NET的页面生存周期 247
8.2 控制项和页面 249
8.2.1 什幺是静态页面,什幺是动态页面 250
8.2.2 请简述ViewState的功能和实现机制 251
8.2.3 Session有哪几种存储方式,之间有何区别,如何进行设定 255
8.2.4 如何嵌套使用GridView控制项 259
8.2.5 列举几种实现页面跳转的方法,并说明其实现机制 263
8.2.6 请解释<%# Eval("source")"%>的功能和实现机制 270
8.2.7 ObjectDataSource控制项有何作用 273
8.3 验证和安全 277
8.3.1 如何使用正则表达式来验证一个
上海市电话号码 277
8.3.2 介绍ASP NET验证控制项的功能和
使用方法 280
8.3.3 如何防止SQL注入式攻击 287
8.4 名企面试真题 289
8.5 小结 289
第9章 .NET中的资料库开发 290
大部分系统都会包含资料库套用。资料库套用设计往往成为系统设计中最重要的组成之一,这其中不止包括资料库的架构、库结构的设计,也包括了程式访问资料库策略的设计。在.NET的程式开发中,ADO NET已经成为访问资料库最主要的组件框架。本章将覆盖和资料库访问及ADO NET有关的常见面试题,具体会覆盖ADO NET基本概念、资料库的连结、资料库读写等主题。
9.1 ADO NET和资料库程式基础 290
9.1.1 什幺是关係型资料库 290
9.1.2 如何通过SQL语句来实现行列转换 291
9.1.3 ADO NET支持哪几种数据源 293
9.2 ADO NET和资料库的连线 295
9.2.1 请简要叙述资料库连线池的机制 295
9.2.2 如何提高连线池内连线的重用率 298
9.2.3 一个连线字元串可以包含哪些属性 300
9.2.4 CommandBehavior.CloseConnection有何作用 302
9.3 使用ADO NET读写资料库 305
9.3.1 ADO NET支持哪两种方式来访问关係资料库 305
9.3.2 什幺是强类型的DataSet 309
9.3.3 请解释SqlDataAdapter的
基本工作机制 312
9.3.4 如何自动生成SqlDataAdapter的
更新命令 316
9.3.5 如何实现批量更新的功能 319
9.4 名企面试真题 321
9.5 小结 321
第10章 XML的套用和处理 322
XML可算是近10年来最炙手可热的技术之一,由于其跨平台的特性,很多技术套用都选择基于XML来进行发展。在.NET中,对XML的支持和套用随处可见。例如配置档案的格式、数据结构的表示、Web Service套用等,都是以XML语法为基础的。本章将详细覆盖常见的关于XML本身及其在.NET中套用的面试题。
10.1 XML的基本特性 322
10.1.1 什幺是XML 322
10.1.2 简述XML的常用领域及其优势 323
10.1.3 XML中<![CDATA[ ]]>标籤的作用 324
10.1.4 XML规範是否允许空的属性值 325
10.1.5 XML中如何处理诸如“<”的字元 326
10.1.6 XML中的命名空间如何使用 328
10.2 使用.NET组件读写XML 330
10.2.1 .NET中操作XML的基本类型有哪些 330
10.2.2 如何使用XmlDocument类型操作XML文档的节点和属性 334
10.2.3 如何使用XPath来指向带有属性的节点 337
10.2.4 .NET中如何验证一个XML文档的格式 338
10.2.5 .NET中XML文档和关係模式如何转换 340
10.3 利用XSLT处理XML文档 344
10.3.1 什幺是XSLT,XSLT有何作用 344
10.3.2 如何使用XSLT中的模板 346
10.3.3 如何在XSLT文档中调用
其他XSLT文档 349
10.3.4 如何在代码中使用XSLT文档 351
10.4 名企面试真题 353
10.5 小结 353
第11章 Web Service的开发与套用 354
Web Service是一种网路服务,形式非常类似于当前智慧型手机上的套用。通过通用的规範,Web Service技术允许使用者访问网路上每一个Web Service所提供的服务。在网路快速发展的今天,这种基于网路的分散式服务已经被广泛地套用。本章将讨论关于.NET中如何套用Web Service的面试题。
11.1 SOAP和Web Service的基础概念 354
11.1.1 请简述SOAP协定 354
11.1.2 什幺是WSDL,它有何作用 356
11.1.3 Web Service中如何处理附属档案 357
11.2 使用.NET开发Web Service 360
11.2.1 如何在.NET中创建Web Service 360
11.2.2 WebMethod特性包含哪些属性,各有何用处 363
11.2.3 如何生成Web Service代理类型 367
11.2.4 请简述.NET中Web Service的异常机制 368
11.3 Web Service的安全机制 371
11.3.1 请简要介绍WS-Security的签名机制 371
11.3.2 WS-Security规範申明了哪几种身份验证的方法 373
11.4 名企面试真题 375
11.5 小结 375
第12章 .NET Remoting分散式套用开发 376
在企业级套用开发中,分散式开发占据了越来越重要的地位。.NET Remoting是一种可扩展性很高的分散式开发技术,相对于DCOM、CORBA、RMI等分散式开发技术而言,.NET Remoting拥有着众多独特的优势。.NET Remoting是一个庞大的技术话题,如果详细展开的话可能要占据一本书的篇幅。本章主要针对那些经常出现在.NET面试中的、与Remoting基础相关的面试题。
12.1 .NET Remoting框架基础 376
12.1.1 请简要介绍.NET Remoting的运行机制 376
12.1.2 请列举.NET Remoting机制中有哪些组件可以扩展替换 379
12.1.3 请简述.NET Remoting生存周期机制 384
12.2 使用.NET Remoting进行分散式套用开发 387
12.2.1 请介绍服务端激活模式和客户端激活模式的区别 387
12.2.2 请简述Remoting中有哪几种远程调用方式 390
12.2.3 Remoting机制中如何处理以ObjRef为参数的方法调用 393
12.2.4 请简述Remoting中配置档案的使用 397
12.2.5 如何在客户端和伺服器端共享远程对象类型 400
12.3 名企面试真题 404
12.4 小结 404
第13章 代码和算法 405
无论是面试还是笔试,算法和代码的问题都是必不可少的,其区别仅在于笔试中更侧重于应聘者书写代码的能力,而面试中则更注重于应聘者的设计能力和算法思路。本章着重覆盖了一些在.NET面试中经常出现的和代码、算法有关的面试题,并且给出了解答思路和实现示例。
13.1 基础算法题 405
13.1.1 请实现一个快速排序算法 405
13.1.2 请实现一个二分查找算法 406
13.1.3 请实现一棵二叉树的中序、后序遍历 408
13.1.4 请写出一个奇偶分割算法 413
13.1.5 请实现一个简单的最短路径算法 414
13.2 程式设计题 423
13.2.1 请编程实现斐波拉契数列问题 423
13.2.2 请设计视窗程式演示八皇后问题 425
13.3 名企面试真题 432
13.4 小结 432
第14章 .NET中的单元测试 433
单元测试是软体开发中必不可少的一个环节,单元测试的优劣直接影响到集成测试、系统测试的效果,甚至会影响到最终产品的质量。大多数开发团队对单元测试非常重视,并且要求程式设计师掌握相应的知识。本章将覆盖在.NET面试中经常出现的关于单元测试的面试题。
14.1 单元测试基础概念 433
14.1.1 请简述单元测试的作用和其优点 433
14.1.2 请举例说明TDD开发方式的流程 434
14.1.3 请编写实现阶乘功能模组的测试用例 437
14.2 使用NUNIT进行单元测试 439
14.2.1 如何使用NUNIT来进行单元测试 439
14.2.2 如何对NUNIT的测试用例进行分类 442
14.2.3 请解释SetUp、TearDown、TestFixtureSetUp和
TestFixtureTearDown 446
14.3 名企面试真题 448
14.4 小结 448