测试题
HTML/CSS相关
- 文档流的种类,元素类型,幽灵空白节点的原因和解决
- 浮动的特点,清除浮动的方法
- bfc是什么,怎样创建bfc,应用场景
- css选择器的优先级
JavaScript相关
- for of的执行原理
- 什么是闭包?闭包应用场景?导致内存泄漏的场景
- 手写jsonp,深度比较,数组扁平化,防抖/节流,promise/all,race,instanceof,new,apply/bind/call,柯里化,深拷贝,数组去重
- 手写常见排序算法和查找算法
- 垃圾回收机制
- 工厂,单例,装饰器,观察者设计模式的应用场景
- map/obj比较,set/weakSet比较
- super在class和对象中的作用和指向
- es module的import和commonjs的require的区别
- script脚本中async和defer的区别
- new的过程发生了什么
- 闭包的优缺点,内存泄露的场景
- web worker的使用场景和限制
- symbol的应用场景
React相关
- fiber的出现背景和工作过程
- react性能优化手段
- setState的同步异步问题
- useState等基本hook的实现原理
- React合成事件和原生事件
- hooks 解决了class组件的什么问题,hoc的应用场景
- useLayoutEffect和useEffect的区别和应用场景
- diff算法的执行策略,key机制
- react旧版,新版架构fiber执行机制
- react-router的基本实现原理
Vue相关
- watch和watchEffect
- ref和reactive以及实现原理
- toRef和toRef
- vue2和vue3 生命周期钩子详述
- setup到底是什么,解决了什么问题
- pinia的是使用和过程机制,与vuex的区别,vuex的原理
- 父组件如何调用子组件方法?
- vue2,3的虚拟dom和diff算法,响应式原理,更新原理机制,与react的原理区别
- vue-loader原理,官网文档
- vue的自定义hooks和mixin的对比
前端工程化
- webpack构建过程,devServer,热更新的实现原理
- webpack常用性能优化方案(编译速度/打包产物优化/运行时体验)
- vite和webpack的区别
TypeScript相关
- interface/type,any/unknown的区别
- extends的几种用法,与implemnets在继承时的区别
- 各种高级类型的用法以及实现
微信小程序相关
- 小程序的生命周期(应用/页面/组件)
- 性能优化,页面跳转,数据通信的方法
其他
- 301,302,304,307,401,403,501,502,503,504状态码
- 跨域的解决方案,cors的过程详解
- xss/csrf是什么,解决方案
- 强缓存/协商缓存的过程机制
- http协议的特点,常见的请求/相应头部,http2.0优点
- get/post区别,长连接的特点,长/短轮询的特点,正反代理的区别和场景
- 输入网址后/浏览器渲染过程,css/js会阻塞渲染吗
- 哪些操作会导致重排和重绘,区别和改进方法
- 三次握手四次挥手的大致过程,为啥不是2次或4次握手,为啥不是3次或5次握手
- node的特点,单线程or多线程,应用场景,流式读取文件的优势
- websocket的特点,和http的区别
- 项目开发中遇到的难题,怎么解决的
- 如何排查性能问题
- cookie,session,token的机制和特点