《.NET程序员面试宝典》 – 书摘精要

程序员要于“内”和通往“外”两只地方扩展自己的学识及技巧:


—— 指的凡编辑代码的功底、数据结构思想、设计模式等。

“修内”四要素:

1.
深刻理解面向对象编程思想;

2.
精通C#编程语言特点;

3.
耳熟能详设计模式的23种植模式,理解各个模式UML图

4.
了解软件工程过程,掌握数据结构的概念与技能;

 


—— 指的是初技巧之热情、知识的广度、注重扩展性等。

“修外”五要素:

1.
对新技巧之理解与远见卓识;

2.
经品种之履熟悉 DB 设计、SQL Server 或 Oracle 技术;

3.
清晰了解代码实现方式、范例、以及.NET相关接口;

4.
明了 Web 2.0 理念、Blog/Wiki/RSS 架构、SOA
理念、软件测试,了解网络及其他操作系统;

5.
明怎样对英语面试;

 

(P15)
工资 ——
一定要是问明了是税前尚是捐后,这点并非多说。另外,还要问清楚,发小个月。很多单位来年底双薪,还有有单位会发作14-16单月不等于。

 

(P15)

“五险一钱财”
——
养老保险、医疗保险、失业保险、人身意外伤害保险、生育保险。“一钱”指的凡住房公积金。

 

有些单位公积金比例上得生强,所以您工资扣得为颇多,那表示店家到的钱又多,而一旦买房时,这些钱还是公协调的。所以,这一部分收益非可知忽视。

 

稍许单位还会往你提供上医疗保险、补充养老保险、补充意外保险、住房无息贷款或经济适用房等,也使问清楚。

 

(P16)
关于加班,国家起规定:如果周六、周日加班加点的语句,可以收获健康工资2加倍的加班费;如果是五一、十一这样法定的休假加班的言辞,可以博健康工资3倍增的加班费。

 

(P29)
事情还是人做下的,关键是丁。

 

(P30)
正确的做法是跟那些比你大之丁打交道,看她们是怎想的、怎么开的,学习他们,然后最终升任自己之力才是极致要之。

 

(P35)
语言有“无类型”、“弱类型”和“强类型”3种:

1.
“无类型” —— 不反省,甚至无区分指令和多少;

2.
“弱类型” —— 检查好弱,仅能够严厉地分指令和数码;

3.
“强类型” —— 严格地在编译期进行检查;

 

(P36) GAC
—— Global Assembly Cache
(全局应用程序集缓存),它解决了几只次并享某一个程序集的题目。

 

(P37)

 

值类型的实例通常是于线程栈上分红的(静态分配),但是以少数情形下可以储存于积着。

 

引用类型的对象总是以过程堆中分红(动态分配)。

 

援类型及值类型都蝉联自
System.Object 类,不同的是,几乎有的援类型且直接打 System.Object
继承,而值类型则继续其子类,即直接接轨 System.ValueType 。

 

(P38)
所有的值类型都是密封的,所以无法派生出新的值类型。

 

(P39)
引用类型可以涵盖 Null 值, 值类型不能够。

 

(P40)

引用类型在仓房中蕴藏一个援,其实际的贮存位置在托管堆。

 

值类型(不支持多态)适合存储C#应用程序的多少,而引用类型(支持多态)应该用于定义应用程序的行事。

 

(P43)
装箱就是将值类型转换为援类型的进程,并从栈中搬至堆着。而拆箱就是管援类型转换为值类型。

 

(P45)
DateTime 为 Struct 类型。

 

(P47)

要字
const (静态常量):

1.
当编译期间解析的常量;

2.
务必于声明又就初始化;

3.
既可用来修饰类中的分子,也可修饰函数体内的组成部分变量;

 

主要字
static readonly (静态常量):

1.
当运转中解析的常量;

2.
既可以当宣称时初始化,也得以以构造器中初始化;

3.
仅可以用来修饰类中的分子;

 

(P51)

问:
定制的好类应该继承哪个类? 应包含哪些构造函数?

报经:
定制的大类应由 Application.Exception 派生。按照预定,异常名应因
Exception 结尾, 应涵盖 Exception 基类定义之3只集体构造函数:

1.
默认的无参构造函数;

2.
带来一个字符串参数(通常是信)的构造函数;

3.
牵动一个字符串参数和一个 Exception 对象参数的构造函数;

 

(P60)

“==”判断符号左右片个
Object 是否对统一内存地址;

 

“Equals()”判断两独
Object 是否一律 (所有成员值一样);

 

(P63)

于.NET
Framework
中,由3栽序列化机制:二进制、XML和精炼地奔顾协议(SOAP),它们的得失如下:

1.
次之进制序列化的最好要命长是:
类型数据可规范地表示出。因为二进制序列化对象的公有和村办成员,所以当反序列化的时光可忠诚地重建起该目标的状态;

2.
XML 只序列化对象的国有属性和字段。在 XML
序列化时,私有字段和其他实例化对象就是夺了;

3.
XML 与 SOAP 是开标准,具有非常好的移植性;

 

(P72)
Random r = new Random(unchekced(int)DateTime.Now.Ticks));

 

(P73)

过程式编程语言也:
程序 = 算法 + 数据;

面向对象编程语言也:
程序 = 对象 + 消息;

 

(P76)
抽象类或者隐含个人构造函数的类似都非能够实例化。

 

(P79)
internal protected 的语意应该是 “internal || protected”

 

(P80)
栈的访问速度比堆要趁早,但堆栈的资源有限。

 

(P88)
虚函数的目的就在实现多态性。

 

(P92)
如果无写静态构造函数,而近乎吃蕴含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。

 

(P95)

“覆盖
(Override)” —— 指子类更定义父类的虚函数的做法;

 

“重载
(Overload)” ——
指允许有多只与名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不可同日而语);

 

重载只是相同种语言特色,与多态无关,与面向对象也无关;

 

包装好藏实现细节,使得代码模块化;

继往开来可以扩展已是的代码模块(类);

她的目的都是为了
—— 代码重用

 

多态是以兑现任何一个目的
—— 接口重用;

 

“接口是信用社最有价之资源。设计接口比用一积类来落实之接口更费时间,而且接口需要消耗更高昂之人工的日”。

 

累的也用代码而留存的说辞都越脆弱,因为“组合”可以非常好地代表继承的扩展现有的代码的作用,而且“组合”的显现还好(至少可预防“类爆炸”)。继承的存异常充分程度达是作为“多态”的功底,而未扩展现有代码的方式。

 

(P99)

接口:

——
从广义上说,凡是一个近乎提供于外部使用的有的还足以于称接口。广义接口的真正意义是于类似的接续中体现多态的职能,这种接口又为称之为抽象类接口。

 

——
从狭义上说,接口是依靠特定的函数集合,一般是用 Interface
声明的,它意味着一个方集合,这个集被号称一个命名接口。

 

从上述认识来拘禁,接口实际上是整合着多态而来的,它的极度酷之天职就是促成多态,而多态又是面向对象最精华的争辩。掌握了多态,也不怕掌握了面向对象的精粹。但控制多态必须优先亮以及控制接口,只有充分知情接口的概念,才能够重好地用多态。

 

(P104)

在C#遭逢,new
关键字可用作运算符、修饰符或约束。

 

new
修饰符和 override
修饰符不可同时用在一个分子及,因为马上半独修饰符在含义达成相互排斥。

 

(P108)
如果想调用子类的 new
方法,用子类的句柄(绝对免能够因此基类句柄)来调用。

 

(P110)
在构造函数中,通过 this 可以调用同一 class 中别的构造函数。

 

(P112)

子类被组织时必然会事先调用父类的构造函数,但得用
base 关键字选择调用哪个构造函数。

 

操纵调用哪一个,但切莫克哪个都无调用(至少选一个)。如果未指定的话,一般会调用无参数的构造函数,因为这是一个接近的默认的构造函数。

 

(P113)
抽象类允许包含抽象成员,但眼看不是必要的(可以允许一个虚无类吃无其余抽象成员),抽象类吃可有免抽象方法。

 

(P116)
接口中之接口成员好是方法、属性、事件与索引器。

 

(P188)
abstract 修饰符不得以和 static、virtual 和 sealed
修饰符一起利用,但是好与 override 修饰符一起行使。

 

(P123)
显式为接口的法子指定 public 修饰符是伪的。

 

(P127)
委托在编译的时候确定会编译成类。

 

(P128)
委托是一个近乎,它定义了艺术的品类,使得可以将方当做另一个法的参数来拓展传递,这种将方动态地赋给参数的做法,使得程序有所更好的只是扩展性。

 

(P131)
声明一个事件类于声明一个进展了包的信托项目的变量。

 

(P145)

1.
NLR : 前先后遍历 (Preorder Traversal) ——
访问结点的操作有在遍历其左右子树前,即到底左右;

2.
LNR : 中程序普历 (Inorder Traversal) ——
访问结点的操作有在遍历其左右子树间,即左根右;

3.
LRN : 后先后不折不扣历 (Postorder Traversal) ——
访问结点的操作有在遍历其左右子树下,即左右绝望;

 

(P146)

“满二叉树”
—— 对于有所结点都上至极酷之二叉树;

“完全二叉树”
——
叶子结点仅以层次太老之鲜重合出现,对于随意一结点,左子树高度只有当右子树高度要右子树高度加以同;

 

(P153)
System.Text.Encoding.Default.GetBytes(strTmp).Length —— 里面的 Default
属性,在默认情况下,英文字母用一个字节表示,汉字用双字节表示。

 

(P160)

于用排序的文书中,若有多独至关重要字相同之笔录,经过排序后这些所有同等关键字之笔录里的相对次序保持无转移,该排序方法是平安的;若持有同样关键字之记录中的对立次序发生变化,则这种排序方法是匪安宁的。

 

祥和之排序
——

排序名称:
气泡排序 (Bubble Sort)

时光复杂度:
最差、平均都是 O(n2);最好是 O(n)

空中复杂度:
1

 

排序名称:
鸡尾酒排序 (Cocktail Sort) (双向的冒泡排序)

时光复杂度:
最差、平均都是 O(n2);最好是 O(n)

空间复杂度:
1

 

排序名称:
插入排序 (Insertion Sort)

日子复杂度:
最差、平均都是 O(n2); 最好是 O(n)

空中复杂度:1

 

排序名称:
归并清除序 (Merge Sort)

时刻复杂度:
最差、平均、最好都是 O(nlogn)

空中复杂度:
O(n)

 

排序名称:
桶排序 (Bucket Sort)

时复杂度:
最差、平均、最好都是 O(n)

空中复杂度:
O(k)

 

排序名称:
基数排序 (Radix Sort)

岁月复杂度:
最差、平均、最好都是 O(dn) (d是常数)

空间复杂度:
O(n)

 

排序名称:
二立交树排序 (Binary Tree Sort)

时光复杂度:
最差、平均、最好且是 O(nlogn)

空间复杂度:
O(n)

 

排序名称:
图书馆排序 (Library Sort)

光阴复杂度:
最差、平均、最好还是 O(nlogn)

空中复杂度:
(L+&)n

 

勿平稳之排序
——

排序名称:
选择排序 (Selection Sort)

光阴复杂度:
最差、平均都是 O(n2)

空间复杂度:
1

 

排序名称:
希尔排序 (Shell Sort)

时间复杂度:
最差、平均、最好都是 O(nlogn)

空间复杂度:
1

 

排序名称:
堆排序 (Heap Sort)

日复杂度:
最差、平均、最好都是 O(nlogn)

空间复杂度:
1

 

排序名称:
快速排除序 (Quick Sort)

时光复杂度:
平均是 O(nlogn); 最要命的气象下是 O(n2)

空中复杂度:
O(logn)

(P165)
应用交换排序基本思维之首要排序方法有: 冒泡排序和高效排序。

 

(P183)
作为设计者,应该抱变化、利用生成,而非是逃避变化。

 

(P192)

MVC
(Model / View / Controller) 模式是同样种植下的比较多的设计模式。 MVC
包括了仿佛对象: Model 是以对象;View是她于屏幕上的象征; Controller
定义用户会对用户输入的响应措施。

 

1.

(Model):是应用程序的着重点有,模型表示业务数据,或者业务逻辑;

 

2.
视图 (View):
是应用程序中用户界面相关的片,是用户看到并与的相互的界面;

 

3.
决定器 (Controller):工作就是是基于用户输入控制用户界面数据展示与更新
Model 对象的状态;

 

(P201)

看似及类似中有以下关系:

1.
泛化 (Generalization)

2.
关联 (Association)

3.
依赖 (Dependency)

4.
聚合 (Aggregation)

 

泛化 ——
指类与类似里的存续关系、接口和接口之间的连续关系要近乎对接口的兑现关系;

 

因 ——
指对少数单相对独立的目标,当一个靶承担做任何一个对象的实例,或者靠另一个度喜爱那个的劳动经常,这简单个目标中要体现吗借助关系;

 

关联 ——
指对于有数个相对独立对象,当一个目标的实例与另外一个靶的片段一定实例存在一定的对应关系常,这简单只目标期间吧涉关系;

 

聚合 ——
指当对象 A 被加入到目标 B 中,成为目标 B 的有时,对象 B 和 对象 A
之间为集关系;

 

聚是关乎关系的平种,是比较强之涉嫌关系,强调的凡完全与局部内的关系;

 

事关和聚集的分:

1.

关联关系所涉的星星点点单对象是地处同一个层次上的;

集关系所关联的点滴只目标是地处不一样的层系上,一个意味着整体、一个意味有些;

 

2.
对此拥有聚合关系的简单单目标,整体目标见面制约其的构成对象的生命周期。部分类的目标不可知独在,它的生命周期依赖让整体类的目标的生命周期,当整体消失,部分也即接着消逝;

 

(P222)

一个经过至少含有一个线程;

 

当一个顺序开始运行时,它便是一个经过。进程包括运转中的次与次序所采取及之内存和系统资源;

 

(P227)

学业调度算法:

1.
预先来先服务;

2.
轮转法;

3.
多重反馈队列算法;

4.
先期级法;

5.
极差作业优先法;

6.
高应比优先法;

 

经过调度算法:

1.
先进先出算法;

2.
极端短 CPU 运行期优先调度算法;

3.
轮转法;

4.
文山会海反馈队列;

 

(P228)

“sleep()”
—— 是使线程停止一段时间的不二法门。在 sleep
时间间隔期满后,线程不必然立过来运行。

 

“wait()”
—— 是线程交互时,如果线程对一个协办对象 X 发出一个 wait
的调用,该线程会暂停实施,被调用对象上待状态,知道给唤醒或等时及。

 

(P238)

“存储过程”
—— 是用户定义的平文山会海 SQL
语句之联谊,涉及特定表或其它对象的任务,用户可调用存储过程;

 

“函数” ——
通常是数据库都定义之方,它接受参数并赶回某种类型的价值,并且不关乎特定用户表;

 

“事务” ——
作为一个逻辑单元执行之一模一样密密麻麻操作,一个逻辑工作单元必须有4单特性,成为
ACID (原子性、一致性、隔离性和持久性) 属性,
只有这么才能够化一个政工;

 

(P275)

“单项绑定”
—— <%# Eval(“username”) %>

“双向绑定”
—— <%# Bind(“title”) %>

 

(P276)
在多少绑定控件的 EditItemTemplate 或 InsertItemTemplate 中而运 Bind
函数。

 

(P278)

ASP.NET
页面在点各个子控件的风波以后,会递归调用控件的 OnPreRender ,
然后递归地将控件的 ViewState 序列化成一个字符串,最后递归调用控件的
Render 输出结果。

 


DataBind 的轩然大波备受,ItemCreated 和 ItemDataBind
是更加关键而不时要为此到的蝇头独事件。

 

ItemCreated
事件在 DataGrid 创建表格时触发。

 

ItemDataBound
事件于数额绑定到相应的行后触及。

 

(P283)
Session 在服务器和客户端各保留一个副本,关闭浏览器也与 Session
是否留存无外关联。

 

(P284)
Session 机制可能得负 Cookie
机制来达到保存表示的目的,但实则还发生另选择。

 

(P285)

“Application”
—— 是公家的,所有人都能够望;

 

“Session”
—— 是私有的,每个客户端都设有一个差的 Session 生存期;

 

“Cookie”
—— 是保存于本机的文书,记录短小之音,除非 Cookie
过期,否则会直接留存;

 

“ViewState”
—— 类似于 ASP 中之 Hidden
控件,用来记录页面被控件的状态,主要在页面间传递信息时用;

 

“Cache”
——
是缓存,用来记录都实行了之片数量,比如读取数据库目的凡加快显示,减少服务器的当,过期时吧是可自己设定的;

 

(P288)
XML 注释 : <!– –>

 

(P288)

ASP.NET页面内传递参数:

1.
URL 链接地址传递 —— QueryString

2.
Post 方式 —— Request.Form[“***”]

3.
Session 传递

4.
Application 传递

5.
Server.Transfer 传递

 

(P290)

GET
请求:

1.
用到一个问号“?”代表 URL 地址之最终数据参数的起来;

2.
后的参数每一个数量参数为 “名称 = 值”的样式出现;

3.
参数和参数之间用一个连接符“&”来区别;

 

(P291)

防盗链:

1.
检查Refer;

2.
为资源文件添加数据签名;

3.
Session验证;

 

(P288)
XML Web Service 与 .NET Remoting

1.

名称:
XML Web Service

善操作:
容易

跨平台:

充分利用
.NET Framework 功能:不充分

规范传递数据格式:
不标准

支持状态:
Stateless

目标作业模式:

支持通信协议:
HTTP

执行效率:

 

2.

名称:
.NET Remoting

爱操作:
较难以

跨平台:

充分利用
.NET Framework 功能:充分

准传递数据格式:
精确

支持状态:
Stateful 或 Stateless

目标作业模式:
丰富(单次呼叫、单一对象、前端启用)

支撑通信协议:
HTTP、TCP(可扩大)

施行效率:

 

(P304)

“Finalize()”
—— 用于隐式释放资源;

“Dispose()”
—— 用于显式释放资源;

 

(P311)
在面试前,面试者应对应聘公司具有了解。比如企业的局面、业务、未来向上相当。对商家文化了解是否深刻,是你过其他应聘者的一个长。

 

(P366)
知识是为此来为此底,不是因此来当摆饰唬人的。

网站地图xml地图