一种集各种优点于一身的技术面试方式
请根据下面的表格,从纵向的列选择你熟悉的知识点(最后两行可以随意列举你感兴趣或熟悉的知识点),从横向的行选择一个知识点的方面构成一个问题。
也就是说你可以选择一个知识点回答其五个方面,也可以选择十个知识点,每一个回答其一方面。
每回答一个问题之前请告诉我你选择的问题(比如“ORM的优缺点”),如果问题回答的相对准确,在表格中我会在相应的位置打五角星(好)或打勾(一般)。
30分钟之后,计算分数,一个勾1分,一个五角星2分,超过60分则面试通过(满分200),回答越多分数也越高。
回答开始时间: 回答结束时间: 总分: 60
|
这是什么(一句话总结一下) |
优缺点(如果没有缺点可以只说优点) |
代表性的实现或框架(是否开源?) |
用来解决什么问题或是为什么会出现这样的概念或技术 |
基本的实现原理或是要实现这个技术最需要的基本功能 |
ORM |
√ | ★ | √ | ||
IOC |
√ | ★ | √ | ||
MVC |
√ | ★ | √ | ||
SOA |
√ | ★ | √ | ||
AOP |
√ | ★ | √ | ||
AJAX |
√ | ★ | √ | ||
LINQ |
√ | ★ | √ | ||
泛型 |
√ | ★ | √ | ||
值类型/引用类型 |
√ | ★ | √ | ||
设计模式 |
√ | ★ | √ | ||
线程同步 |
√ | ★ | √ | ||
缓存 |
√ | ★ | √ | ||
(数据库)事务 |
√ | ★ | √ | ||
(数据库)索引 |
√ | ★ | √ | ||
异步队列 |
√ | ★ | √ | ||
线程池/连接池 |
|||||
NOSQL |
|||||
单元测试 |
|||||
(自定义) |
|||||
(自定义) |
可以把上述资料打印成一张纸,放在桌面上让面试者自问自答。甚至可以提供录音笔,不需要面试官的参与,之后进行评审,适用于大规模筛选。
可以针对需要的职位对以下一些参数进行调整:
- 纵向的知识点
- 横线的问题
- 及格线要求回答的问题总数,比如30分钟回答出20个题目认为及格
- 可以根据问题回答的完美程度有一个更多的区分,1-5分
- 时间可以放宽到1小时,也可以进一步缩小(当然及格线需要调整)
表格的横向应该有一个递进的关系,考察面试者对技术的掌握在哪一个层次:
- 知道有这个东西
- 了解并且评测过
- 在项目中使用过
- 自己尝试开发过
比如上面一套示范问题:
- 横线有递进
- 纵向分别考察了模式/方法学/数据库/架构/新技术/框架等方面的基础
- 适合高级软件工程师或架构师的面试
这种面试方式有以下优点(这只是技术面试,在这之前或之后应该有针对性格的面试):
- 不怕面试题泄漏。这些知识点是可以根据职位或是公司要求的技术调整的,面试者很难猜到。所有知识点在网上可以搜索到定义,但是这种回答是和自己的体验总结出来的东西完全不一样,相信没有一个人的答案是一致的。
- 面试的方式很灵活。可以随意调整面试时间。并且支持面试官不在场方式的自主面试。并且面试者可以很轻松地自己安排时间组织回答,不需要有被问的压力。面试者和面试官也不容易因发生分歧而导致个人感情。
- 不拘泥于细节,但却很考技术。你可以有技术的广度,也可以有技术的深度,没有广度也没有深度的人不太可能通过这样的面试。任何东西都是基于自己的理解,基于对本质的理解。
- 考的不只是技术。要在很短的时间组织自己的思维有条理得回答出这些问题,需要有清晰的思维以及不错的语言组织和表达能力,并且还需要脑子快,能及时切换到下一个问题。并且,我们可以看到如果能回答出这些问题,这个人一定是很好学,知其所以然的,所以可以看出是否热爱技术。
- 可以量化。谈话类的面试量化是一个问题,这种方式可以量化成分数,择优录取。
- 公平。所有人的问题都是一样的。可以由多个考官根据面试者的录音集体评分。正因为可以量化所以在大规模面试中相对公平,不会出现到后来先面试的人都忘记了这样的事情。
欢迎大家阅读我的极客时间专栏《Java业务开发常见错误100例》【全面避坑+最佳实践=健壮代码】