前段时间,我想要换一份工作,顺便换一座居住的城市。因此不远万里,只身赶赴杭州,开始了.net开发工程师的面试之旅。机缘巧合下,做了一套面试题,是某公司技术总监亲自出的面试题。因为我个人技术实力不强,开发经验也仅仅一年多,还是半路出家,因此自己做着有点困难。这次面试结果也是理所应当的失败了。不过运气好的人,该公司技术总监人相当nice,稍微花了点时间指导了我一下他出的面试题的中的部分精髓以及我作为一个面试者应该要做的内容,受益匪浅,特此做一部分记录。
首先,中心思想就是 题一定要做,不会的也要按照自己的理解,给出定义。因为,他们出题主要是为了考察面试者的水平,那么如果在平常的工作中有涉及到的内容,即使并不是最准确的定义,通过自己的语言进行合理的总结,也是能够获得面试官青睐的,答案并不是唯一的。
以下列举几个例子:
1.你是如何保证数据库的完整性和一致性的?
面试官有分析,这道题如果是计算机专业的学生来答,那么答案会是 多考虑内外键来保证完整性,使用事务来保证一致性。这样其实就已经过关了。如果想要理解的更详尽一点,可以参照:https://blog.youkuaiyun.com/luke_wang/article/details/53240215
2.什么是盒模型?
大家都知道盒模型包含margin、padding等的内容。但是这道题只需要自己总结的一句话:盒模型是描述页面元素之间的关系的思维模型。如果更具体点就可以把它包含的具体内容来描述出来。
3.什么是委托?事件是否是一种委托?
委托是一个类,定义方法的类型,将方法作为输入参数传递。
事件并不是一种类,它是一个方法,它是为了简化委托的注册而出现的。事件是一种委托,这是严重的误导!
4.你如何提升应用性能?
面试官说:首先要优化设计,这是一个基本点。之后就可以通过各种小手段,譬如异步方式、存储过程等方式。
当然还有大部分考题是各家公司必考的内容:
例如:1.面向对象的三大特性是啥?
2.设计模式有哪些?请写出一种并简述其解决了什么问题?
3.前台向后台提交数据的方式有哪些?
4.前端:什么是闭包?
5.当然,一般最后还会有一道综合题,询问你自己做一个应用可能会遇到的技术难点有哪些,以及具体的流程是怎么样的。由于我本人还没达到能够完美打出这道题的水平,所以等以后进步了再来完善这道题,其余内容皆可通过搜索方便地找到答案。