面试总结-2023版

本文受众主要为,互联网技术研发人员。

技术面试一般三面和HRBP面不太会卡人,主要都是停在了一面和二面上。我这次换工作前期主要是一面通过率比较低,后面主要是二面通过低。

总结影响面试通过的几点因素:

  1. 是否真的招人(招几个人)
  2. 业务匹配度(谁都想招个有经验的)
  3. 面试得分(择优录取)

此外,面试有的时候真的很看眼缘,看缘分,所以心态放平和,多面试,多总结,总会有offer的。

面试流程

一面

  1. 自我介绍(1-5分钟)
    了解过往工作经历,对候选人初步了解。

  2. 聊一下项目(20分钟)
    1、 项目的整体介绍,所负责的内容,承担的角色
    2、根据简历内容进行提问,挖掘候选人优秀的一面
    3、有哪些挑战与困难,如何解决的。
    4、做完这个项目在哪方面有提高,收获了什么。是否有不足的地方,是否有改进计划

  3. 基础知识(10-15分钟)
    常见面试题汇总(持续更新)

  4. 算法(20分钟)
    控制在20分钟左右,不出hard级别的,主要考察思维能力、代码整洁度、代码的时间复杂度、空间复杂度=

  5. 设计题(3-5分钟)
    2年以内,可以出简单的一些设计题,
    3-10年的可以出一些比较复杂的设计题,主要考察一下候选人的架构与设计能力。

  6. 问答环节(1-5分钟)
    询问候选人是否有问题,予以解答

二、三面

  1. 自我介绍(1-5分钟)
    了解过往工作经历,对候选人初步了解。

  2. 聊一下项目(40分钟)
    1、 项目的整体介绍,所负责的内容,承担的角色
    2、根据简历内容进行提问,挖掘候选人优秀的一面
    3、有哪些挑战与困难,如何解决的。
    4、做完这个项目在哪方面有提高,收获了什么。是否有不足的地方,是否有改进计划
    5、结合项目问一些技术原理性的问题,考察候选人技术深度。
    6、结合项目问一些业务标准解决方案,考察候选人技术广度。

  3. 问答环节(1-5分钟)
    询问候选人是否有问题,予以解答

HRBP面

  1. 自我介绍(1-5分钟)
    了解过往工作经历,对候选人初步了解。

  2. 综合问题(20分钟)
    从素质文化层面考察候选人,了解候选人是否适合团队,能否长期为公司服务等。

  3. 问答环节(1-5分钟)
    询问候选人是否有问题,予以解答

薪资沟通

todo

如何写简历

这部分我推荐一篇阮一峰的文章给大家

我这里简单给大家总结一下,有需要的人去看具体的文章内容。

  • 以项目为主体,设计你的简历
  • 针对企业的需要,突出你的技能
  • 项目的三要素(项目 = 产品 + 技术 + 结果)
  • 化你的项目,给出数字

推荐一个制作简历的网站:

自我介绍

3分钟左右

模版:打招呼+基本信息+工作经历+工作成果+个人优势+表达期望+谢谢

  1. 基本信息:姓名+毕业年份+毕业学校+专业
  2. 工作经历:不要罗列!把和JD更契合的放前面重点说明。和JD关系不大但是是之前工作重点简单提一下,和JD无关的不说,HR也不太想知道。
  3. 工作成功:重点说明自己在以往工作中做出的贡献,取得的成绩或成果。
  4. 个人优势:挑1-2个关键词,最好是JD中有提及过的,说明自己的优势。
  5. 表达期望:自己更该岗位的匹配度,以及希望可以通过面试一起共事。

项目介绍

在面试时,经过寒暄后,一般面试官会让介绍项目经验,常见的问法是:“说下你最近的(或最拿得出手的)一个项目”。

在面试前准备项目介绍,别害怕,因为面试官什么都不知道

面试官是人,不是神,拿到你的简历的时候,是没法核实你的项目细节的。

更何况,你做的项目是以月为单位算的,而面试官最多用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上对技术要求,有针对性的去准备。

技术问题

这部分后续我会做两方面的总结:

  1. 技术核心原理
  2. 面试高频问题及答案

先简单列一下这里的知识框架

编程语言

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面

  • 想了解下公司的员工培养机制是怎么样的?以及是否有导师之类的
  • 公司薪资构成是怎么样的?
  • 公司晋升的周期
  • 试用期是多久?转正考核标准是什么?
  • 团队的工作氛围和领导风格是怎么样的?