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