当前位置: 首页 > Web前端 > HTML

2020前端面试经验总结

时间:2023-04-02 13:03:16 HTML

看了很多面试经验分享,大部分都是面试题总结。与其总结题目,不如结合自己的面试经历谈谈我对面试的理解。总共采访了20家大大小小的公司。总结了从面试准备阶段到面试结束遇到的问题,希望对正在找工作或者即将找工作的同学有所帮助。一句话总结找工作的感受:抓基础(技术知识和原理),充实项目(项目经验和细节),了解全面(技术和产品),积累是前提(工作中的积累和总结),而且很会说话。重要(表达到位)。面谈经历可以作为公司面试范围的参考,但不代表全部,因为每个人的情况不同,所以考察的内容也不完全相同。有的人简历写node,会问node;有的人简历上写redux,就会被问到redux。如果你真的没有看过这些方面,你可以如实回答。所以,不能把面经当作唯一的参考,只看面经出现的问题。你应该根据简历上的内容,扩展你的学习和准备。有些学生不知道如何准备。下面就面试的基本流程来说说每个阶段如何准备。同学们可以根据这些方面进行充分的准备。简历简历是进入公司的敲门砖。只有通过第一步的简历筛选,才能进入下一步。所以,首先要写好简历,不要有错别字,不要有看不懂的句子。有条件的话,可以请有经验的朋友帮你看简历,尽量把简历改到最好。网上教你写简历的文章太多了。百度搜索如何写简历,结果前几页或多或少有些不同。有些人建议您列出技术要点,而有些人则不这样做。最后你可能会感到困惑。在我看来,这些要根据自己的实际情况来区分。比如技术点列表:如果你的项目经历能够充分体现你所涉及的所有技术点,就可以不写;但如果不能充分体现,就必须列出来。你必须对这些问题做出自己的决定。但说到底,简历的核心应该是你能力的体现,是展示能力的地方,所以你一定要能把核心表现出来。这里推荐三篇我认为比较好的介绍如何写简历的文章。https://blog.csdn.net/lhjueji...https://github.com/nzbin/resu...https://juejin.im/post/5c3fd2...基础知识(一侧)基础知识通常是会在一侧检查,包括从html(5)、css(3)、js到node、webpack、vue、react所有可能的知识点。但是通常你不会去追究太深,就是对知识面的了解(但不代表你只需要知道是什么)。基础知识不仅要知道它是什么,还要知道怎么用,为什么这么用(深入理解最好)。死记硬背可以用一会,但是遇到面试官需要深入谈的时候,死记硬背真的没什么用。所以最好把每个知识点都理解透彻,讲清楚。有的面试官可能会稍微修改一下某个知识点,比如问你一个数组的slice方法,然后让你自己实现,这样你就不能随便用。更重要的是,对基础知识的理解深度会影响到你的职级考核(当然这个考核也会根据工作年限)。比如同一个知识点,你知道它是什么:初级;如果您知道如何使用它:中级;如果知道原理并能自己实现:高级;更进一步,如果你知道它背后还涉及到哪些其他的知识点,并且可以对这个知识点有自己的感悟:专家级。这可能有点夸张,也未必能达到专家级水平,但是你应该明白我的意思,对一个问题理解的深度决定你的水平,影响你的水平。比如我面试的时候,面试官给了我一道基本的变量声明和函数调用题。虽然简单,但要求是把从创建到结果输出的过程中涉及的所有知识点都讲清楚。因此,在准备阶段,需要学生把每一个知识点都弄清楚,并解释清楚。以下是博主总结的一个基础知识点(包括css、js、js高频手写题、vue题、http、浏览器题)。我觉得总结的很好,也是面试中经常出现的问题。每个人都有必要把每个点都过一遍,但是有些回答不是很充分。在此基础上补充了面试中遇到的基本问题以及相应的比较好的答案。某博主采访总结:https://www.cnblogs.com/chenw...JS继承:https://www.cnblogs.com/ranyo...原型链接:https://www.jianshu.com/p/711...this指向:https://blog.csdn.net/Yongxia...设计模式:https://www.cnblogs.com/imwtr...调用,申请,绑定,新实现:https://www.jianshu.com/p/097...防抖和截屏的实现:https://www.cnblogs.com/momo7...;https://www.jianshu.com/p/c8b。..let,var,const区别:https://www.lizenghai.com/arc...事件循环:https://juejin.im/post/59e85e...;https://juejin.im/post/5b498d...;https://juejin.im/post/5c3d89...promise使用与实现:https://segmentfault.com/a/11...promise并行执行与顺序执行:https://www.jianshu.com/p/dbd...关闭:https://zhuanlan.zhihu.com/p/...垃圾回收和内存泄漏:https://juejin.im/post/5cb336...数组方法:https://www.cnblogs.com/jiuxi...;https://www.runoob.com/jsref/...数组乱序,数组扁平化:https://www.cnblogs.com/guola...;https://www.cnblogs.com/wind-...事件委托:https://www.cnblogs.com/liuga...事件监听:https://zhuanlan.zhihu.com/p/...事件模型:https://blog.csdn.net/qq_3635...axios:https://www.jianshu.com/p/73f……;https://cloud.tencent.com/dev...typescript:https://www.tslang.cn/docs/ho...CSS(3)&HTML(5)Articleflexlayout:http://www.ruanyifeng.com/blo...垂直居中:https://www.jianshu.com/p/907...;https://www.cnblogs.com/AdamC。..清除浮动:https://www.jianshu.com/p/4d0...bfc:https://www.jianshu.com/p/0d7...三列布局:https://www.cnblogs.com/webta...;https://www.jianshu.com/p/7d7...两栏排版:https://blog.csdn.net/weixin_...动画(很经常查看):https://www.cnblogs。com/www-1...;https://segmentfault.com/a/11...;https://www.jianshu.com/p/ec1...;https://www.jianshu.com/p/780...盒子模型:https://www.cnblogs.com/axinm...;https://www.jianshu.com/p/824...HTML5新特性:https://www.jianshu.com/p/37c...;https://www.php.cn/html/html5...Vue篇Vue数据双向绑定原理:https://www.cnblogs.com/libin...;https://github.com/DMQ/mvvm#_2;https://segmentfault.com/a/11...;https://www.cnblogs.com/wangj...vue计算原理:https://my.oschina.net/u/3060...vue编译结构图:https://www.processon.com/vie...生命周期:https://www.jianshu.com/p/ff8...vue组件通信:https://segmentfault.com/a/11...mmvm模式,mvc模式理解:http://www.ruanyifeng.com/blo...vuedomdiff:https://www.cnblogs.com/wind-...vuex:https://blog.csdn.net/qq_3640...;http://www.uml.org.cn/ajax/20...vue-router:https://www.jianshu.com/p/429...;https://www.cnblogs.com/gaosi...;https://www.cnblogs.com/keepf...React文章dom-diff:https://blog.csdn.net/one_gir...listkey属性:https://segmentfault.com/a/11。..jsx原理(createElement):https://www.jianshu.com/p/6f3...react-router原理:https://www.jianshu.com/p/d99...redux原理:https://segmentfault.com/a/11...Lifecycle:https://www.jianshu.com/p/b33...reactsetState:https://www.jianshu.com/p/89a...react组件通信:https://blog.csdn.net/qq_2513...性能优化:https://www.sohu.com/a/252022...网络篇HTTP1、HTTP2、HTTPS:https://www.jianshu.com/p/dc6...;https://www.jianshu.com/p/11c...浏览输入网址到回车的过程:https://www.cnblogs.com/aiqiq...前端跨域:http://www.imooc.com/article/...;https://juejin.im/post/5c2399...浏览器缓存:https://www.jianshu.com/p/54c...cookie、session、token、localstorage、sessionstorage:https://blog.csdn.net/cadi201...;https://cloud.tencent.com/developer/文章/1432573;https://www.jianshu.com/p/7a2...xss和csrf攻击:https://github.com/dwqs/blog/...状态码:https://blog。csdn.net/qq_3568...TCP连接(三次握手,四次挥手):https://www.cnblogs.com/welan...工程由于本人工程经验有限,只列出自己的面试webpackloader&plugin中问到的一些问题:https://www.codercto.com/a/30...性能优化:https://mp.weixin.qq.com/s?__...nodeJs:https://www.jianshu.com/p/341...错误监控:http://fex.baidu.com/blog/201...;https://cdc.tencent.com/2018/...算法作为前端,虽然对算法的要求不高,但是看多了,渐渐对前端有了新的认识:前端越强大,对算法、数据结构、系统的要求就越高,所以掌握好算法是很有必要的。前端面试前两轮基本都会问算法,不一定是leetcode上的算法题。可以检查一些具体问题的实现。比如我被问到类似https://www.cnblogs.com/weiyf...(但是显示在中心),arraytotreehttps://www.cnblogs.com/mengf....我觉得这种题还是比较容易的,只要平时代码写的多就可以了。除了这类题外,还会考leetcode上的算法题。每个人的情况都不一样。即使是同一个采访标题,也有的人问比较简单的问题,有的人问比较难的问题,有的人可能不会问。所以面试不仅仅是看准备,还有一部分运气,但前提是你得准备好(千万不要侥幸!!!万一被问到)。刚开始刷算法真的很累,10道题一下子想不出来的。不过没关系,刷多了就会有感觉,还是要坚持。可以先每天用简单的题来“暖脑”,找点感觉,能解出来就有底气了,再试试中难度和高难度。不建议一开始就解决困难的问题。如果你做不到,你将受到重创。该算法不要求完成所有的扫描(如果你有足够的时间,你可以扫描更多,平均在100个左右)。关键是总结规则。easy、medium、hard都要刷(hard可以少刷,但一定要刷)。每一道数据结构都要刷(不要侥幸!!!被问到双链表,我之前没刷,结果很尴尬),重要题型要重复,试试多种解法,总结各类题型规律。leetcode:http://leetcode-cn.com/经典排序算法:https://www.cnblogs.com/onepi...算法总结:https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E7%9B%AE%E5%BD%95.md算法总结2:https://github.com/Alex660/Algorithms-and-data-structures/blob/master/algo/%E9%93%BE%E8%A1%A8_linkedList.md链表题总结:https://segmentfault.com/a/11...Dynamic编程讲解:https://zhuanlan.zhihu.com/p/...二叉树:https://www.jianshu.com/p/d11...项目经验(双面)项目经验很重要,还有也作为面试和调查排名的评判标准,能否对一个问题有自己的理解,并给出具体的实施方案,是决定能否通过面试的重要一环。一般来说,你会或多或少被问到技术问题,但他们更倾向于深度而不是广度。比如mvvm模式是如何实现的,setState的原理可能会让你自己写代码实现,但总的来说思路就够了。当然,如果你能顺利的把代码写出来,你的分数肯定不会低。所以这也是我所说的影响你评分的理解水平的意思。其次,你会问的问题包括但不限于项目开发过程的技术架构,说说你做过的比较好的项目(突出你的贡献),你的作用(主要体现在三个方面),在项目中的收获,项目的亮点,项目中遇到的,简历中某个点的难点是什么,如何实现的(比如用css,具体的属性和值一定要能说),如果你让你自己来做(根据你的简历)组件设计实现思路的兼容性问题底层原理性能优化工程前端学习规划(多见于三面)算法(部分面试官会问)技术架构:https://baijiahao.baidu.com/s...项目亮点:https://www.jianshu.com/p/c0d...项目中遇到的困难:https://segmentfault.com/q/10...项目经历:https://juejin.im/post/5b55f7...Leadership(三面)必须对面试的部门和产品有充分的了解,涉及的问题包括但不限于职业规划、产品理解、项目理解、技术广度、学习方式、稳定性、工作方式。基于你现在和未来的调研,基于你对技术的广度和深度的了解以及你对项目的理解(包括项目开发、多人协作、工作方式等),结合学习规划和稳定性等问题,您当前和未来的潜力进行评估,看看您是否适合并能为您面试的团队做出贡献。这些问题事先想清楚,不要模棱两可地回答,最后可能会自欺欺人。这边很少考察算法、技术和项目,可以和面试官充分沟通,了解团队的工作习惯、学习氛围、要做的项目等,毕竟你会来面试的团队与未来。有必要提前了解清楚,以免以后出现不适。我觉得HR面(四面)聊天和hr聊天也是需要技巧的,有的该说,有的不该说。如果你真的很期待加入这家公司,你一定要表现出你的诚意。之前和一个HR聊天的时候,问有没有其他offer的时候,提到了一堆公司就在我面前。现在想想,我觉得不是很好。那么,如果你真的想加入一家公司,你至少要表现出你在等待公司的回复,这样才能让别人感觉到你真的很想加入。其次,有些问题,比如问你的表现,离职原因,最好尽快回答。如果你想的时间长了,或者含糊不清,别人可能会认为你不诚实,最后可能会被拒绝。这些问题要提前准备好,最好和身边的朋友聊聊。如果别人同意你说的话,至少要说明你的理由是有道理的。因此,这些问题必须在HR会议之前提前考虑清楚。谈薪水也是面试考察的一个很重要的点,能否对自己做出正确的判断。你应该根据自己的实际情况(包括面试情况和工作年限)和市场相应职位的薪资要求。一般来说,涨幅在10%-30%,但也不是绝对的。可以要求50%、60%,甚至双倍,但要结合市场情况和自身情况(包括面试条件和工作年限)。比如觉得面试很好,可以尝试按市场高价(50%、60%)要;不管它有多糟糕,就把它扔掉。切记不要乱要工资!!!有个挺大的公司要求高了(60%,当时面试的时候感觉不是特别好,但是看了别人说的,如果你要求更高的薪水,就会被砍掉,所以我我直接报了这个价格),结果直接被拒了:(。当然每个公司的情况不一样,有的公司最高可以翻倍,有的可能最高只能到50%,所以这些问题需要提前了解,可以请教有知识的朋友,或者上相关平台咨询。每个人自身水平和面试情况不一样,别人说的也未必准确,大家可以参考一下。在面试后自我评价的基础上,加减rate,但切记不要乱问!!!,对方可能不跟你说话,直接拒绝你(因为申请这个职位的不是你一个人,还有很多人跟你竞争,别人比你划算,除非你有信心你的优势比别人高很多)。最好能在和你想工作的公司的HR谈之前再有一个offer,这样你就可以用这个offer来争辩了。其他补充大公司和小公司面试的区别从我面试的小公司和大公司来看,大公司套路少,流程基本一样。一是基础知识,二是项目经验,三是领导面试,四是HR面试。但是,小公司一般对项目细节把握较深。上来的时候可能会开始问自己的项目经历,包括使用了什么技术,如何实现,具体原理是什么,兼容性问题是什么,开发中如何使用设计模式等。是的,某个模块或页面的设计思路和实施方案。对具体实践和技术实现的要求比较高。所以大公司和小公司的面试一定要做好相应的准备。其他推荐面试经验总结JS题总结:https://github.com/mqyqingfen...基本检查要点:https://juejin.im/post/5c6ad9...;https://juejin.im/post/5e5a75...;https://juejin.im/post/5d387f...;https://juejin.im/post/5ba34e...前端面试总结:https://cloud.tencent.com/dev...前端知识点总结:https://yuchengkai.cn/前端知识点汇总:https://github.com/Advanced-F...本博主写的三篇文章,值得前端同学反复阅读阅读不仅是为了面试,更是为了规划和反思关于你的职业生涯:http://jartto.wang/2018/03/29...;http://jartto.wang/2018/04/29...;http://jartto.wang/2018/04/29...项目经验:https://blog.csdn.net/FL63Zv9...总结+反思从第一次面试到后来的面试他们都分享了自己的答案和他们自己的理解。他们经历过痛苦、磨难,不相信自己,准备放弃,直到最后顿悟,收到了多个offer。所以只要坚持,前方总会有希望。综上所述,面试=基础知识+项目经验+技术理解,产品理解+表达能力+运气,运气是我们无法控制的,所以我们要在其他方面多加努力,每一部分都要准备充分,深入准备。当然,表达能力的提高需要长期的锻炼,但我们可以提前对每个部分进行旁白练习,并进行一定程度的拓展。现在的面试对知识点越来越细,有的要求你能写出某个框架的实现原理(对源码的理解程度),所以每个检查点都要研究和学习深入理解,只靠死记硬背是没办法应对所有面试的。以后可能需要会手写面试的框架。虽然我们的面试一方面是为了找一份好工作,或者是为了升职加薪,但另一方面也是对自己的考察。在我看来,面试成功的前提不仅仅是面试前的学习,更重要的是对每一个知识点、每一个项目开发、每一个日常工作中遇到的困难的积累、实践和总结。面试前的突袭不能走得更远。要想走得更远,就必须抓住每一个机会,遇到的问题也不能放过。在每一个项目中提升自己,突破自己,记得总结反思。希望各位技术同学能互相鼓励。以上是我对面试的看法。如果您还有其他问题,请留言。