年前花了一个多月的时间面了一轮大厂、独角兽等前端职位,被虐了一番,但是也算是从面试中学到了很多东西吧。接下来总结一下,算是给自己涨一波经验。
首先是一面:
操作系统:
v8引擎;
进程、线程;
cdn缓存,静态、动态,怎么请求cdn缓存,过程;
一个页面从输入网址到页面加载完成经历了哪些步骤;
三次握手和四次挥手过程具体是什么样的;
http缓存与webstorage、cookie、sesssion;
301和302的区别;
http中通过哪个字段命中缓存(命中具体某个我们需要的缓存)
http请求头和响应头信息;
http和https的区别,原理之类的,https证书被篡改了怎么办;
http2.0和1.0的区别;
常见的状态码;
跨域,为什么会出现跨域(浏览器的同源策略以及策略原因),跨域的几种方式,cors跨域的具体设置(这种方式经常被问);
什么情况下会触发options预检请求;
跨域时cookie不能被携带怎么解决,哪个字段;
xss攻击是什么,怎么预防;
JS:
setInterval,setTimeout优缺点
async、await
堆和栈的区别,以及值类型和引用类型的区别;
深拷贝与浅拷贝;
原型,原型链,原型链的顶点和终点是什么,使用场景,继承;
闭包的理解,原理以及会造成什么问题,怎么用;同步理解执行环境,作用域链;
内存泄漏是什么,怎么避免;
事件轮询(eventloop),任务队列,宏任务,微任务;同步理解JS运行机制;为什么先执行微任务后执行宏任务?微任务和宏任务都有哪些,多举几个例子;
函数防抖和节流;
promise, 手写promise.all;
数据类型:Number、string、Boolean、undefined、Object、Null、
Symbol、bigInt;
const、var、let;
缓存:cookie、localstorage、sessionstorage;不能被缓存的请求;
call、bind、apply;
创建对象的方式
出现空白屏的原因以及怎么避免;做过的一些优化;
ES6:
箭头函数;
构造函数;
模块化,import,export;
import和required的区别;
数组的所有方法;
for-in和for-of以及foreach区别;
typeof和instanceof的区别;
Map、Set、WeakMap、WeakSet;
class
数组平铺,数组去重;
VUE:
Object.defineProperty是什么,用来干什么(除了vue的数据劫持外)
为什么会使用虚拟dom
用了什么设计模式;
mvvm的理解;
data为什么是一个函数;
页面渲染过程;
数据双向绑定原理;事件监听机制以及原理;
生命周期,以及各生命周期都做了什么事情;
钩子函数;
传值方式,(可结合vuex)
vuex是怎么注入项目的;(在package.json中安装vuex,在main主文件中注入
Vue.use(vuex))
diff算法;
v-model原理;
v-for的key作用;
v-for和v-if的优先级以及区别,如何避免;
$nexttick原理,作用,用来作什么的;
工作原理以及过程,实时刷新时会怎样,怎么删掉不用的缓存;
Vue-router:
动态路由;
钩子函数;
vue3.0相对比vue2.0有什么改变,性能提高的原理,proxy代理是怎么工作的,为什么比defineproperty性能要快;
computed和watch的区别;
父子组件渲染过程;
手写实现observer、dep、watcher
注意:每个知识点不要一知半解,要理解透彻,全面;
CSS:
BFC是什么,用来作什么,什么时候会触发;
布局:响应式布局,flex布局、两栏布局、三栏布局;
动画;
将div置于页面的正中间方式;
定位方式:绝对定位以及相对定位最常问;
ex、px、rem区别;
样式选择器优先级;
盒子模型;
伪类和伪元素;
HTML5:
行内元素和块状元素区别;
meta使用
mvvm与mvc的区别;
做过哪些性能优化
React:
hooks
组件传值方式
map循环中key作用
类组件与函数组件区别
函数式组件的优缺点
vue与react区别
Webpack:
工作原理
做过哪些打包优化
loader与plugin区别
写过自定义loader与plugin吗
热更新原理
接下来是二面:
二面不用说基本都是怼项目:
工作这么久以来遇到过比较难以解决的问题、bug,难点是什么,是怎么解决的;
就自己解决过的一些bug进行探讨;
你作为一个leader,会怎么进行技术选型;
有没有为团队做过一些可视化构建来提升团队的工作效率;
在团队中扮演什么角色,怎么进行代码review;
有没有为团队提出一些建议,使得团队一直沿用你的建议;
如果有多个接口需要同时调用怎么办;
面试题:
({【】})判断括号是否对称;