2022年前端面试题整理
1. 浏览器的缓存机制
2.实现一个简单的 路由跳转 router
class Router(){
todo
}
router.register('/user/id')
router.match('/user/123')
router.push({path: '/user/:id', name:'xxx'})
3. 浏览器的垃圾回收原理
4.js 中什么时候会产生异步事件
5. async/await 的实现
8.为什么 tcp 握手是 三次,而挥手是四次
9. var, let, const 的区别
// 第一题 let a = 10; function funa(){ console.log(a) // 报错 let a = 20; } funa() console.log(a) // 10 // 第二题 let a = 10 function funb(){ console.log(a) // undefined var a = 20 } funb() console.log(a) // 10 // 第三题 let a = 10 function func(){ console.log(a) // 10 a = 20 } func() console.log(a) // 20
12. vue 中 组件之间的通信
13. 事件循环机制 和 队列
14. 手写 promise 源码
15. css 选择器的优先级
<div class="a" id="a"> <div class="b c d e f g h i j k l m n o p q"> text </div> </div> <style> #a .c{ color: red } .b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q{ color: blue; } </style> 文本是什么颜色?为什么?
red,
因为 css 的优先级是按照 important > 内联样式 > id > class > 标签选择器
首先是按照优先级,如果优先级一样,再来按照权重进行比较。常说的 id 权重 等于100,并不是说它真等于100,只是一个方便计算的值。
16. webpack 打包工具,loader 和 plugin 什么时候会用到,是如何实现的。
以下是百度别人的面试题:
- 服务器怎么解析这个地址和ip地址怎么查找的
- 三次握手是怎么过程,服务器怎么识别握手是同一个客户端的
-
进程和多线程讲一下,有什么关系
js的类和c++、java的类有什么区别?
浏览器单线程怎么优化的?
vue项目怎么优化的,提到gzip被虐
跨域怎么解决的?cors后台是怎么写的?讲了一下xss
对于小程序里面的权限是怎么做安全校验的
事件流,事件委托讲了下
原型和原型链讲了下
let const var区别,怎么手写一个函数实现const的功能
单线程和异步怎么使用到和体现的
解释一下settimeout的原理
promise的认识
promise和async 和区别
浏览器的安全问题有哪些详细介绍一下
http和Https去区别,为什么https比http安全?ssl优点