面试准备的时候,你是否总觉得花费的时间过长?又或者有些面试题你明明了解过,但是面试的时候,给出的答案总是不那么令人满意。甚至,每次刷完面试题,你觉得答得很好,但是总也没得到 Offer。
其实说白了,出现这些问题,很可能是因为你面试准备的时候,踩了一些坑却不自知。
现在,作为一名资深面试官,我今天就和大家说说面试准备中 5 个最常见的坑。
“岗位职责”和“岗位要求”是我们在看招聘职位的时候,经常见到的两个信息。不同的招聘平台叫法不一样,有的叫“工作内容”、“任职要求”等等。
在准备面试的时候,很多朋友从来不去仔细分析招聘 APP 和网站上想应聘岗位的岗位职责和岗位要求的内容 。
但是,岗位职责和岗位要求对咱们的面试准备是非常重要的。
岗位职责告诉了我们面试准备需要的知识维度,岗位要求则告知了我们面试准备的知识主线。这种维度与线条的结合,就形成了我们面试准备内容需要的大纲。
如果不去看岗位职责和岗位要求的内容,没有形成精准的面试纲要,很可能会造成面试准备茫无目的,白白耗费很多时间成本。
比如,你想要面试高级 Java 开发。它的岗位职责:
1、负责xx系统的设计与开发工作。
2、解决大数据量不断激增,海量服务调用面临的压力,助力业务飞速发展。
3、对系统高可用性、高并发能力、高扩展性解决方案的制定、跟踪、落地。
它的岗位要求:
1、具备扎实的Java基础,熟悉常用数据结构、JVM基本原理、并发编程等;
2、熟悉常用的中间件,如Dubbo、消息队列、流程引擎、规则引擎;
3、熟悉常用设计模式,掌握Spring、SpringBoot、MyBatis、SpirngMVC、Dubbo、VUE等技术;
4、熟悉Mysql,对事务,分库分表,性能优化等数据库的基本技能;
5、熟悉Tomcat、Jetty、Nginx等服务器配置使用;
6、熟悉多种远程通讯协议,熟悉消息中间件、缓存等技术;
7、做事积极主动,具有高度的责任感与团队合作精神,有良好的沟通能力;
那么我们就可以借此形成一个自己的大纲:
你看,这样是不是一下子就得到了我们需要准备的内容大纲了?
如果没有这个大纲,你可能什么都要关心,什么都要考虑学习。比如,跑去学这个岗位没必要的 ElasticSearch,跑去学没必要的 Mysql MyISAM 原理等,都是很难很耗费精力的东西。
因此,只有构造出我们需要准备的面试大纲,我们才能有的放矢的准备面试。
前面咱们说了,可以根据岗位职责和要求去制定面试准备大纲。可是,在准备了大纲之后呢,又会有人不小心踏进一个新的陷阱——把面试准备当成了技术学习。
什么意思呢?假设,咱们现在有个知识主线是需要学习消息队列的高可用的。好,有了这个知识主线后,我们就需要选择一个消息队列去针对性学习,比如选的是 Kafka。
关于 Kafka 的高可用知识点非常多。其中,在 Kafka 的 Consumer 的性质中,有一个 Rebalance 特性是最容易被考到的。那么,为了应对面试,咱们自然是要查找资料,去了解和学习这个 Rebalance 特性。
问题来了,对这个 Rebalance 特性要学到什么程度呢?
当然是根据应聘的职位而定。
如果你应聘的是高级开发,咱们只需要了解到 Rebalance 是在什么情况下会发生,Rebalance 的发生会引发一些什么问题即可。
如果你是应聘的架构师,那么就需要更深入的学习 Rebalance 特性相关细节,比如 Consumer Coordinator 具体的分配机制等问题。
所以,面试准备和技术学习不一样,一定要根据咱们应聘的职位目标来准备。目标不一样,学习的深入程度不一样。不能像技术学习那样,不管不顾的去挖机制、抠细节,平白无故浪费咱们宝贵的时间和精力。
面试准备里,最常见的一个错误就是:在看面试题时,直接就是背答案。
这招在前几年还可以,但是在最近几年,互联网行业内卷如此严重的时代,已经不保险了。因为问的方法已经变化了,要求的答案也变化了。
比如,以前经常有人会问:Redis 的优缺点各是什么?
现在已经变成:你们会在项目中什么地方用到 Redis ,为什么?
大家可以看到了,本质上,其实都是在问你 Redis 的优缺点。但是,一个只是需要找一些资料,把优缺点背下来回答就行;另一个就要结合到实际场景、实际项目,才能很好的回答出问题。
像上面问的,为什么会在项目中用到 Redis,你在面试准备的时候,就一定要把 Redis 适合缓存的优点和实际项目结合起来形成自己的答案。
比如结合电商系统里的购物车场景来回答一下。
购物车有什么特点?其最大的特点就是操作频繁。因为用户购物的时候,购物车往往会随意添加删除商品,也会经常浏览购物车中的商品。
其次,购物车还需要持久化,因为很多人拿购物车当一个临时存放处,存放他们想买又暂时不会购买的商品。
所以,购物车在技术上,就表现为两个特点:
如果用数据库做持久化呢?往往支撑不了购物车这个量级的读写请求,如果用临时缓存呢,又没法保证不丢数据。
所以,我们此时就引入了 Redis 。Redis 的优点是什么?咱们看看传统的答案:
这其中,1 到 4 的特点正是我们在购物车需要的技术特点,所以,用 Redis 是物尽其用,正当其时。
好,回到我们问的“你们为什么会在项目中用到 Redis”这个问题上,我们可以这样回答:
我们做了一套电商系统,其中有个购物车业务,既需要高并发的读写,又需要持久化数据。而 Redis 的特点是 balabala……(列举出上面讲的特点)
这样的回答,我想任何面试官,应该也挑不出毛病来。
但是,如果你在面试准备的时候没有结合实际场景,你就不太可能回答出这种能把业务特点和 Redis 相关优点结合的答案来。
所以,如今的面试学习,大家一定要用答案去结合场景,形成自己的回答,只有这样才能卷过别人。
有些朋友在面试准备时,往往忘记回顾和总结自己在项目中的职责和贡献。这种疏忽,可能会让你在和面试官讨论自己的真实项目经历时,沟通的不那么顺畅与准确,从而影响面试的结果。
这种负面的影响,完全可以通过提前的小小准备,就能被我们排除掉的。为此,我们又何乐而不为呢?
在回顾总结自己的职责贡献时,我们需要照顾到以下几点:
1. 自己对项目业务的深刻理解
需要知道,大部分公司是很重视程序员对业务的理解程度的。因为在业务驱动的项目里,经验所示,往往一个程序员对业务理解的越深刻全面,那么他在技术落地时就越稳定可靠。
所以,咱们一定要给面试官展现出我们对业务的深刻理解。
2. 自己对项目的技术特点的总结
无论是面试还是在实际工作里,一位主观能动性强的同事,是极其受欢迎的。
比如在面试的时候,虽然你只负责 XX 系统其中的某些功能,但是你却能说出:
我做过的 XX 系统技术特点是:安全性要求极高,事务关联紧密,可扩展性被放在极为重要的地位……
这种回答,妥妥的表现出了你在全面且主动地去学习和了解你参与的项目,并且对项目的技术特点有过自己的理解和总结。
3. 自己对项目中技术问题的反思
在面试中,有一类问题是常常会被问到的:
你在项目中遇到过哪些技术问题?你是怎么解决的?
像这类问题,面试官目的是想看看你对做过的项目里,曾经用到的技术是否理解到位了。同时,还能判断出来你项目经历的真实性。
比如,你在支付项目,转账的高吞吐量是如何解决的?热点账户如何解决?
像这些问题,如果回答不好,很影响面试官对你的真实水平的评估,要是认为你的简历有些造假的成分,那就非常麻烦了。
所以,咱们面试准备时,要考虑到在我们负责的项目里,一定会有一些技术难题,业务难题曾经困扰过我们,我们需要把他们挖掘出来,找到解决方案,然后放到我们的面试准备内容里,以便后面和面试官交流探讨。
我们面试,总是有些心仪的公司想要去的。但是,不少人会在准备完面试之后,直接就投简历到了他心仪的公司,然后就去这家公司进行面试了。却从没有想过先找几家不那么心仪的公司面试练一下手。
刚面试准备完就去心仪公司面试,经常会凉凉。
凉的主要原因就是:好久没面试了,情绪紧张导致会的答不出来;一些随便应变的技巧还没掌握好;面试实战少,回答问题啰里啰嗦描述不清……
解决这些问题也没什么好办法,就是要练。
所以建议不要上来就去心仪公司直接面试,先去找非大厂、面试没那么难的公司练练手。
这些公司的面试实战,既可以让我们逐渐适应面试的氛围和节奏,也能通过实战检验我们的面试准备是否充分,还能通过实战掌握好那些沟通和应变技巧。
等练的差不多了,甚至是能拿到几个 Offer 了,再去心仪公司去面试,这样成功率就能高很多。
以上,就是面试准备中大家最容易踏入的五个坑。
很多时候,并不是咱们水平不够,也不是咱们没去好好准备,只是还没找到一套方法。如果是因为这些而没有拿到满意的 Offer,那就太可惜了。
所以,我总结了以上经验分享给大家,希望对大家有点帮助。
你好,我是四猿外。
一家上市公司的技术总监,管理的技术团队一百余人。
我从一名非计算机专业的毕业生,转行到程序员,一路打拼,一路成长。
我会把自己的成长故事写成文章,把枯燥的技术文章写成故事。
欢迎关注我的公众号,关注后可以领取高并发、算法学习资料。