最近面试遇到的面试题
网络相关
- 在浏览器地址栏输入地址后回车后都作了些什么呢?
- TCP三次握手、四次挥手
- HTTP缓存,什么是强缓存,什么是协商缓存
- HTTPS是怎么保证安全性的
- 你都知道哪些常见的http code。301和302有什么区别?
- 什么是跨域,如何解决跨域问题
- jsonp的原理。手写一个jsonp的方法
- http2有哪些新特性
- 有哪些常见的网络攻击方式,如何避免?
- 有哪些优化手段?code split,tree shaking,懒加载,按需加载,CDN等
CSS
- BFC是什么,有什么特点,如何触发BFC?
- 什么是重绘和重排,什么会引起重绘和重排,如何减少重排
- 什么是层叠上下文,如何确定元素的层叠顺序
- 讲讲flex布局,flex: 1 1 auto 代表什么?
JS
- 实现Function.prototype.bind的polyfill
- 闭包,作用域,变量对象,声明提升,this
- 高阶函数,节流去抖,库里化,compose
- promise,async await
- 事件循环,给一段代码,判断输出顺序
- Set, Map, WeakSet, WeakMap。区别是什么?
- 如何使用原型实现继承
- 是否使用过node。如果实战经验多,会问更深的。
- 深拷贝
算法
- 数组扁平化
- 计算数组深度,如:[1,2]深度为1, [1, [2,3]]深度为2
- 二分查找
- 快排
- 二叉树前中后遍历
Vue
- Vue数据绑定原理
- Vuex的mutation和action的区别
- watch和computed的区别,它们各自的应用场景是什么?
- 组件通信方式都有哪些?
- 如何实现Tree组件(递归组件)