2020年的一次面试经历

401 阅读7分钟

一、HTML相关

二、CSS相关

1、说一下css的景深,应用场景

2、说一下css阴影的参数都表示什么

3、flex如何完成骰子布局

4、垂直居中有哪些方法(尽可能多的说)

5、尽可能多的说一下transform的用法以及各个参数代表什么,如何使用,项目中都在什么场景下使用

6、说一下圣杯布局和双飞翼布局

三、JavaScript相关

1、谷歌浏览器的V8引擎是如何解析一段JavaScript代码的

2、new关键字都经历了哪些步骤和操作

3、说一下对原型以及原型链的理解

4、说一下javascript的作用域和作用域链,ES5和ES6有什么不同。

5、说一下对this的理解

6、说一下对闭包的理解

7、JavaScript为什么是单线程的

8、JavaScript的异步实现方案,有什么优缺点

9、async/awit的底层实现原理

10、async/awit必须要在一起使用吗,可以单独使用awit吗,有这样用吗?什么是可以单独一个awit使用,什么时候必须要配合async使用。

11、说一下Promise的用法,以及Promise的有缺点

12、什么时候回触发Promise.all()的catch方法

13、Promise.all()和Promise.race()有什么区别

14、浏览中的事件循环机制和Node中的循环机制有什么不同

15、Libuv的实现原理

16、Node中的循环机制是哪6个

17、IO操作是在哪个阶段

18、词法作用域是ES5就有还是ES6新增的

19、用了哪些ES6方法,应用场景是什么

20、如何用js写一个脚本,定时爬取网站信息

21、说一下面向对象、函数式编程、面向切面编程的区别

22、sesson和cookie的区别

23、几种模块化的区别(AMD、CMD、Commonjs、es6的module)

24、什么是反柯里化

四、Vue/Vuex

1、Vue模板编译原理

2、Vuex的作用以及使用场景

3、Vuex中的action和mutations有什么区别

4、Vuex中的数据变化了为什么Vue视图也会更新,Vue和Vuex是如何配合的,底层原理是如何实现

5、Vuex中mutation中可以写ajax请求吗

6、Vue是如何对对象进行劫持的

7、Vue中的Object.defineProperty能劫持数组吗

8、Vue2中是如何实现对数组的劫持的

9、Vue3的proxy解决了哪些问题

10、Vue3做了哪些优化改进

11、Vue2和Vue3对静态节点是如何做解析的

12、Vue2是如何生成虚拟Dom的

13、AST和虚拟Dom有什么区别

14、vue-router有几种模式

15、hash和histroy模式的实现原理是什么

16、hash和histroy模式有什么区别

17、为什么会有多种模式,只有一种不行吗?

18、路由钩子都有哪些,哪些是是全局路由钩子,哪些是组件钩子

19、这些钩子分别在什么场景下使用,有什么好处,使用的话有什么不好的地方

20、Vue中的use有什么作用,源码是如何实现的

21、Vue中mixin的合并原理,并说下有什么缺点

22、Vue和jq的优缺点

23、Vue和react的优缺点

24、说几个react的优化方案

25、Vue中的mixin和react的高阶组件有什么区别和联系

26、尽可能多的说一下Vue中的组件通信方式

27、Vue中$nextTick的使用场景,为什么能做到Dom加载完成之后,才去执行里面的方法,源码实现方案

28、Vue的extend的使用场景,能说下源码实现吗

29、Vue双向绑定机制是如何实现的

30、Vue响应式原理是如何实现的

31、Vue中的diff算法是如何实现的,path源码有研究过吗

五、webpack

1、都做过哪些优化方案

2、这些优化方案提升了哪些指标,(是打包快了,还是文件小了...)

3、有没有做过针对某个指标做webpack优化

4、loader和plugin有哪些区别

5、loader和plugin是异步执行还是同步的,如果是同步的哪个先执行哪个后执行

6、如何从0实现一个loader以及plugin

7、webpack如何将一个大的js代码分割成多个小的js文件

8、webpack如何配置阻止插件或者是vue版本的更新

9、配置webpack的时候,都用过哪些插件,分别都有什么作用

10、webpack的热更新原理是什么,为什么能实现我们修改了代码,浏览器能自动更新

11、webpack起的服务和浏览器是通过什么进行通信的

12、webpck和roolup的区别,分别在什么时候使用

六、前端安全

1、说一下前端安全

七、http/https

1、网络通信的原理

2、HTTPS的原理,如何实现加密的

3、对称加密和非对称加密的区别以及优缺点

4、http中的缓存都是在哪个版本引入的

5、哪些是强缓存,哪些是协商缓存,

6、为什么出现了express还要出cache-control,express有什么缺点

7、http3用的是什么协议

8、http从0.9-3每个版本更新了哪些操作

9、http2中的多路复用是什么意思,解决了http1.1的什么问题

10、http1.1能实现多路复用吗,为什么

八、数据结构和算法

1、快排的实现思想

2、快排中的基准元素如何选择

3、树形结构都知道哪些

4、二叉树的深度优先和广度优先是如何实现的

5、二叉树的前序、中序、后序以及层次遍历的区别,以及如何实现的

6、如何在链表中删除一个元素(单向链表和双向链表的实现都说一下)

7、如何判断链表不是一个闭环链表

8、对红黑树有什么自己的理解吗

9、快排的时间复杂度

九、微前端

1、微前端是如何实现的

2、你认为微前端带来了哪些影响

3、qiankun有了解多少,qiankun是如何实现微前端的

4、说说你对微前端的认识

十、Git

1、git commit之后,发现错了,如何回滚回来

2、假如昨天项目上线了,今天你在开发新的功能,老板突然来说要临时紧急加一个需求马上上线,这个时候该怎么操作

3、项目上线时候,如何对版本打补丁

4、如果线上项目出现了很严重的bug,一时半会解决不了,但是为了不影响客户使用,需要回滚到上一个版本,该如何做。

5、Git Flow的理解

6、git pull和git fetch的区别

7、查看本地分支和远程分支

8、如何新建本地分支

9、代码冲突了怎么解决

十一、TypeScript

1、Ts有什么作用,

2、ts是在哪个阶段进行类型验证的

十二、Node

1、用node实现过哪些东西

2、有用过pm2吗,如何配置的

3、pm2是如何实现进程守护的

4、如何用node实现一个pm2

十三、Axios

1、axios如何取消请求

2、axios如何做到一次性批量发送请求(不要使用循环)(为了服务器测压)

3、说下你在项目中是如何配置axios的

4、有用过fetch吗,说一下fetch、axios、原生ajax请求的区别

十四、其他

1、能不能自己通过flutter、node、mysql独立完成一个app项目

2、nginx的正向代理和反向代理

3、如何配置nginx的负载均衡

4、浏览器的垃圾回收机制说一下

5、堆和栈中的回收机制有什么不一样

6、如何解决跨域问题