[关闭]
@xrtgavin 2017-10-12T15:01:29.000000Z 字数 2771 阅读 1597

如何面试软件工程师?

work 已发布


面试内容

Guideline

一、基础知识

六项基本功

计算机体系结构

操作系统

数据库

计算机网络

算法与数据结构

编译原理

考察点多且杂,需要耗费大量的面试时间,推荐刘未鹏的方法:列所读书单

二、发现实际的经验

三项必备能力

1. coding

入门级:排序、链表操作、二分
考题:
链表倒排、链表倒数第 K 元素、两个有序链表归并排序
考察点:coding

进阶级:算法题
考察点:coding & problom solving

2. 应届生,考察对编程语言的理解

C++ 的话,考题:

[题目欠缺] 2. 对社招,考察 design 能力: 实际系统的设计

考察:

梯度:方案可行->常见性能热点的优化(qps/latency)->估算理论性能上限

3. problem solvig

算法与数据结构
考题:
- 有序数组中,给定 k 的出现次数
- next_permutation
- 连续子数组的最大和

追问细节

判断依据:一个负责任的工作在一线的工程师,必然对自己所从事工作的细节了如指掌

没经验就答不上来

内存问题如何解?多线程问题如何解?cpu 利用率高如何解?

加分项

三、综合素质

四、理性思维

无标准答案,能看到优缺点,合理即可
- 对异常与 errorcode 的理解
- 为最喜欢的编程语言增加一种功能,增加什么;减少一种功能,减少什么

Reference

History

面试方法

面试官分工

目标/角色 初试(电话面试) 复试 终试
知识 O O X
经验 O O X
能力 X O O
意愿、动机 X O O
个性特征 X X O
价值观 X X O

O: 必须考察的目标,要给出书面的评价
X: 如果有考察到,可以将收集到的信息分享给其他面试官

终面面试官至少高于候选人2级

有效的面试流程

准备阶段

面试阶段:行为面试法【见下】

评估反馈阶段

结构化表达:

  1. 候选人层级、录用意见
  2. 基本信息
  3. 工作经验:以案例支持
  4. 软性技能:以案例支持
  5. 不足之处
  6. 待下轮考察内容/后续动作
  7. 其他补充信息(可选)

行为面试法

一、理论基础

行为面试法是基于行为的连贯性原理发展起来的。其假设前提是,一个人过去的行为能预示他未来的行为。正如一个经常迟到的人,下次开会还会迟到一样。

二、面试方法:

行为面试中常用的一种技巧叫STAR面试法,分别为:

三、问题设计:

面试中,面试官需要尽可能地收集完整STAR。因此行为面试法要求面试提问者目标明确,追求细节。

行为问题设计层次

问题层次 提问方式 问题示例
基本问题 针对某个话题进行起始问题 这个项目看起来不容易,你是怎么做的?
二级问题 针对上一个回答提问“为什么” 你为什么用这个方法呢?
三级问题 针对二级问题的回答,问“什么” 通过这个事情,你学到了什么?

行为问题与其他问题对比示例

能力项 行为问题 假设问题 引导性问题
聪明 你提到业务发生变化了,那你怎么应对的呢? 假如让你学一门新技术,你会怎么做? 你觉得自己聪明嘛?
乐观 你提到业务受挫了,那时候你怎么做的? 如果遇到挫折,你是怎么应对? 你是乐观的人,还是悲观的人?
皮实 上一份工作被老板批评过吗?(有),是什么原因?你当时怎么想的? 如果被老板不分青红皂白的批评,你会怎么办? 你是不是挺害怕老板批评你的?
自省 如果让你再做一次,你觉得哪些地方可以改进? 如果同事反对你的建议,你怎么办? 总是和同事起冲突,你会不会觉得烦?
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注