前端秋招面试总结

53次阅读

共计 2123 个字符,预计需要花费 6 分钟才能阅读完成。

前言
秋招宣告结束,面试了接近 20 家公司,有幸拿到 offer,感谢这段时间一起找工作面试的朋友和陪伴我的人。这是一段难忘的经历,相信不亚于当年的高考吧,也许现在想起来高考不算什么,也许只有经历过秋招的人才懂得找工作的艰辛,offer 的来之不易。秋招值得回忆,故借写此篇文章来整理一些资料和心得。
知识点
数据结构和算法
数据结构和算法是不用多说了,基本上好一点的公司都会问。

堆栈、二叉树、平衡二叉树、链表
图的暂时还没遇到过,可能问的比较少吧
哈希表
各种基本排序算法(准备过程尽量能手写出来,尤其注意快速排序、归并排序、堆排序),它们的最优、最差、平均复杂度

计算机网络
前端方面重点准备 TCP/IP 协议,HTTP 协议,HTTPS

前端缓存:强缓存,协商缓存,各种字段的理解和区别
HTTP 的各种请求头含义和作用。
HTTP 各种版本的优缺点,应用场景,及对应的优化。如针对 http1.0 的优化
TCP 三次握手,四次挥手,最好能记住每一次握手和挥手包含哪些字段,为什么要第三次握手和四次挥手。
一道常考的题目

HTML

了解 HTML 语义化
HTML 各种新特性
HTML4.0 和 HTML5.0 的区别,如何解决 HTML5 的兼容性问题

CSS
CSS 这里主要会问布局相关,了解各种 CSS3 新特性,CSS3 动画等

各种布局
去除 inline-block 间歇的各种方法

JavaScript
这部分的内容比较多,也是自己准备得比较多的部分,不具体罗列,直接上自己准备过的资料

es6 相关,这部分很重要,基本会问的
深度解析原型中的各个难点

几道前端面试题,这里可以详细看看事件循环那部分,面试容易问
个人感觉笔试必备书籍《你不知道的 JavaScript》上中卷,里面能够讲到很多细节的地方,看完笔试能避免很多坑

前端跨域,跨域补充,思考各种跨域方式的优缺点,限制条件,应用场景。如 jsonp 跨域应用场景,为什么 jsonp 不安全?
目前看过非常详细的闭包讲解

前端安全

XSS 攻击
CSRF 攻击
浏览器渲染原理、js 执行机制这两部分也要重点准备,相关资料忘了

错误监控:这里有总结过:

即时运行错误:(1)使用 try…catch 捕获;(2)使用 window.onerror 方法捕获;

资源加载错误:1)使用 object.onerror 方法捕获,为什么不能用 window.onerror 呢?因为资源加载错误不会冒泡到 window 对象;2)使用 performance.getEntries,使用该方法获取所有已经加载的资源,跟所有资源对比,看哪些没有加载成功;3)Error 事件捕获;
跨域 js 报错怎么捕获?即“Script error”,解决方法 1.script 标签添加 crossorigin 字段,2. 添加跨域 HTTP 响应头,Access-Control-Allow-Origin: *

错误上报:1. 采用 ajax 技术;2. 利用 Image 对象上报错误(面试应该把这个答到)

前端性能优化
这方面是重点,但好像没有看过特别的文章,“雅虎 35 条军规”,能背多少就背多少,理解最好。可以扯上浏览器渲染原理。
其他资料

面试图谱
两万五千字面经
博客一
博客二

心得体会
前面的都是一部分资料,可能有点乱,但有些也记不住了。很多时候都看论坛和博客,和面试之前突击相关公司的面经。接下来总结一下面试过程中的心得和体会

当面试官问你一个问题时,不要只回答一个问题,而应该尽可能把跟这个问题相关的知识点都说出来,前提是你了解的,懂的。比如面试管问你 React,你可以把 React 的相关特性,应用场景和局限性,和其他框架之间的区别,甚至 React 全家桶都可以说。再比如面试官问你前端缓存,那你应该把你知道的前端缓存相关的都说出来,比如强缓存,协商缓存,缓存头,no-store 和 no-cache 区别等等说出来, 也许面试官就不会再继续问你相关的问题了,这种情况我确实有遇到过。
面试过程一定要自信,在前期面试的时候,由于心理有压力面试不是很自信吃了不少亏,面试官也有提醒过
关于实习和项目,这两个可以说是重点,一定要提前整理好在实习或项目过程中遇到的难点。在述说过程中一定要展现你发问题,思考问题和解决问题的过程。说话模式简单总结类似为:在实践过程中我使用 XX 工具或者通过 XX 方法,发现了 XX 问题,通过 xx 方法解决了这个问题。然后通过对比说说为什么用这个方法,例如因为这个方法跟其他方法相比有 xx 优势,另外如果用到了库,那么也要说说这个库的实现原理是什么。总之,要体现你发现问题和解决问题的能力。
整理难点问题,可以写在一张纸上,在面试前自己想好面试官可能会问你什么问题,然后查找相关资料,把答案整理一遍,每次面试完后不断反思完善自己的答案。一定要提前准备好,不然面试官叫你说遇到的难点,或者直接问问题时可能会懵逼。
务必记住:在准备过程中,多思考应用场景,优缺点,局限性等。回答问题时能答上这些最好。比如你项目用来 mongodb,那面试官很可能就会问你为什么要用 mongodb,它的优缺点是什么,跟 MySQL 相比有什么优势。
多思考更好的解决方案,比如 React 使用 redux 状态管理,那么如果不允许使用 redux,或者感觉 redux 太麻烦了,你会有什么方案替代它?再比如 Vuex 呢?

正文完
 0