第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
2.1.NET基础概念 13
2.1.1什么是CTS、CLS和CLR 13
2.1.2开发和运行.NET程序需要的最基本环境是什么 15
2.1.3.NET是否支持多编程语言开发 15
2.1.4CLR技术和COM技术的比较 17
2.1.5什么是程序集和应用程序域 18
2.2 .NET运行机制 20
2.2.1.NET程序被编译成什么形式的代码 20
2.2.2JIT是如何工作的 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
3.1基础类型和语法 34
3.1.1.NET中所有内建类型的基类是什么 34
3.1.2System.Object中包含哪些方法,哪些是虚方法 35
3.1.3值类型和引用类型的区别 37
3.1.4简述装箱和拆箱原理 40
3.1.5C#中是否有全局变量 43
3.1.6struct和class的区别,struct适用哪些场合 43
3.1.7类型的初始化器何时被调用 44
3.1.8C#中方法的参数可以有哪几种传递方式 47
3.1.9C#中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.14C#中的using语句有什么作用 60
3.2内存管理和垃圾回收 62
3.2.1简述.NET中堆栈和堆的特点和差异 62
3.2.2执行stringabc=“aaa”+“bbb”+“ccc”共分配了多少内存 64
3.2.3.NET中GC的运行机制 66
3.2.4Dispose方法和Finalize方法在何时被调用 67
3.2.5GC中代(Generation)是什么,一共分几代 70
3.2.6GC机制中如何判断一个对象是否仍在被使用 71
3.2.7.NET的托管堆中是否可能出现内存泄漏现象 72
3.3面向对象的实现 75
3.3.1C#中类可以有多个父类、可以实现多个接口吗 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.1System.String是值类型还是引用类型 90
4.1.2StringBuilder类型有何作用 91
4.1.3如何在String和Byte[]对象之间进行转换 92
4.1.4简述BASE64编码的作用以及C#中对其的支持 94
4.1.5SecureString的实例如何被分配和释放 96
4.1.6什么是字符串池机制 98
4.2常用集合和泛型 99
4.2.1Int[]是引用类型还是值类型 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.3Serializable特性有何作用 111
4.3.4.NET提供了哪几种可进行序列化操作的类型 113
4.3.5如何自定义序列化和反序列化的过程 116
4.4名企面试真题 119
4.5小结 119
第5章常用类和接口 120
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.1DateTime如何存储时间 127
5.2.2如何在DateTime对象和字符串对象之间进行转换 127
5.2.3什么是UTC时间,如何转换到UTC时间 130
5.3IFormattable和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
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
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.2C#中的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
8.1ASPNET应用开发基础 239
8.1.1请解释ASPNET以什么形式运行 239
8.1.2常见的HTTP Code有哪些 242
8.1.3GET请求和POST请求有何区别 245
8.1.4介绍ASPNET的页面生存周期 247
8.2控件和页面 249
8.2.1什么是静态页面,什么是动态页面 250
8.2.2请简述ViewState的功能和实现机制 251
8.2.3Session有哪几种存储方式,之间有何区别,如何进行设置 255
8.2.4如何嵌套使用GridView控件 259
8.2.5列举几种实现页面跳转的方法,并说明其实现机制 263
8.2.6请解释﹤%#Eval(“source”)“%﹥的功能和实现机制 270
8.2.7ObjectDataSource控件有何作用 273
8.3验证和安全 277
8.3.1如何使用正则表达式来验证一个上海市电话号码 277
8.3.2介绍ASPNET验证控件的功能和使用方法 280
8.3.3如何防止SQL注入式攻击 287
8.4名企面试真题 289
8.5小结 289
第9章.NET中的数据库开发 290
9.1ADONET和数据库程序基础 290
9.1.1什么是关系型数据库 290
9.1.2如何通过SQL语句来实现行列转换 291
9.1.3ADO.NET支持哪几种数据源 293
9.2ADONET和数据库的连接 295
9.2.1请简要叙述数据库连接池的机制 295
9.2.2如何提高连接池内连接的重用率 298
9.2.3一个连接字符串可以包含哪些属性 300
9.2.4CommandBehavior.CloseConnection有何作用 302
9.3使用ADONET读写数据库 305
9.3.1ADONET支持哪两种方式来访问关系数据库 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
10.1XML的基本特性 322
10.1.1什么是XML 322
10.1.2简述XML的常用领域及其优势 323
10.1.3XML中﹤![CDATA[]]﹥标签的作用 324
10.1.4XML规范是否允许空的属性值 325
10.1.5XML中如何处理诸如“﹤”的字符 326
10.1.6XML中的命名空间如何使用 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章WebService的开发与应用 354
11.1SOAP和WebService的基础概念 354
11.1.1请简述SOAP协议 354
11.1.2什么是WSDL,它有何作用 356
11.1.3WebService中如何处理附件 357
11.2使用.NET开发WebService 360
11.2.1如何在.NET中创建WebService 360
11.2.2WebMethod特性包含哪些属性,各有何用处 363
11.2.3如何生成WebService代理类型 367
11.2.4请简述.NET中WebService的异常机制 368
11.3WebService的安全机制 371
11.3.1请简要介绍WS-Security的签名机制 371
11.3.2WS-Security规范申明了哪几种身份验证的方法 373
11.4名企面试真题 375
11.5小结 375
第12章.NETRemoting分布式应用开发 376
12.1.NETRemoting框架基础 376
12.1.1请简要介绍.NETRemoting的运行机制 376
12.1.2请列举NETRemoting机制制中有哪些组件可以扩展替换 379
12.1.3请简述.NETRemoting生存周期机制 384
12.2使用.NETRemoting进行分布式应用开发 387
12.2.1请介绍服务端激活模式和客户端激活模式的区别 387
12.2.2请简述Remoting中有哪几种远程调用方式 390
12.2.3Remoting机制中如何处理以ObjRef为参数的方法调用 393
12.2.4请简述Remoting中配置文件的使用 397
12.2.5如何在客户端和服务器端共享远程对象类型 400
12.3名企面试真题 404
12.4小结 404
第13章代码和算法 405
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
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