开发十六年,面试过无数候选者,Java架构师总结出面试三个重要阶段
面试分为三个重要的阶段:
- 面试前准备
- 面试中表现
- 面试后复盘
做好这三个阶段的准备,相信一定会有很大的收获。下面来分别看看这三个阶段需要准备哪些内容。
面试前准备
1. 研究待面试的公司
所谓知己知彼方能百战不殆,对待面试同样如此,企业希望招聘的人能够直接上手工作,因此会招聘那些和他们技术栈和业务方向相同或相似的应聘者。
了解了这个信息,会为我们的面试提高成功几率,那怎么才能获得这些信息呢?
获取企业的业务方向很简单,一般体现在招聘的岗位职责上,或者搜索一下就知道了;而获取招聘方的技术栈通常来说是比较困难的。以下是老王准备的一些经验,仅供参考:
- 通过自己的关系资源,找到招聘方内部的技术人员直接询问,自己的关系资源包括直接关系和间接关系(朋友的朋友的朋友),比较常用的方式是发朋友圈求助;
- 加技术群,技术群里面人员众多,可以在群里发言寻找,如果一个群没有,那就多加几个群继续问;
- 通过脉脉直接找到该公司的技术人员,留言或者直接加好友询问;
- 通过论坛的内推贴,一般发内推贴的除了 HR 就是部门的技术人员,通过这种方式联系到技术人员的几率还是挺大的。
以上的方式,面试者可根据情况使用一种或多种方式来获取自己想要的信息。
2. 打造完美的简历
除了研究应聘的企业以外,我们还要把研究的成果落实在简历上,这才是我们的真正目的。以下是准备简历时,需要注意的 8 个事项。
- 简历要整洁美观、基础信息要全面,如联系方式、从业 / 学历 / 项目经验等。
- 技术不要太庞杂,比如应聘的是 Java 岗位,没必要过多的对 Python、C++ 等非 Java 技术栈的经验做过多的描述,因为对于大多数技术岗位来说,面试时要求的是技术深度而不是技术广度,架构师或研发总监职位就另当别论了。
- 提升应聘企业所要求使用的技术栈权重,比如某招聘企业非常重视 Spring Boot 技术的应用,面试者就应该把 该技术的掌握情况提升到简历的重要位置,让 HR 和面试技术官能够很容易地看到。
- 提前准备相关知识点更深层次的技术问题,比如在简历中写了「熟悉多线程」,那面试官就有可能从多线程问到 synchronized,再从 synchronized 问到锁优化的原理等,因此需要提前准备简历中相关知识点更深层次的技术问题。
- 项目经验向招聘企业靠拢,也就是说我们写的项目要尽量与招聘的企业业务方向相吻合,当然我们也不鼓励应聘者伪造项目经历的做法,这种做法如果被揭穿其后果是致命的,这里是建议面试者在写项目经验时尽量与招聘的企业业务方向相吻合。
- 项目经验的描述要符合 STAR 法则,该法则指的是:情境(Situation)、任务(Task)、行动(Action)、结果(Result), 可以帮助面试者更精准地把项目内容描述清楚。
- 增加更多技术加分元素,如个人技术博客、GitHub 主页、优质的论文等都属于此类加分元素。
- 简历中最重要的一点就是:不要作假,大公司都有背景调查这一项,不要小瞧他们的调查能力,比你想象的还要细致。因此如果简历中有造假成分,则有 99% 的概率是会被发现的,这样,即使技术再好也不会被录用。以阿里举个例子,其内部有一个黑名单系统,如果进入了这个黑名单系统之后,阿里系的所有企业,这辈子恐怕是进不去了。
以上就是制作简历时需要注意的 8 个事项,希望面试者都能熟练掌握。
面试中表现
1. 注意着装
人靠衣装马靠鞍,杨澜也说过“没有人有义务必须透过连你自己都毫不在意的邋遢外表去发现你优秀的内在”。因此即使你能力再好,也要尽量注意一下自己的形象,男士的话尽量着正装参见面试,一来显得你比较重视,二来是对招聘企业的一种尊重。
2. 注意礼仪
人都喜欢和优秀的、有素养的人交往,因此在面试中也要注意一些礼仪,这是除技术以外的一个会直接影响面试官决策的重要指标。
3. 准备自我介绍
在短短几分钟的自我介绍中,想要给面试官留下深刻的印象,一定要包含以下几点内容。
- 描述你的技能优势:把你掌握最擅长的技术点充分地展示出来。
- 描述你的性格优势:如抗压能力强、做事不抱怨等。
- 描述你的擅长项:例如,善于思考、做事喜欢刨根问底弄清事情的原理、学习新技术快、上手能力强等。
- 介绍你的成就和贡献,比如给阿帕奇贡献了几行宝贵的代码,修复了某个框架的几个小 bug 等,都是可以瞬间展示能力的重要指标,当然学校的成就和贡献也是可以的。
4. 保持足够自信
自信可以让你在面试中正常发挥,也能让面试官更加信任你的能力,其实对待任何一件事情都是如此,只有你自己足够自信,才有可能说服别人相信你。
5. 保持热情和正念
有些公司的面试流程可能很长,例如,先 HR 面试,后面有好几轮的技术面试;或者在面试之前先填一大堆的登记信息,还有冗长的手写笔试题……这些想想就让人心烦。但越是这个时候,越要保持热情和正念,反正来都来了,既然付出了时间成本和交通成本,就把每一次的困难当做一次历练,正反都要付出相同的时间成本,还不如把自己可以掌控的事情做得更好一些。
6. Java 必须掌握的技术知识
掌握必须的 Java 知识是赢得面试的基础,以下是必备的 Java 技术点:
- 集合
- 数据结构和算法
- 链表
- 队列
- 阻塞队列
- 双端队列
- 延迟队列
- 优先级队列
- 哈希
- 优点
- 如何解决哈希冲突
- 树结构
- 多线程
- 线程安全
- 六种线程池
- 本地线程池
- 各种锁
- 死锁
- synchronized
- Lock
- CAS
- 解决 ABA
- 乐观锁 / 悲观锁 / 自旋锁 / 独占锁 / 公平锁......
- 反射 / 动态代理
- JDK 动态代理
- CGLIB
- 框架
- SSM
- Spring
- Spring MVC
- MyBatis
- Spring Boot
- 数据和缓存
- MySQL
- 常用引擎
- InnoDB
- MyISAM
- 存储结构
- B+ 树
- 黑红树
- 二叉树
- 索引
- 事务 / 事务隔离性
- 视图
- 锁
- 全局锁
- 表锁
- 行锁
- 死锁
- 日志
- redo log
- binlog
- 优化
- 慢查询分析方案
- 优化原则
- 最左匹配原则
- 避免回表查询
- 避免运算
- 优化索引
- ……
- 误删恢复
- 高可用
- 分片
- 客户端
- Sharding-JDBC
- 阿里 TDDL
- 中间件
- MyCat
- 网易 DDB
- 主从分离
- Redis
- Java 虚拟机(JVM)
- 内存结构
- 垃圾回收算法
- 计数器法
- 可达性分析算法
- 分代算法
- 各种垃圾回收器
- 分布式
- 消息队列
- RabbitMQ
- Kafka
- Dubbo
- Zookeeper
- 设计模式
- 算法
下图是为面试点整理的一个脑图:
7. 为重要的问题准备答案
以下几个问题是面试环节必问的,我们应该提前为这些问题准备好自己的答案。重要的面试题如下。
- 为什么要离职?这个时候不要抱怨上家公司的不好,因为没有人喜欢和背后议论别人的人做朋友,你今天说上家公司不好,明天就有可能会抱怨我们公司不好,企业也不关心你之前的公司是什么情况,而是要搞明白你离职的原因,如果只是抱怨,那你就“太年轻了”。你应该阐述自身问题,比如,可以从上班太远、路上交通成本太高等方面入手来回答这个问题。
- 如何看待加班?这个问题需要表达两个观点:一是公司需要加班,义不容辞;二是尽量提高工作效率,避免加班。
- 遇到最难的问题是什么?如何解决的?这个问题考察的是你技术的深度以及解决问题的思路和方法,应聘者根据自身的情况,提前准备即可。
- 最近看什么书?平常的学习方式有哪些?这个问题考察的是你对学习的态度和兴趣,直接关系到你以后的进步速度,毕竟每个人最大的区别就是如何对待业余时间。
- 还有什么问题要问我吗?这是出于礼貌性的问题,但你可以借此问题来传递你的上进心和忠诚度,比如你可以问以下几个问题:
- 公司会不会提供培训?(体现上进心)
- 公司的晋升制度是怎么样的?(自我发展和忠诚度的体现,表明我是打算以后一直在你们公司干的)
- 公司计划安排我做什么工作?我可以提前准备什么工作?(体现上进心)
8. 添加联系方式
面试的最后,如果可能一定要主动添加面试官的联系方式,如微信,它的好处如下:
- 可以第一时间获得录用动态
- 通过你的朋友圈和动态可以让面试官更好得了解你
- 可以和面试官建立更近的关系,为以后的发展提供更多的机会
面试后的复盘,对于你的成长有着至关重要的作用,也能避免你在一个坑里跌倒两次,面试后主要复盘的内容有两项:
- 技术点查漏补缺
- 面试过程中的表现复盘优化
面试准备:--有备无患
在这边也为很多小伙伴准备了一整套面试资料
由于头条篇幅有限,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术
我已经整理出来一份PDF文档,有需要的
麻烦一键三连之后看下图种小助理的微信:(vip1024x)添加即可免费获取到哦
spring 原理
Java基础
微服务
Zookeeper
MongoDB
面试题:
我已经整理出来一份PDF文档,有需要的
麻烦一键三连之后看下图种小助理的微信:(vip1024x)添加即可免费获取到哦