本文受众主要为,互联网技术研发人员。
技术面试一般三面和HRBP面不太会卡人,主要都是停在了一面和二面上。我这次换工作前期主要是一面通过率比较低,后面主要是二面通过低。
总结影响面试通过的几点因素:
- 是否真的招人(招几个人)
- 业务匹配度(谁都想招个有经验的)
- 面试得分(择优录取)
此外,面试有的时候真的很看眼缘,看缘分,所以心态放平和,多面试,多总结,总会有offer的。
面试流程
一面
-
自我介绍(1-5分钟)
了解过往工作经历,对候选人初步了解。
-
聊一下项目(20分钟)
1、 项目的整体介绍,所负责的内容,承担的角色
2、根据简历内容进行提问,挖掘候选人优秀的一面
3、有哪些挑战与困难,如何解决的。
4、做完这个项目在哪方面有提高,收获了什么。是否有不足的地方,是否有改进计划
-
基础知识(10-15分钟)
常见面试题汇总(持续更新)
-
算法(20分钟)
控制在20分钟左右,不出hard级别的,主要考察思维能力、代码整洁度、代码的时间复杂度、空间复杂度=
-
设计题(3-5分钟)
2年以内,可以出简单的一些设计题,
3-10年的可以出一些比较复杂的设计题,主要考察一下候选人的架构与设计能力。
-
问答环节(1-5分钟)
询问候选人是否有问题,予以解答
二、三面
-
自我介绍(1-5分钟)
了解过往工作经历,对候选人初步了解。
-
聊一下项目(40分钟)
1、 项目的整体介绍,所负责的内容,承担的角色
2、根据简历内容进行提问,挖掘候选人优秀的一面
3、有哪些挑战与困难,如何解决的。
4、做完这个项目在哪方面有提高,收获了什么。是否有不足的地方,是否有改进计划
5、结合项目问一些技术原理性的问题,考察候选人技术深度。
6、结合项目问一些业务标准解决方案,考察候选人技术广度。
-
问答环节(1-5分钟)
询问候选人是否有问题,予以解答
HRBP面
-
自我介绍(1-5分钟)
了解过往工作经历,对候选人初步了解。
-
综合问题(20分钟)
从素质文化层面考察候选人,了解候选人是否适合团队,能否长期为公司服务等。
-
问答环节(1-5分钟)
询问候选人是否有问题,予以解答
薪资沟通
todo
如何写简历
这部分我推荐一篇阮一峰的文章给大家
我这里简单给大家总结一下,有需要的人去看具体的文章内容。
- 以项目为主体,设计你的简历
- 针对企业的需要,突出你的技能
- 项目的三要素(项目 = 产品 + 技术 + 结果)
- 化你的项目,给出数字
推荐一个制作简历的网站:
自我介绍
3分钟左右
模版:打招呼+基本信息+工作经历+工作成果+个人优势+表达期望+谢谢
- 基本信息:姓名+毕业年份+毕业学校+专业
- 工作经历:不要罗列!把和JD更契合的放前面重点说明。和JD关系不大但是是之前工作重点简单提一下,和JD无关的不说,HR也不太想知道。
- 工作成功:重点说明自己在以往工作中做出的贡献,取得的成绩或成果。
- 个人优势:挑1-2个关键词,最好是JD中有提及过的,说明自己的优势。
- 表达期望:自己更该岗位的匹配度,以及希望可以通过面试一起共事。
项目介绍
在面试时,经过寒暄后,一般面试官会让介绍项目经验,常见的问法是:"说下你最近的(或最拿得出手的)一个项目"。
在面试前准备项目介绍,别害怕,因为面试官什么都不知道
面试官是人,不是神,拿到你的简历的时候,是没法核实你的项目细节的。
更何况,你做的项目是以月为单位算的,而面试官最多用3分钟来从你的简历上了解你的项目经验,所以你对项目的熟悉程度要远远超过面试官,所以你一点也不用紧张。
如果你的工作经验比面试官还丰富的话,甚至还可以控制整个面试流程。
下面给出了你和面试官的情况对比:
你 | 面试官 | |
---|---|---|
对你以前的项目和技能 | 很了解 | 只能听你说,只能根据你说的内容做出判断 |
在面试过程中的职责 | 在很短的时间内防守成功即可 | 如果找不出漏洞,就只能算你以前做过 |
准备时间 | 面试前你有充足的时间准备 | 一般在面试前用3分钟阅读你的简历 |
沟通过程 | 你可以出错,但别出关键性的错误 | 不会太为难你,除非你太差 |
技巧 | 你有足够的技巧,也可以从网上找到足够多的面试题 | 其实就问些通用的有规律的问题 |
既然面试官无法了解你的底细,那么他们怎么来验证你的项目经验和技术?
下面总结了一些常用的提问方式:
提问方式 | 目的 |
---|---|
让你描述工作经验和项目(极有可能是最近的),看看你说的是否和简历上一致 | 看你是否真的做过这些项目 |
看你简历上项目里用到的技术,比如框架、数据库,然后针对这些技术提些基本问题 | 还是验证你是否做过项目,同时看你是否了解这些技术,为进一步提问做准备 |
针对某个项目,不断深入地问一些技术上的问题,或者从不同侧面问一些技术实现,看你前后回答里面是否有矛盾 | 深入核实你的项目细节 |
针对某技术,问些项目里一定会遇到的问题,比如候选人说做过数据库,那么就会问索引方面的问题 | 通过这类问题,核实候选人是否真的有过项目经验(或者还仅仅是学习经验) |
准备项目的各种细节,一旦被问倒了,就说明你没做过
一般来说,在面试前,大家应当准备项目描述的说辞,自信些,因为这部分你说了算,流利些,因为你经过充分准备后,可以知道你要说些什么。
不少人是拘泥于"项目里做了什么业务,以及代码实现的细节",这就相当于把后继提问权直接交给面试官。
下表列出了一些不好的回答方式:
回答方式 | 后果 |
---|---|
我在XX软件公司做了XX门户网站项目,这个项目做到了XX功能,具体是XX和XX模块,各模块做了XX功能,客户是XX,最后这个项目挣了XX钱 | 直接打断,因为业务需求我不需要了解,我会直接问他项目里的技术 |
(需要招聘一个Java后端开发,会Spring MVC)最近一个项目我是用C#(或其他非Java技术)实现的,实现了......或者我最近做的不是开发,而是测试......或者我最近的项目没有用到Spring MVC | 提问,你最近用到SSH技术的项目是什么时候,然后在评语上写:最近XX时间没接触过SSH |
在毕业设计的时候(或者在读书的时候,在学习的时候,在XX培训学校,在XX实训课程中),...... | 直接打断,提问你这个是否是商业项目,如果不是,你有没有其他的商业经验。如果没商业项目经验,除非是校招,否则就直接结束面试 |
描述项目时,一些关键要素(比如公司、时间、所用技术等)和简历上的不匹配 | 我们会深究这个不一致的情况,如果是简历造假,那么可能直接中断面试,如果真的是笔误,那么就需要提供合理的解释 |
在避免上述不好的回答的同时,大家可以按下表所给出的要素准备项目介绍。
要素 | 样式 |
---|---|
控制在1分钟里面,讲出项目基本情况,比如项目名称,背景,给哪个客户做,完成了基本的事情,做了多久,项目规模多大,用到哪些技术,数据库用什么,然后酌情简单说一下模块。重点突出背景,技术,数据库和其他和技术有关的信息。 | 我在XX公司做了XX外汇保证金交易平台,客户是XX银行,主要完成了挂盘,实盘成交,保证金杠杆成交等功能,数据库是Oracle,前台用到JS等技术,后台用到Java的SSH,几个人做了X个月。不需要详细描述各功能模块,不需要说太多和业务有关但和技术无关的。如果面试官感兴趣,等他问。 |
要主动说出你做了哪些事情,这部分的描述一定需要和你的技术背景一致。 | 我做了外汇实盘交易系统,挂单成交系统,XXX模块,做了X个月 |
描述你在项目里的角色 | 我主要是做了开发,但在开发前,我在项目经理的带领下参与了业务调研,数据库设计等工作,后期我参与了测试和部署工作。 |
可以描述用到的技术细节,特别是你用到的技术细节,这部分尤其要注意,你说出口的,一定要知道,因为面试官后面就根据这个问的。你如果做了5个模块,宁可只说你能熟练说上口的2个。 | 用到了Java里面的集合,JDBC,...等技术,用到了Spring MVC等框架,用技术连接数据库。 |
这部分你风险自己承担,如果可以,不露声色说出一些热门的要素,比如Linux,大数据,大访问压力等。但一旦你说了,面试官就会直接问细节。 | 这个系统里,部署在Linux上,每天要处理的数据量是XX,要求是在4小时,1G内存是的情况下处理完5千万条数据。平均访客是每分钟XXX。 |
线上问题
大家平时工作中一定要 把握住出现"线上问题"的机会。
因为,功能做了只是具备了项目经验,但是面试的时候真正"值钱"的其实是技术的难点与解决方案,而一般技术难点普遍伴随着"线上问题"。所以,平时工作中积极主动点,出现了线上问题不管是不是自己的都去查、去解决,事后围绕着"问题现象、问题分析、问题影响、解决方案、问题扩展"等去总结、记录到自己的笔记总,后续都是自己最宝贵的财富。
技术亮点
结合自己遇到过的线上问题,优先准备分布式组件方面的技术亮点,常用的分布式组件主要有 MySQL、Redis、RocketMQ/Kafka、ES等。
这部分内容可以参考JD上对技术要求,有针对性的去准备。
技术问题
这部分后续我会做两方面的总结:
- 技术核心原理
- 面试高频问题及答案
先简单列一下这里的知识框架
编程语言
Java
- Java 基础
- 概述
- 基础语法
- 面向对象
- 常用类
- 异常处理
- I/O
- 序列化
- 泛型
- 注解
- 反射
- JDK1.8新特性
- Java 集合
- 引言
- List
- Set
- Map
- Java 并发
- 基础
- ThreadLocal
- Java内存模型
- 锁
- 并发工具类
- 线程池
- JVM
- 引言
- 内存管理
- JVM调优
- 虚拟机执行
Spring
- 基础
- IOC
- AOP
- 事务
- MVC
- Spring Boot
- Spring Cloud
中间件
MySQL
- 基础
- 数据库架构
- 存储引擎
- 日志
- SQL 优化
- 索引
- 锁
- 事务
- 高可用/性能
- 运维
Redis
- 基础
- 持久化
- 高可用
- 缓存设计
- Redis运维
- Redis应用
- 底层结构
- 其他问题
RocketMQ/Kafka
- 基础
- 进阶
- 原理
ES
计算机基础
计算机网络
- 基础
- 网络综合
- HTTP
- TCP
- UDP
- IP
- 网络安全
操作系统
- 引论
- 操作系统结构
- 进程和线程
- 内存管理
- 文件
- IO
算法题
算法的话推荐大家最起码刷一下牛客网上的 《剑指offer》67题
答案的话大家可以在网上搜一下"牛客网《剑指Offer》66题题解",我本人参考的leetcode上的《画解剑指 Offer》不过这个要开会员,大家可以根据自己的需求进行选择。
之后要是还有时间和精力的话推荐大家再刷一下 牛客霸题,上面可以筛选企业和考察次数等
系统设计
todo
问答环节
一面
- 能给我简单介绍一下目前团队的主要业务吗?以及相应的人员情况?如果我后面有机会能加入进去大概会做哪个方向?
- 您认为在这里工作最大的挑战是什么?以及这个团队最吸引您的是什么?
二面
- 团队未来一段时间内的工作重心是什么?新人有机会接触到吗?
- 对于这个岗位您最看重应聘者什么核心能力?您认为这项工作最大的挑战是什么?如果有幸加入,我需要提前准备什么?
三面
- 您筛选人才一般最看重哪些能力?
- 您希望我最为一线员工在公司发挥出怎样的价值?
- 您对我个人提升上有哪些建议?
hr面
- 想了解下公司的员工培养机制是怎么样的?以及是否有导师之类的
- 公司薪资构成是怎么样的?
- 公司晋升的周期
- 试用期是多久?转正考核标准是什么?
- 团队的工作氛围和领导风格是怎么样的?