面试题

186 阅读4分钟

      年前花了一个多月的时间面了一轮大厂、独角兽等前端职位,被虐了一番,但是也算是从面试中学到了很多东西吧。接下来总结一下,算是给自己涨一波经验。

首先是一面:

操作系统:

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;

有没有为团队提出一些建议,使得团队一直沿用你的建议;

如果有多个接口需要同时调用怎么办;

面试题:

({【】})判断括号是否对称;