JavaScript
- 讲讲 Event Loop,事件循环 宏任务微任务
- 如何理解浏览器中 Event loop 和 Node 中的 Event loop 有什么区别?
- JS 异步与多线程
- 异步处理:
- 异步演进方案:callback、promise、generator、async
- Promise是什么?
- generate 如何处理异步?如何做自动流程管理的?
- async 的实现原理?
- requestAnimationFrame 是什么?它与 setTimeOut 和 setInterval 有什么区别?
- instanceOf 的原理?
- 什么是函数节流、函数防抖?
- new 的原理是什么?通过 new 的方式创建对象和通过字面量创建有什么区别?
- js 垃圾回收机制?
- ES5:
- 作用域, 作用域链, 闭包
- 原型, 原型链, 继承
NodeJS
- 说说 node 异步特性?
- 有没有做过 node web 开发,有用过 egg、koa 等框架吗?
- api 接口是怎么设计的
- 怎么兼容历史版本
- 怎么持续集成与部署
- 怎么监控统计
- 怎么实现单点登录/统一登录
- 怎么实现权限控制
- 数据库: mysql/mongodb/redis。
- redis 有哪些数据类型。
- 有用过 mongodb 的 aggregate 吗。
- Express、Koa、Egg、Midway
- 什么是IOC?Koa核心是什么
BOM
- 浏览器缓存的优先级是什么样的?(Service Worker、Memory Cache、Disk Cache、Push Cache)
- 浏览器渲染页面的过程和原理?
- 浏览器的安全策略
- 什么是跨域?为什么浏览器要使用同源策略?了解预检请求吗?
- 项目中遇到跨域的问题是如何解决的?说一下 CORS、JSONP、ngix 反向代理、postmessage 实现跨域的原理?
- 安全:跨域问题
- 打开一个网站发生的事情
- 跨页面通信方案 Postmessage、querystring、SessionStorage、localStorage
DOM
- requestAnimationFrame
- html async defer区别
- src href区别
- 重排、重绘
- 什么是事件冒泡、事件捕获
CSS
- 如何实现switch开关
- 如何画三角形
- 0.5px 实现
- 怎么理解 BFC,如何触发 BFC?
- 实现一个左右固定,中间自适应的布局,有哪些方式可与实现?
- 如何用 CSS 实现一个页面全屏滚动展示的功能
- 如何触发浏览器的 GPU 渲染?
- 如何实现浏览器 10px 字体大小?zoom 和 transform: scale 的区别?
- 有 6 个等宽高的元素,如何在一个 div 中每行展示 3 个元素且铺满?
- 如何实现单行文本超出省略? 多行文本?
- position 有哪些属性?sticky 了解吗?
- 盒模型:怪异、标准、弹性
- 几种定位:static、relative、 absolute、 fixed
- 常见选择器、选择器优先级
Vue原理
- 什么是SPA,和传统前端开发的区别
- computed 和 watch、method 都有些什么区别?
- v-show / v-if 的区别?
- slot/v-slot 的使用场景?
- 子组件调用父组件有哪些方式?
- 自定义指令有用过吗,说说具体的场景。
- v-model 的原理?
- vue 怎么阻止事件冒泡?
- 你知道哪些生命周期?complication 和 compiler 是什么?
- css scope 可以避免 css 作用域的问题吗,有什么好的解决方案?
- css 深度作用器是什么。
- vuejs 生命周期?
- vue-router 有哪几种导航钩子?
- vuex 的 mutation 和 action 的特性是什么?有什么区别?
- 虚拟 DOM 原理
- Vue的组件渲染流程:组件如何到页面
- Vue/React 组件渲染流程
- Vue/React 响应式原理
- Proxy 与 Object.defineProperty 优劣对比
React原理
- react diff 算法原理,如何进行比较,不同的组件、元素、节点的比较策略,用了什么算法进行遍历?时间复杂度是?
- React 中的事件处理和原生的有什么区别吗?
- setState 什么时候是异步的?如何同步或者避免批量更新?
- 怎么理解高阶组件,它和 mixin 有什么区别
- 如何理解 React 中的 Transaction 事务
- react-router 有几种路由的方式?hash 和 history 的方式有什么区别,history 方式需要如何去配置?
- 访问一个 react-router 路由的时候,底层经历了哪些过程?
- Redux 是如何实现数据共享的?或者说 Redux provider 和 connect 做了什么?
- Redux 中间件的原理?怎么去写一个中间件?
- React 16 的新特性?有哪些生命周期的变更?为什么要做这些变更?
- 什么是 React Hook?
- React 如何做性能优化?
- 如何理解 immutable?
- 怎么实现 ssr/同构?
框架&工具链
- babel
- loader 的工作原理?如何开发一个 loader?
- Babel 运行原理?如何理解 AST?【Babel 工作原理(编译原理)】
- Babel 编译原理
- webpack
- webpack 怎么优化打包的速度? 如何减小打包的体积?
- webpack 中的 hash、chunkHash、contentHash 有什么区别?什么情况下,如何用?如何设置适合的 hash 缓存策略?
- 简单描述一下 tree shaking 的实现原理,import { button } from ‘antd’ 内部做了些什么?
- 写过 webpack 插件吗?如何实现一个 webpack 插件?什么是 tapable?
- Webpack 的优化策略
- 组件库
- 如何定制样式
- 如何做多主题
- 如何做国际化
网络协议
- 如何理解 HTTP 和 HTTPS? 两者的区别是什么?什么是 TLS?
- http 2.0、3.0 有什么新的特征?
- HTTP、HTTPS、HTTP2、强缓存、协商缓存
- Cache-control 有哪些值?分别作用是什么?
- UDP 和 TCP 的区别?
- 说说 CDN:CDN 的调度机制?回源策略?
- 说说 WebSocket、WebRTC