0,我的秋招心得我的基本情况,南方普通985普通同学,接触前端十来年左右月,今年8月后开始正式秋招准备工作。说起我的秋招,一个字就是“逆袭”。一开始,华为笔试不及格,三七互娱笔试不及格。被捡起来后,它又失败了,信心受挫。中途没有继续投递,而是静下心来准备,刷了无数面试题。身边的同学陆续拿到offer,也比较纠结。10月底,秋招结束,我投了四五家网申还没截止的公司。没想到一路过关斩将,最终成功登陆字节跳动,结束秋招。在准备面试和参加面试的过程中,总结了一些个人的经验,并进行了整理。希望对准备面试的人有所帮助,尤其是没有面试经验的人。这里不谈具体的面试题,而是一些通用的方法论。本文纯属个人观点,望读者自行判断。1.抛开面试,系统学习首先要系统学习前端的基础知识。对于前端来说,这些基础包括HTML、CSS、JavaScript、浏览器原理、网络协议、MVVM框架和一些必要的计算机基础等,你应该抛开面试的目的去学习这些知识,建立自己的知识体系,然后结合面试题,运用自己所掌握的知识,解决面试题。然而,很多人为了应对面试,基本功掌握得并不扎实,就盲目地在网上搜索各种面试经文,死记硬背甚至背诵各种面试题,本末倒置。这里推荐一些系统学习的途径和方法。MDNDocumentation:每个web开发者必备的,非常权威完整的web开发文档。作为学习词典使用,可以找到每个概念、方法、属性的详细解释,注意使用英文关键词进行搜索。一些HTML、CSS、HTTP技术教程也相当不错。HTML和CSS:建议结合MDN文档和W3school这两个在线教程来体验和玩转上面的例子。这部分没什么难度,主要是记忆和编码练习加深印象。JavaScript前端的亮点值得你花大部分时间学习。推荐通过书本学习,《 JavaScript 高级程序设计(第 4 版)》你值得拥有。全书内容质量上乘,特别是前十章语言基础。建议多读几遍。此外,我强烈推荐在线教程ModernJavaScriptTutorial。文章简单易懂。以上内容几乎都是重点,充分利用了网络教程的时效性和数据链接。学习资料不多,但两者结合,必将构建你的JavaScript知识体系。官方文档学习一些框架和工具,一定要充分利用官方文档,一般都有快速入门教程。由于这些版本更新很快,一些书籍和文章的部分内容已经不适用了。建议从官方文档入手,不懂的谷歌一下。博文把博客放在最后,因为不适合系统学习,更适合单点强化。这时候你应该有自己的知识框架,知道文章内容的知识点。前端开发者聚集的两个博客平台是掘金和segmentfault。2.注重基础,不要盲目学习框架。在准备面试的时候,我花了很多时间在JavaScript上。学习Vue的时候感觉很轻松,文档里面很多东西都能看懂。不要急于学习框架和工具,熟练地编写基本的HTML、CSS和JavaScript。使用原生技术编写一些基础的页面或者组件,框架和工具最终都是通过这三种基础技术来实现的。框架也是基于原生技术构建的,扎实的基础会让你学习框架畅通无阻。例如,Vue指令本质上是HTML元素特性;Vue2.x的响应式原理是JavaScript访问器属性的应用,而Vue3.0使用了新的ES6语法Proxy。如果你熟悉JavaScript,自然能理解Vue2.x在对象和数组上的响应缺陷以及Vue3.0的改进意义。一味的学习框架很容易陷入为了框架而框架的误区。只有通过繁琐的原生DOM操作,你才能理解为什么提倡少写,多做的jQuery风靡一时。只有通过一只手操作数据,另一只手操作视图的工作流程,你才能体会到MVVM数据驱动开发的强大。理解框架和工具的意义,不要因为别人用了这个技术,你就应该用,最后给项目增加不必要的复杂性。从面试官的角度来说,一个不熟悉框架的人,可能开发经验不多,而一个基础薄弱的人,很大程度上可能学不会。这种观点在校招尤其是大厂的校招中尤为突出,因为企业更注重学生的可培养性。3.精准出击,将面试题一一分解。面试的本质也是考试。想要取得优秀的面试成绩,刷面试题是很有必要的,除非你样样精通。在看面试题的时候,应该从面试题中找到考点,然后深入学习与考点相关的知识,不要陷入死记硬背的误区。毕竟题目是多变的,而考点却是相对固定的。听两边则明,听一边则暗。对于网上看到的各种面试题的答案,要思考是否正确可行,是否有改进的余地。大多数博客都不能完整、全面地总结知识点。所以,我会谷歌很多考点,结合多篇文章,然后总结出自己的答案。我把刷过的面试题整理成了一个PDF文档。有需要的朋友可以点此免费获取问题+解析PDF。分为HTML、css、JavaScript、React、Vue、浏览器、服务器和网络、算法等。等等……篇幅有限,只展示了部分内容。如果你需要这份完整版面试题+解析,就【点我】,免费分享给大家。4.面试是一种输出。很多人看了很多面试题,看了很多面经,知识储备充足。但是在面试的时候,即使是自己熟悉的考点,也很难让面试官满意。这样做的关键原因是学习是一种输入,而面试是一种输出。面试需要的不是你懂,而是让面试官知道你懂。一定要能够在考点上衔接要点,连贯地讲出来。但是很多人认为看了这样的文章,知道这一点就够了。其实,仅仅“知道”是不够的。这类问题从根本上说是技术点不够深入,不够熟悉,没有形成自己的理解。我也经历过这个过程,你知道这些概念,你可以区分它们,但是很难向别人解释。简单考个CSS题:什么是BFC?你一定知道它叫块级格式化上下文,问题是,这个东西怎么给面试官解释?要解决这个问题,首先,学习过程重在理解而不是记忆。第二,一个知识点需要通过多篇文章学习,反复学习,加深理解,总结自己的答案和观点。第三,刻意练习。如果你有伴侣,互相问问题。如果没有,您也可以自己提问和回答。5、注意表达逻辑。如果前面的点是正确回答问题的话,这个点可以更好的回答问题。逻辑清晰的回答能让面试官觉得眼前的这个年轻人不仅对这个问题很熟悉,而且语言和逻辑能力都非常出色。比如常见问题:说说var,let/const的区别。大多数人都能列出自己的不同点和注意点,但很难打动面试官。但是,如果加上几句相关的语句,效果就不一样了:var是ES5之前的变量声明方式,有很多容易被误解的缺陷,具体体现在:...(列举var的一些不足之处),针对这些问题,ES6提出了let/const变量声明方式,它有一些新的特点:...(列出let/const的特点)。这几个简单的联系使得整个答案从简单的一堆点变成了一个紧密相关的表达式。然而,这并不容易。前提是你要有良好的逻辑思维。既然你选择了这条线,相信你对此没有任何问题。在学习每个技术点的时候,一定要注意一些问题:它是什么?要解决什么问题?如何实现,有没有更深层次的原理?如何使用?使用时应该注意什么?有哪些应用场景?怎么了?这些缺点可以避免吗?这些问题可以让您更充分地理解各种问题之间的联系。应该指出的是,博客在这方面有很大帮助。即使你没有写过博客,也建议在备考时使用思维导图等工具,经常整理所学知识的联系。有些人可能像我一样在面试的时候会紧张,紧张的时候脑子里容易一片空白。我的方法是想象面试官是来问我问题的同学。不得不说,这个效果真的很好。(面试官说我比你懂,hh)6、扬长避短,但要努力争取每个应聘者必须熟悉的技能,不要让基础成为自己的短板。一个侧重于基础知识。其他的技能,深入学习其中的几个,然后想办法引导面试官去问这些方面的问题。最有效和常见的领导方式是简历。简历信息往往是面试官提问的依据,所以简历一定不要写你没接触过的技术。即使招聘信息有这个要求,如果面试官问起简历上的内容,发现你根本不知道,那么你的简历上面所有的技能点,面试官都会打上问号。对于你学习比较深入的方面,可以单点列出,比如你熟悉JavaScript,可以熟练操作DOM。尽管JavaScript包含DOM,但您仍然可以强调它。面试官往往会根据应聘者的回答来决定下一个问题,我们在面试回答中也可以以此为指导。这个方法在回答开放式问题的时候很有效,但是记得停下来,不要太深入主题。比如面试官问:对于一个已有的网站,你们的性能优化方案是什么?在你解释完性能改进建议后,在最后加上一句“除了性能,网站还可以在安全和SEO方面进行优化。”如果面试官对网络安全和SEO感兴趣,他就会上瘾。如果面试官抛出一个你略知一二但不熟悉的问题。不要惊慌,先想一想。综合你所知道的,做出一些合理的猜测。然后在回答的时候先说明自己不是很熟悉,但是在学习其他知识的时候接触过,简单说一下自己的理解和推断。很多面试官考虑到面试官的临场能力和迁移学习能力,会故意问一些稍微超出面试官能力范围的问题。万一,把面试官的问题弄清楚后,发现自己根本不知道,直接表态,把面试官的注意力转移到下一个问题上了。如果我呆的时间长了,可能会放大这个问题的影响。冷静对待接下来的问题,面试官不会因为一两个问题就淘汰一个各方面都很优秀的面试官。7、之后针对面试,说几句个人看法。面试毕竟是考试。正如我们一直批评应试教育脱离了教育的本质一样,为了面试而学习技术也脱离了技术的初衷。但考试选拔人才的有效性是毋庸置疑的,几千年来一直如此。除非你有实力向公司证明你足够优秀,否则,你还是要乖乖准备面试。这也不妨碍你在通过面试后按照自己的方式学习。其实在面试准备阶段,我收获很多,我也觉得这是一个很好的学习途径。首先,面试的问题大多是基础性的和深度性的,这些都是日常工作的基础。就好像我们以前不明白学习中文的意义,但它的意义就在日常会话中。所谓面试造火箭,工作变螺丝。面试往往有更高的要求,这也迫使我们更专心、更深入地学习一些知识,这并不是什么好事。
