一个偶尔的机会,获得几个公司的面试邀请,其中两家比较熟悉,在12年第一次跳槽的时候就面过,毫无疑问都是以等消息无果而告终。现在这个机会又呈现在面前,由于最近公司比较忙,很难请假,最终选择挑战W公司,虽然它是个外包公司。挑选的理由有两个:
第一,在我看来W公司的水平还算不错,如果能加入,能提升自己各方面的能力。
第二,W公司提供了两个职位尝试,而且薪水也能满意。
回想起来,12年那次面试准备不充分,连面试题都没看,直接冲了过去面,早上8点出门,下午4点半才面完,感觉整个人都被掏空了,这算是一次非常难忘的经历吧!由于了解了他们出题的一些思路,准备也稍微多了一些。
面试官提出的问题
问题1:
1. Asp.net page的生命周期
2. 谈谈Session和ViewState
3. 如何在两个页面之间传值
4. 谈谈Ado.net
5. 谈谈MVC模式
6. 考察类的继承、覆写、虚方法,一个类继承自一个类,覆写父类的构造函数,然后,new实例,求打印顺序(即构造函数的执行顺序),这个问题网上很多,略过。
7. 谈谈session和cookie的机制
8. asp.net mvc的原理,浏览器是怎么解析url的
9. 算法题:两个byte[]数据,非常大,找出第一个重复的数和第一个不重复的数,写出最优算法。
10. 当一个Ajax访问无响应时,怎么中止这个Ajax请求?
回 答:
A1. 问题好像不是这么问的,但考的是这方面的知识,面之前还看过这方面的东西,可以,那会儿脑子里全是英文,一时间竟然反应不过来,被这个问题搞得非常狼狈,自我感觉是没有说清楚。
A2. 这个问题非常及时,是个老生常谈的问题,刚好对于这方面稍微熟悉一点。我简单的说了下session的实现机制,存储session的三种方法,禁用cookie对于session的影响,以及应对办法(URL重写)。接着,讲了webform的服务端控件保存状态的一些原理,其实就是ViewState的相关,相对于asp.net mvc来说,webform在这方面有一定的性能损耗,毕竟要来回传递隐藏表单域。
A3. 办法比较多吧,可以通过提交表单的形式,也可以通过Url传值,另外利用cookie、session也可以传值,讲得不深,对方听到你谈到这些,感觉也差不多了。
A4. Ado.net也没谈多少,就讲了讲封装的一些操作数据库的方法,对方听了也没继续让我讲更多。
A5. 这个问题经常问,网上一搜也是一大把,基本上随便讲讲,问题不大,不过,要清楚我们在项目中常用的三层架构,跟MVC模式还是有些区别的,这个在设计模式书中会有比较详细的解释。