Appearance
HTML
- H5存储方式
- cookie,localStorage,sessionStorage
- 垂直居中方式
- 如何操作dom节点,比如改变浏览器的icon
- todo
CSS
- css选择器优先级,从左解析还是从右解析
- trasition、animation、transform各自的使用场景
- css3的var属性怎么使用
- flex布局
javascript
- 数组的遍历方式
- 对象的遍历方式
- Promise异步解决方案
- async和await怎么捕获异常
- promise c和d 的执行需要依赖于promise a和b的数据,如何实现?
- 介绍一下数组的方法
- reduce方法的参数及使用
- 数组去重
- promise.all请求两个相同的url,会怎么样
- 字符串最长不重复子串问题
- 实现深拷贝的几种方式(手写)
- 递归引起的堆栈泄露
- 如何理解eventLoop(浏览器、node)
- 箭头函数的特点(或与普通函数的区别)
- 数组的方法
- forEach/map的区别
- 原型链的理解
- 实现继承的几种方式
- 实现new
- call/apply/bind的原理和实现
- 实现数组扁平化的几种方法
- 实现数组去重的几种办法
- 快速排序的实现原理
- 防抖和节流的作用、场景、手动实现
- 设计模式
- 单例模式
- 观察者模式
- 发布订阅模式
- async/await的底层实现
- CORS怎么实现浏览器渲染,栅格化线程池
- 重排和重绘
- HTTP2相对于HTTP1.X有什么优势和特点,头部压缩的算法实现
- HTTP、HTTPS的区别
- 加密过程
- 数字证书传输过程
- 简单请求和复杂请求
- 闭包
- todo
浏览器、移动端
- http与https区别
- 页面渲染过程
- 跨域的几种方式
- 前端安全机制
- 首屏优化
- 性能优化
- 常用的http状态码
- 移动端适配问题
- 响应头里有哪些信息
- 宏任务、微任务
- 前端安全
- 虚拟滚动
- 内存泄露
- token鉴权
- 大量数据渲染方案
- typeScript的缺点
ES6
- 新特性
webpack
- webpack特性
- webpack配置
- webpack生命周期
- 插件的编写
- loader和plugin区别
Vue
- vue响应式原理
- vue diff算法
- vue在beforeCreate和created 分别做了什么
- 自己封装的组件,介绍一下
- 不通过props,如何在子组件中拿到值
- nextTick实现原理
- computed和watch的区别
- watch如何监听对象的变化
- computed如何实现缓存
- nextTick的实现原理
- vuex原理
- 路由守卫
- v-model原理
- 组件中data为什么是一个函数
- vue.set实现原理
- 兄弟组件传值
- 如何清除keep-alive组件
- 如何清除vue-router历史记录
- 如何在vue中使用typeScript
React
- react的渲染过程
- redux的运行过程
- ReactNative与原生的差异
算法
- 排序算法:冒泡、选择、快速,及其实现原理
项目
- 最近的项目介绍
- 项目中的性能优化
其他
- 整体的前端架构的搭建过程
- 一项新技术的引入需要考虑哪些方面
- 对flutter的了解
- 做过的项目业务
- 数据劫持
- 数据冻结