IT 工程师面试指北
一、面试完整流程一览
根据本人多年面试程序员的经验来看,技术人员的面试流程一般分为这么几步:
1) 简历投递
2) 人事筛选简历
3) 技术小组筛选简历
4) 技术面试 2~5 轮
5) 人力/综合面试
当前轮次通过,进入下一轮候选人清单
二、如何翻倍自己的面试机会
1.拿到面试机会的几个重要前提
1) 有相应的岗位;
2) 符合投递条件(学历、工作年限);
3) 有多个投递渠道(招聘网站、猎头、内推、技术群);
4) 简历符合要求且有亮点;
5) 才华横溢且名声在外;
2.扩展投递渠道
1) 现有的投递渠道:招聘网站、公司官网
2) 可以扩展的投递渠道:猎头、内推
3) 独特的方式:优秀的作品(软件产品、开源项目、文章、出版物)、实习
其中,可以合理运用几种成功率较高的方式:
1) 优秀的作品
2) 内推(论坛、技术社区、交流群)
3) 猎头(仅限于高端人才)
4) 实习
3.如何编写或者优化自己的简历
我们来看下,在写简历时,经常会遇到哪些令人头疼的问题:
1) 没有实践经验(应届生)
2) 不确定哪些信息该写哪些不该写
3) 不知道如何在简历上展现自己的优势
4) 不知道如何编写项目经验一栏
5) 为了高大上写上了自己不熟悉的技术名词
三、简历编写与优化
我们以一位大数据开发工程师的求职者简历,来具体看下优化前后的对比:
优化前:
体现的问题:
1) 简历很简短,没有具体事项;
2) 照片应当用个人纯背景证件照;
3) 个人信息有遗漏项且有不必要项;
遗漏项:求职意向、个人状态、工作年限;
不必要:政治面貌、出生年月、民族、地址;
4) 工作经验的描述太短、太宽泛;
5) 自我评价并没有什么意义;
6) 教育背景太细,很多无意义的信息;
7) 没有就职的岗位信息;
8) 工作经验没有具体量化的数据体现;
简历编写原则
1) 写别人关注的信息;
2) 照片应当用个人纯背景证件照;
3) 工作经验要用数字量化体现;
4) 工作经验描述要具体;
5) 名校毕业,校名靠前放,反之靠后;
6) 有价值的项目或者奖项靠前放;
7) 博文和开源仓库靠前放;
8) 简历不止给人力资源看,还给技术看;
优化后:
四、 如何为自己的面试做准备?
1.我应该看哪些资料?
1) 根据领域必备知识
2) 根据招聘要求
3) 计算机基础知识
4) 别人的面试经验
下面以【爬虫工程师】这个岗位为例,详细说明一下面试时可能问到的问题。
1) 编程语言的熟悉度:你说说 Python 的垃圾回收机制、装饰器
2) 算法和数据结构:请你写出链表反转、请你写出归并排序
3) 计算机基础知识: HTTP KeepAlive 代表什么
4) 计算机基础知识:描述一下 TCP 握手过程
5) 工作经验和知识覆盖面:假如有数据丢失,你应该如何排查
6) 岗位特定要求:根据条件设计一款分布式应用,你会怎么设计
7) 岗位特定要求:APP 逆向当中遇到自定义协议应该如何处理
8) 岗位特定要求:说说你会的几种 hook 技术
9) 简历上提到的:我看你提到你监控过请求信息,监控的目的是什么
10) 连环炮问题示例:监控具体怎么实施?怎么知道监控哪些项?
11) 连环炮问题示例:为什么监控的是请求数,但耗时却不监控?
12) 连环炮问题示例:监控到的数据一般哪些部门会用?怎么用?
13) 连环炮问题示例:你选择哪款监控软件?为什么不选其他的?
通过阅读别人的面试经验可以推测这个岗位的面试难度、面试节奏、面试偏好和关注点,进而补充自己的知识。
2.我该为交流做哪些准备?
1) 一段约 100 字的开局介绍和一段约 100 字的离职原因;
2) 面对人力资源:几个关于岗位和公司整体情况的问题;
3) 面对技术:几个关于工作氛围、加班情况、团队组成的问题。
以本人的情况作为简短示例
你好,我叫韦世东,是一名Python开发者。
我有3年的Python开发经验和一年的Golang开发经验,平时主要的工作方向是爬虫,但也会用Go写一些服务。另外,我在反爬虫和深度学习方面有一些研究,能够独立解决Js逆向方面的问题。”
这次来应聘贵司的爬虫工程师岗位,希望有机会加入团队。
我在上一家公司工作了2年,在那边的主要工作是业务代码的编写,偶尔有一些难度比较高的任务。我自己学习能力强,学东西也比较快,想让自己的能力更上一个等级。出来前和领导交流过,感觉继续呆在公司已经没有合适的进步空间,所以就想着换工作了。
我会咨询HR和业务主管的问题
我面试的这个岗位有几位同事?
公司对我们小组这边的期望是什么?例如需要小组承担所有数据源?
小组这边的人员搭配是怎么样的?高级工程师和初、中级工程师有几个?小组在公司或者在部门内的定位是什么?重要程度如何?
假如加入团队的话,日常主要是负责哪些工作?
一些技术难点有比较强的同事解决吗?如果没有,那怎么办?咱这边平时上下班节奏怎么样,加班多吗?
咱这边获取到数据之后,通常是给哪些小组的同事使用?存到数据库还是消息队列?如果表现突出,有升职的空间吗?
五、 我与面试官的正面交锋
1.如何面对面试官的连环问题?
1) 连环问题是一定会有的;
2) 在准备阶段假设几种连环问题,通过问题反推自己要突击的知识;
3) 不熟悉的知识尽量不要写在简历上,例如分布式;
4) 不会的问题可以说“这个我也没有深入去了解过”,但如果你有其他思路,你可以提出来“但我觉得可以这样”;
5) 如果答不上,赶紧用笔记下来。
Q—面试官提问丨NA-不恰当的回答丨OA-恰当的回答
Q:我看你在简历里写用过消息队列设计分布式爬虫?NA:对
OA:对的,之前有考虑过用Redis,后来经过小组评估,改成了消息队列;
Q:为什么不用Redis?你们评估的时候主要考虑哪些因素?NA:我也不太清楚,领导说选这个;
OA:这是我们的业务特性决定的,我们需要将同一份数据给多个下游使用,例如编辑组、数据分析组、深度学习组,消息队列的Work模式很适合这样的场景,而Redis要满足需求就很麻烦;
Q:消息队列数据丢失的问题你们怎么处理的?
NA:我记得消息队列都有重传机制,那个就能解决;
DA:一般会在几个地方丢数据,例如消息生产时、消息存储时、消息消费时,消息生产时的丢失可以借助重传手段解决、消息存储时的丢失可以借助消息队列提供的多点同步策略解决、消息消费时的丢失可以在消费成功后手动确认,改掉默认的自动确认;
Q:消息队列多点同步策略有哪些?是怎么样的过程?NA:有All, Once之类的具体过程不知道;
DA:消息队列提供的多点同步策略一般有All. Once之类的,另外还有两个忘记了,同步过程我也没有深入去了解过,但我觉得比较稳妥应该是借用分布式领域的“大多数”原则来确保消息存储到集群中,然后由内置的同步算法同步到全部节点
Q:消息队列的去重应该怎么做?
NA:呃,通过Redis这些软件进行去重,然后只要经过Redis的都是不重复的; (牵强地联想)OA:这个我没有接触过,不知道怎么回答. (用笔记下来)
2.反问时刻,展现你的才智
1) 什么不该问?
和公司或者工作无关的问题,例如“听说上次公司出了个漏洞,影响很大啊!
让别人很难回答的问题,例如“哎,我看新闻说副总裁有花边新闻,这是什么情况?”
难度较高的技术问题,例如“我上次看一篇论文,说可以用深度学习辅助文本的提取,你有研究吗? ”人事变动问题,例如“我听你们公司同事说大领导准备换,你知道会换谁吗?”
2) 该问什么?
和工作相关的问题,例如“这边在取得数据后是不是还要做一些预处理才会交给下游?”
技术相关的问题,例如“你们用Logstash同步数据,有没有尝试过Filebeat?如果好用的话可以切换吗? ”行政相关的问题,例如“能说一下加班情况吗?弹性上下班还是固定时间打卡?”
3) 你的连环问题?
当时他问你,但你答不上的问题,顺着这个话题横向或者纵向延伸,例如“消息队列的去重该怎么做? 、“一般是选择RabbitMQ还是Kafka呢? ",但要注意,最多连环3个;
六、人事手上那张神秘清单写了啥?
1) 说说你近五年的工作规划?
2) 你结婚了吗?家人跟你一起在这边还是?
3) 你上一份工作为什么离职?
4) 如果这边的工资比你上一份少一些,你能接受吗?
5) 如果面试通过,你大概多久能到岗?
前面四个问题都是旁敲侧击的试探你的稳定性;后面一个问题可能是常规问题,也可能是有分数相当的候选人。
决定你能否进入下一轮的评分表
1) 评分表是为了量化面试结果,为后续的筛选提供决策基础;
2) 评分表是为了更好地观察应聘者的属性;
3) 评分表是面试生命周期的物理体现;
4) 每个面试官负责填写对应自己的一部分;
七、如何选择心仪的 Offer
1) 看谁给到手的现金最多?
2) 看谁给的现金+股票更有竞争力?
3) 看工作环境和研究方向?
- 点赞
- 收藏
- 关注作者
评论(0)