从前端学习到找到一份合适的工作,大大小小的面试必不可少,春招的实习面试,以及秋招的校招面试,从面试内容到技术的深度,要求都是不一样的。先说春招的实习面试,面试内容主要还是考察前端的基本功,如果是科班出身,对于计算机基础学科要求还是比较多的,比如会考察操作系统,编译原理,计算机网络相关基本知识。总体来说,考察的方向大致有一下几种:HTML/HTML5CSS/CSS3布局相关,如双飞翼/圣杯定位清除浮动BFCcss3动画,过渡,形变各种花式垂直水平居中flex弹性布局=如何理解css中的流等等太多了JavaScriptecmascript语法基本功,如字符串拼接,数据类型,对象等js的作用域,作用域链,执行上下文闭包DOM操作,什么是DOM,什么是BOM事件模型thisES6常用的新增特性JS网络相关(都是重点)什么是跨域,常见的跨域方式有哪些,是否知道nginx配置代理进行跨域CORS是什么什么是同源策略什么是Ajax(xhr)(比较重点)常见的存储方式有哪些,即localstorage sessionstorage的场景以及区别Promise是什么,和setTimeout/setInterval的区别,再深一点,宏任务和微任务的区别。什么是模块化,是否了解CMD,以及ES6的module/import垃圾回收机制重要-事件循环机制计算机网络post/get的区别浏览器输入url到页面加载完毕发生了什么启动浏览器网络线程根据是否是有缓存浏览器进行自己的请求规则决定是否发出请求dns查询tcp建立连接接到数据,开始页面渲染,启动浏览器渲染引擎(渲染引擎与js引擎互斥,也就是只能运行一个)解析HTML构建DOM树构建css树解析html过程中如果遇到script标签,要停止渲染,启动js引擎执行script中的代码,如果script中是src格式,那么要启动网络线程,加载js脚本,加载完毕开始执行js脚本,页面渲染一直会被阻塞。当DOM构建完毕,css树也构建完毕,浏览器进入layout阶段合成渲染树render-tree下一步进入painting阶段,即页面开始绘制结束协商缓存vs强缓存cookie/sessionhttp1.0/http1.1/http2/httpstcp模型常见的状态码算法各种花式排序其他的还是看下面给的链接吧框架相关(我擅长vue,其他还没有投入过学习)你的技术栈vue的典型问题,见下面的vue源码揭秘vue-router如何实现,hash/history两种路由的区别vuex,状态管理是什么组件间如何通信数据如何实现双向绑定组件间数据单向流动是啥compute/watch的区别说一下你知道的js开发模式,实现一下观察者模式webpack有了解吗,为什么需要构建工具vue3.0 有了解吗性能相关如何提高页面响应性能(主要是从网络层面思考)减少网络请求图片合图,减少请求的资源总量使用CDN托管静态资源将js脚本标签放在html的最后,避免阻塞渲染,提高首屏加载速度避免使用不必要的同步请求页面图片懒加载,滑动到可是区域,才发起图片请求图片要压缩,现在推荐webp格式,gif推荐animated webP如何提高页面运行时性能避免js操作DOM,因为可能会造成页面的回流或者重绘代码层面(可以参考高性能JavaScript)多次使用类似于a.b.c这样的变量,最佳实践是将其保存在变量中,避免每次都要向上查询,比如a.b.c表示页面节点a的属性b的属性c。多次使用会一直遍历DOM节点,耗时太大。合理使用闭包,避免垃圾回收无法回收实际已经不在使用的内存在合适的情景下释放掉绑定的事件,事件程序本身占用内存,事件太多,要不就及时释放点,要不就研究一下能不能使用事件委托。查找DOM节点时,推荐使用querySelector/querySelectorAll。对于同一个节点的查询,这两个方法要比getElementById/getElementByClass快很多。js中避免直接操作css,代替它的是使用切换类名。后面再慢慢补充总结内容还不是很完善,但是已经完全适合实习生的面试以及自己第一阶段的学习需求了,更详细的内容可以看一下下面贴出来的面试图谱,范围广并且兼顾了一定的深度,可以研究研究。资料链接:面试图谱-真面试宝典,但是我觉得对于实习生性价比最高JavaScript基础进阶–讲道理,这个多看几遍,面试官会觉得你这个实习生蛮强的,其实里面有很多东西,我发现多年从事前端的同学也未必掌握结合CSS3的布局新特征谈谈常见布局方法ES6常用语法从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!cookie、Sessionstorage、Localstorage快速上手前端面试之CSS总结(上)浏览器工作原理 (一) : 浏览器渲染原理 & 浏览器内核【CSS基础】Flex弹性布局