介绍下自己。。。
上周日刚刚到达北京,23号开始第一家的面试历程,其他详细信息可以看一下我的上一篇博客
http://www.cnblogs.com/Zhang-silence/p/6866981.html
昨天刚刚复试通过,是一家朝阳区的公司,感觉技术氛围很适合自己,HR人漂亮人也好。下月一日入职,在等录用的邮件。。。
恩,第一天初试,应该是来北京的第一次面试,给我的感觉就是怼的我体无完肤。。。
首先笔试:
1.HTTPModult和HTTPHandler的异同和应用的情况
这个我写的是HTTP管道的两个接口。。。
好像是写错了给了0分。
2.你都知道哪些设计模式
单例模式
观察者设计模式
3.override和overload
重载是方法的签名不同多次重载以适应程序的需要
重写是用虚方法中的类重写用override修饰的类
4.进程,线程,协程,C#操作的类都叫什么,线程之间用什么互相通信
进程:proces,线程thread,协程不知道。。。
后面的写了个message queue 消息队列、、、
5.忘记了。
6.给一个数组排序
写了个最简单的冒泡排序
以下是面试:
说说你知道哪些数据结构
(堆栈,二叉树等等)。。笔者这里数据结构学的很差劲,所以感觉G掉了。。。因为说了一些自己知道的之后,气氛迷之沉默。。感觉是让我解释一番,然而完全不记得。。。
之后大约记得问了问我几种设计模式,我说了观察者设计模式和单例模式。然后解释了一下发布订阅的流程。说了自己在一个博客上看到了好像二十多个,用不到就记着两个
说一下重载和重写,你在什么情况下能用的上重载。。
这里解释重写的时候。。紧张的几乎是用了好多语言来解释。。。之后回答说我在很多项目都用得上重载,比如在构建与数据库交互的dbhelper。
之后问到了笔试题的第四题,就是进程和线程这里,笔者这里当初很有兴趣,所以说了很久
问了问我比如操作过什么进程,操作过什么线程云云。
回答:自己操作过nodepad进程云云。。实例化一个对象,之后用start标记可以运行。
操作线程需要给一个方法或一个委托,声明这个线程需要做什么事情,也是用start标记。。
比如如何在并发的情况下保证数据的原子性和完整性。。这里很蠢的把lock锁说成了task、、、
之后谈到了一些并发,锁的情况,队列的情况,和锁加队列。。。这里其实我很紧张。。。把锁和队列的情况完全说反了。。。
由此之后还拓展到了数据库锁,问了我知不知道友善锁。。。可惜我就知道互斥锁和双检锁。直接回答的不知道。。。
跨线程访问,是什么决定不能跨线程访问
默认不能跨线程访问,但是可以手动的设置让线程可以互相访问
我回答的是Command language Runtime决定的。然而面试官说我回答的不对,是windows窗体决定的不能跨线程访问,仔细一想的确说错了。
还有问到了我死锁的问题,传递一个空字符串能否发生死锁
如果是值类型则不会发生死锁,因为按照值类型传递的,每次死锁时只会操作值类型的副本,所以不会发生死锁
字符串的话我太清楚,但是我觉得如果也是操作对象的副本则不会发生死锁。。。
问到了排序,问了问我还知不知道排序的其他算法。。。
我回答的是应该有其他的,但是我就记着这个最简单的了。。。
好像问到了foreach。。就记着实现IEnumerator或继承GetEnumerator。。。问了我都有什么继承了IEnumerator。。
回去的地铁上仔细的回忆了回忆,回答真的很差劲。。
我应该从枚举开始切入,说一下枚举构造器,Getnumerator里面的方法是做什么的。。。结果都没说。
所有的集合类都继承了IEnumerator。。。
在我说了我还会原生JavaScript的时候问了问我两个延迟触发的方法
、、、SetTimeOut=-=就记着这一个,第一个参数给一个函数,第二个给触发的时间。
数据库之类的东西也问了问,让我写了两个跨表查询
写了一个子查询和跨表查询。。
问了问我简历中的项目,当初是如何设计的表
前面的问题都有一点战战兢兢,,到这儿的时候就显得自己话多了。。突突突一大堆云云。因为大多都是自己开发,自己设计表,自己设计主外键什么的。
PS:其实感觉很基础,就是自己发挥的太差了。。知道的东西没有说出来,当初真的是浑身是汗。。。
出去的时候感觉自己悬了,应该是被刷了。没想到第二天接到了复试的电话。。。
收到offer的时候感觉自己终于能在这座城市活得下去了。
希望跟我一样的即将离校都能有更好的风景~