【面试前半部分的准备】从我决定找工作开始,我其实经历了一系列的思想斗争。我第一时间想到的是,在自己准备充分之后,再开始简历面试。然而,由于惯性,我发现自己很难判断自己什么时候已经完全准备好了。这次第一次面试,我当时的心态是抱着学习的态度,永远迈出第一步。也许当你降低期望值的时候,实际的面试过程可能就没有那么紧张和压力了。不自然,我当时的期望是通过面试找出自己的不足之处,了解市场真正的需求。我的目标很明确,就是通过大厂的面试。这次现场面试让我第一时间找到了自己的状态,决定全力准备面试。依稀记得当时我一共投资了7家公司。当时有四家公司(此时没有阿里和美团)有兴趣,想多了解我,商量后再约我。后来接到面试邀请电话的时候,才发现自己还需要多做一些准备。这里有一个经验:当你觉得自己需要多准备一点的时候,可以诚心约HR或者面试官。通常时间在1周左右,面试官一般都会看懂。可以说非常珍惜这次面试的机会,需要好好准备。然后,我为接下来的面试做了如下准备:1)阅读了《浏览器原理与工作实践》专栏里关于浏览器渲染原理等的内容2)当时和一些同学组织了一个leetcode刷机群,至少3个人每周-5题刷题速度。每周参与线上答题分享活动。测验活动持续约1-3个月。期间穿插访谈、总结、差距检查。基本上,以上的准备工作给了我面试前很大的信心。【Part2面试题】针对美团和阿里的具体面试题,我会按照“前端基础知识、前端框架底层原理、性能优化、计算机网络、算法、前端工程和项目经验”。大家总结一下:前端的基础知识主要是从HTMLCSSJavaScriptDOM、BOM这四个前端模块和ReactVue等前端框架准备的。CSS:可能会有1-2个问题。主要考察各种常见布局的实现,如纵横居中、双列布局、随窗口变化的方块、网格布局等,一般需要手写代码。这里推荐张新旭老师的《CSS世界》,看几遍足以应对面试。HTML:在我的采访中,我并没有问很多关于这个的问题。Winter老师之前有一道面试题,说到你常用的HTML标签,然后你可以从这道题中延伸出很多细节,进而考察你对HTML知识的掌握程度。JavaScript:研究JavaScript的细节最多,通常包括但不限于:1)JavaScript的基本类型2)setTimeout、Promise、async/await异步方案的区别?3)对于宏任务和微任务,通常会给出一段代码,让你给出输出并解释一下?4)解释JavaScript的单线程模型,以及为什么要这样设计?为什么setTimeout的延迟不能准确呢?5)手写实现Promise?6)原型链知识考察,形式是给一段代码,让你给出输出结果,并解释一下?7)说说你用过的ES6语法的功能点,ES2017-9的新功能点你有注意吗?8)解释JavaScript中的闭包?解释一下this指针指向的问题和改变this指针指向的点的常用函数?应用、绑定和调用之间有什么区别?9)JavaScript继承的几种方法和优缺点?10)实现节流或防抖代码?11)可以获取共享cookies吗?那么两者对应的是什么呢?12)手写代码实现红绿灯的效果,红灯3秒,绿灯1秒,黄灯2秒,重复循环?13)JavaScript是如何操作cookies的?DOMAPI:这方面很少有人问,印象中有几个:1)如何翻转DOM?冒泡和捕获机制的实际应用是什么?2)气泡和捕获机制,以及实际应用?前端框架底层原理我们以React为例,经常考察的有以下几点:1)setState的内部实现?2)什么是虚拟DOM,引入虚拟DOM的目的,虚拟DOM能不能解决性能问题?3)你对ReactHooks了解多少?4)reactredux的底层原理?异步请求是如何完成的?介绍一下你经常使用的redux中间件有哪些?以组合函数的形式手写代码实现中间件的级联功能?5)你了解react的diff算法吗?6)你了解react的fiber算法吗?7)reactpureComponent和Component有什么区别?8)react的生命周期,新旧版本都需要了解9)如何理解react的单向数据流?10)如何设计组件?11)反应备忘录?12)reactendlesslist是如何实现的?性能优化1)肯定会问浏览器的渲染原理?2)浏览器输入一个url后如何优化流程,流程中应用了哪些缓存?3)script标签和link标签的顺序如何影响页面加载?4)异步和延迟有什么区别?5)reactnative有什么坑(因为简历上写着用过RN)?计算机网络1)解释TCP/IP的三次握手和四次握手?2)解释前端的跨域问题和常见解决方案?3)CORS的细节,哪些是简单的请求?哪些是非简单请求?4)解释HTTPS?解释HTTP/2?5)HTTP报文的格式?算法1)手写冒泡排序?2)给定两组数字,将它们存储在链表中并求和?注意进位3)数组去重?4)微信红包是如何实现的?5)给定一组数,求和函数是延迟的网络请求,如何在最快的时间内计算出这组数据的和?前端工程1)webpack如何拆分大文件?2)webpack打包的过程?3)webpack的基本配置?项目体验部分估计很多同学都非常关心。自己的项目经历应该怎么写?出镜率最高的问题也是介绍你最好的项目?首先,要现实。对此,我觉得主要是考察应聘者在工作中的作用,在平时的工作中是否注重积累和总结。对自己很有帮助。关于如何写简历,我在极客时间《面试现场》专栏里提到过。我觉得很好。分享给大家的详细简历结构如下:一开始,“我有一定的经验,刚好遇到这个问题……”。(弄清问题背景)发展,“一般做法是不可能做到的,因为……”。(说到问题的复杂性和挑战)Climax,“我一开始就用了……然后……”。(谈形成解决方案的过程)结尾,“结果是……”。(说到结果,影响,意义)所谓“详细日历”,是比“简历”更详细的工作经验和能力总结。它用故事记录工作成果、职位、经历、能力发展,相当于你的工作档案,用来回顾个人工作经历,写简历,也是回答面试问题的经验素材库。这些材料反映了您的个人经验、技能、潜力和动机。详细日历是您个人工作经历的故事汇编,是您能力的指标,供您参考。不同的。详细日历主要有三大功能:帮助职业规划,可视化技能体系、经验分布、成长路径。是自定义简历的主模板。提供面试材料。当被问到“这个项目最大的进步是什么”,或者“你失败的沟通是什么样子的”时,你可以从准备好的详细简历中快速选择合适的故事告诉面试官。【第三部分面试流程,以及美团和阿里面试有什么区别】(待补充很多,比如:)很多同学可能想知道大厂的面试流程,这里我也简单介绍一下分享:一般大厂对应聘者的基础知识要求还是非常严格的。当然,他们也更看重应聘者的潜力和心态,因为在大厂眼里,知识是死的。只要有足够的时间,通常是可以掌握的,但潜能和精神状态,却是与每个人的成长轨迹和阅历有关。如果你想学好WEB前端,而你身边又没有人在学习过程中指导你,可以上这条WEB前端裙子:484、757、760,里面有最新的系统根据当前市场需求录制的教程。不管你是计算机专业想往WEB前端发展的,还是零基础想转行的,都可以跟着教程学,有不懂的可以问。面试官通常是你未来的同事。面试主要考察应聘者的基本知识。遇到的面试官都很好,会寒暄几句,帮助你走出紧张,然后进入正式面试。我记得看过一个关于紧张的TED演讲。它说即使你真的很紧张,你也不必担心,因为人们总是关心自己,所以即使你感到很紧张,在面试官眼中你也表现得没有你想象的那么紧张。第二个面试官通常是你未来的直接领导。这里阿里和美团的区别在于,当时阿里主要是考察我对过往项目的掌握情况,以及我在项目中的作用,然后和我聊了很多关于个人成长的经验和看法;美团重点调研面试??官没问我的基本知识点我都覆盖了。其实每个公司这里可能都不一样。三面面试官通常是你整个部门的领导。主要考察职业发展和候选人背景。过程中也会穿插一些算法题,不过难度不大。主要考察考生率的编程能力。美团到此结束,接下来HR会跟你聊薪资、个人背景、跳槽原因等等,阿里比较特殊。将有一轮额外的交叉面试,包括对HRG和小组技术负责人的混合面试。我个人认为主要考察候选人的沟通能力、适应能力、潜力。我没有问太多与技术相关的问题。也许我很幸运。我想说的是,想要在阿里应聘,一定要做好打持久战的准备。阿里的面试周期比较长,1-2个月很正常,一定要做好心理准备。阿里的email应该是通过了面试,没有消息就是最好的消息。美团很快。当然,也要看部门是否急需招聘。我采访的部门当天就完成了整个流程。【Part4OtherTips】下面的tips是我在准备面试时通常会遵循的,希望对你也有帮助。简历写作,如何通过初筛网上优化简历的方法很多,我就不展开了。我会列出我的简历框架,希望能给你一些启发1)尽量在一页上呈现你的内容。2)一般分为7个模块:个人信息、教育和工作背景、技能列表、项目经历、开源项目、个人博客、自我评价,其中开源项目和个人博客是可选的,如果有,自然是加了子选项。3)在技能列表中,写清楚你所熟悉的语言和框架,甚至是能够证明你具备一定能力的证书。这里要注意,千万不要写“精通”,除非你是语言或框架的创造者。一般来说,要精通一门语言或框架,真的很难。4)project部分,我的写法是work+result。选择我参与的项目中比较重要的部分,然后把工作内容和我的产出成果描述清楚,并尽量把我的成果数字化,比如项目时间、代码量、改进百分比等。再者,项目部分一定是真的。你要知道自己写的是什么,要负责任,否则面试官可能会认为你人品有问题。5)自评部分,一般来说,适当包装自己的优势就可以了。如果你很喜欢某家公司,也可以参考对方公司的企业文化,重点匹配自己的内容。另外,最好用1-2个例子来证明你写作的优点。比如我写我有很强的上进心。阿里面试官问我的时候,我介绍自己积极学习,参加前端训练营。培训,买了很多专栏学习了,关注了很多技术博客,写了文章总结等等。怎么谈薪水到了谈钱的时候,首先恭喜你前期的努力是终于得到回报。我们程序员平时比较内向,不擅长谈这些,我也一样,但谈钱也没什么尴尬的。你可能和我一样有错误的心理认知:如果你加分少,公司看我们需要的不多,可能会考虑给我们offer。其实在你通过几轮面试之后,你应该就可以判断自己是否有可能拿到offer了。这时候可以先研究一下这个行业的薪资水平,然后根据自己的水平给出自己的期望值。在这种情况下,你得到的Offer可能不会让自己受委屈。有时候,不敢多要也很正常。多面试多拿几个offer,信心自然就够了。面试前养精蓄锐、吃饱饭也很重要。记得我早饭没吃就面试了一个大厂,然后坐地铁1小时,3轮面试3.5小时。明显感觉跟不上,也会影响临场发挥【最后的感受】以上就是我的面试心得分享。总的来说是没有用的,但是我们通过面试找出不足,然后努力弥补不足。要及时总结。在找工作的过程中,每次面试一家公司,我都会写一份面试总结,记录下面试中遇到的问题,并回忆一下自己的好与不好的回答。面试过程中,对于你根本不知道答案的问题,不知道答案也没关系。面试是一个全面考察的过程,不会因为一两个问题答得不够好而被淘汰,如果在面试中遇到不明白细节的问题,可以和面试官老师进一步沟通.这是一个展示你的沟通技巧的好机会,不要自己考虑。试想,如果在项目中遇到不懂的事情,需要虚心请教,否则一心一意只会拖延项目的进度。在我看来,每一次面试都是一次极好的学习机会,尤其是大厂的面试官和老师们,无论从经历、经历、专业知识上都能给我积极的反馈。百度面试的时候,二面试官和我聊了很多关于人生选择和个人成长的话题。阿里面试的时候,二面试官也和我聊了工作方法论。背几个知识点更有价值,更有意义。
