关于准备面试,分享容易踩的三个坑

587 阅读9分钟

引言

Hi 你好,我是东东拿铁。

不知道你有没有过这样的的感觉:每天到了公司,想到今天要处理的重复且繁琐的工作,就感到心生厌倦,暗自下定决心,一定要好好学习准备面试,早点跳槽到更好的公司,争取升职加薪。

打开浏览器,选上一篇技术文章、大公司面经,又或者打开自己买过的一些技术课程,但这样的习惯坚持了很久,一想到面试却还是感觉有些心慌,总感觉自己学的还不够全面,技术不够深入。

然后日子就这样一天天过了下去。

和入职后未来的不确定性相比,其实面试是一个只要准备就有收获的东西。从这一点来说,和我们上学时期接受到的应试教育很相似。

学习的方法太多了,我自己也并不是一个学霸,就不在大家面前班门弄斧了,我想分享自己曾经遇到过的三个坑给大家,如有雷同,纯属巧合。

反复阅读源码,缺少有效反馈

很多人准备面试的第一时间就是先去看源码,我在工作前几年有一种先天的错觉,只要看的源码足够多,就能够证明自己技术的牛逼,我的有一部分同事也是这样。

从最早的HashMap到线程池 MQ,甚至有不少人去看Redis的源码,我自己曾陷入过这个陷阱,对照着很多网上的文章,去看源码。

网上很多源码解析可以说做的非常好,内容中会给你标注好重点,告诉你那些才是最核心的逻辑,甚至讲解的粒度都能到行级别。

但阅读源码这件事,是一个边际收益递减的事情。由于市场内卷情况的原因,有一段时间大家非常喜欢问源码,导致我们不得不去看一些知名框架的源码,但源码的价值在于他经过迭代证明了自己的可靠性,是迭代出来的,而不在于代码本身。

代码这个事情从来不是靠看靠背的,你看过的源码一定也很容易就会忘记。源码的思想确实值得借鉴,但反复去看源码不会让你的技术有很大提升,因为你缺乏反馈。

看源码必须要落实在具体问题角度,你在实际工作中遇到了什么具体场景下的问题,为什么在大流量高并发场景下,是什么样的设计让中间件可以很好的支持。

我记得高中的时候上早自习,语文老师会让我们站着背课文,谁先把课文背过谁就可以坐下,有一次让被的文章差不多有两千字,我那段时间正好在奋发图强,成为班里第一个坐下的人,可是我今天竟然想不起来我背的是什么东西,没错,别说具体内容了,背的是什么都忘了。

我没办法靠背语文课文提升成绩,毕竟填空题只会考古诗或者文言文。同样的, 你也没办法通过看源码就提升自己的技术水平,能力是实战中练出来的。

所以看源码而言,适可而止就好。

弄不明白基础概念

其实在理工科领域,尤其是技术领域,逻辑性强,我们接触到的技术、框架都是建立在基础概念上一点点演化来的,后面的内容都是建立在前面的基础上。

那我们很容易的就可以预料到,如果关键概念没有理解透,那么在学习知识的时候很多东西就听不懂,只能靠猜。

我还是举一个我自己的例子,前一段时间,我写了两篇分布式事务的文章,文章在下面你有时间可以点击查看。

之所以我会选择这个主题,是因为这一块是我的技能短板,主要原因是我之前的项目经验偏向于to C业务,更注重性能和高并发,而并非数据的一致性。

其实我不止一次的学习过Seata的内容,以往的习惯是直接打开一篇分布式事务高频面试题,就开始看。但是这么多年下来早已经忘的一干二净,毕竟从网上文章学习到的零散知识,又怎么可能记的深刻呢?

所以对我而言,分布式事务对我而言也是从0开始,那面对分布式事务这个主题,我是如何准备的呢?

我先重新复习了CAP、BASE原理,了解分布式事务的业务背景,了解了分布式事务场景下的2PC、3PC方案,调研了下Seata没有发布时的解决方案是什么,为什么Seata成为现在Java应用的主流方案。

然后才开始具体研究Seata的特点和功能,比如领域模型、内部流程,逐渐在深入到具体的细节。

这是一个逐渐把逻辑脉络搞清楚的过程,搞清楚逻辑脉络后,我感觉对这件事情有了整体的一个认识。

你必须从基础概念开始,而并非直接一头扎进应用、框架里。

突击准备

第三个就是突击准备,我作为一个资深学习混子来说,我可太习惯于突击准备考试了。

突击准备其实在面试过程中,我个人认为是有一定的适用场景的, 就是准备一个你从来没有接触过的知识。

比如某一项技术现在业内很常用,但是因为你公司的种种原因,你没有真正了解和使用过,比如如何部署、如何开发,相关的底层原理。为了保证简历上面技能的丰富性,你需要在短时间内补齐这一部分内容,那么突击准备非常有效。

但面试不可能只考一个知识点,既会问开发语言,也会问框架、中间件,还会问项目的一系列问题,这都是需要在工作过程中积累的,你很难通过短时间把所有内容准备的面面俱到。

这里有三个小技巧分享给大家。

测验

第一个是测验。

相信大家都经历过这样的场景,你慵懒的在座位上等着老师来上课,可当老师从门外走进来,你发现他的手里竟然拿着一沓子卷子,紧接着,便听到老师那熟悉又让人心头一紧的声音在教室里响起:"今天这节课我们考试。"

我特别讨厌的就是这种临时考试,毕竟谁会不喜欢舒舒服服的听课,不想听了还可以天马行空呢。卷子发到我手里前甚至会临时翻书看看那些自己还没有记住的内容,但这样做肯定是收效甚微。

其实多测验是提升成绩的很好的办法,不然我们习惯于利用搜索引擎解决难题,很多时候就不知道自己掌握的内容掌握的到底怎么样,或许你真的明白,但是一旦面试问起来就容易抓瞎。

其实我们现在已经完全不需要再担心这种场景,因为我们掌握了主动权,你应该也听过不少说法,因为我们可以随时随的投简历去面试。

场景练习

之前准备面试的时候,我也对场景题目的准备嗤之以鼻, 觉着如果是自己没有亲身经历的场景,我就算准备也是靠背,而且真的遇见比较专业的面试官,很容易就被问的漏洞百出。

但其实场景练习是一种能够调用你所储备的知识,提高学习效率的办法。

这个背后有一个理论叫做“认知负荷理论”,你突然接触到一个复杂问题让你去想思路去解决,比如你从来没有接触过秒杀项目,你根本不了解背后是如何解决的,如果你突然在工作中面临这个问题,那你一定无所适从。

你一边面临挑战,一边又学习新东西,认知带宽就会不够用。

那么最好的方式是什么,别想着挑战这个场景,自己设计一套完整的解决方案。而是找到这个场景下比较权威的课程、资料,把现有的方案研究清楚,哪怕是直接看答案,也比自己一点点研究收获要大。

最关键的是,很多场景下的底层解决方案是相通的,后面遇到类似的问题,你也可以很快的想到答案。

集中练习

虽然不建议大家在准备换工作之前进行突击准备,但是就像我刚才说的,如果你有某一个知识点是欠缺的,然而面试时发现大部分面试官都在问,那么你就要进行集中练习。

大量的集中训练,会让你有很强的获得感,这在面临新知识的时候尤其有用。

首先说明专项突击的学习并不是正确的学习路径,但是对于一项你从来没有接触过的技术,集中练习可以让你快速达到一个入门的水平。

我印象最深的就是之前换工作的时候,那时候面试普遍还在面八股文,我对消息队列一窍不通,虽然工作中一直在用,但是对于底层原理、设计思路都完全没有了解过。

然后我花了几天时间,什么都不看,只了解消息队列相关的知识,了解一些技术概念、应用场景、底层原理等,然后就感觉足以应对面试了。后续面试在问到相关问题的时候,大部分我都能答出来了。

说在最后

面试不是一次性的事,我们也不应该害怕面试,虽然面试是否成功需要有一定运气成分在里面,但你可以有更高效的方式去准备它。

不知道你是怎么准备面试的,有没有什么准备面试的经验和大家分享呢,欢迎你在评论区和大家交流,也希望你点赞、评论、收藏,这对我来说真的很重要。也欢迎你加我的wx:Ldhrlhy10,一起交流~

本篇文章是第62篇原创文章,2024目标进度62/100,欢迎围观。