# 阿里、美团

# 基础知识

# CSS

  • 垂直水平居中
  • 双栏布局
  • 随窗口变化的正方形
  • 网格布局

# JS

  • JS 基本类型
  • setTimeout、Promise、async/await 三者之间异步解决方案的区别
  • 宏任务微任务,通常会给出一段代码,要你说出输出结果并解释原因
  • 解释 JS 的单线程模型,以及为什么要这样设计?setTimeout 为什么无法做到精确
  • 手写 Promise
  • 原型链知识考察,通常会给出一段代码让你输出结果并解释
  • 说说 ES6 以后新增的语法
  • 解释 JS 的闭包?解释 this 指针指向问题以及 this 绑定函数
  • JS 继承的几种方式和优缺点
  • 实现节流和防抖
  • fetch 是否可以共享 cookie?两个 then 分别对应什么
  • 手写代码实现红绿灯效果
  • js 是如何操作 cookie

# DOM API

问的比较少

  • 如何翻转 DOM?
  • 冒泡和捕获机制,实际应用有哪些

# 前端框架底层原理

我们以 React 为例子:

  1. setState 内部实现
  2. 什么是虚拟 DOM,引入虚拟 DOM 的目的,虚拟 DOM 一定能解决性能问题吗
  3. React Hooks 有哪些了解
  4. React Redux 底层原理?如何完成异步请求?介绍自己常用哪些中间件?以组合函数的方式手写实现中间件的级联功能。
  5. React 的 diff 算法
  6. React 的 fiber 算法
  7. React PureComponent 和 Component 区别
  8. React 的生命周期,新版旧版区别
  9. React 单项数据流如何理解
  10. 如何设计组件
  11. React memo
  12. React 无尽列表如何实现的

# 性能优化

  1. 浏览器的渲染原理
  2. 浏览器输入一个 url 的过程,以及过程用应用了哪些缓存,如何优化
  3. script 标签和 link 标签的先后顺序对页面加载的影响
  4. async 和 defer 的区别

# 计算机网络

  1. 三次握手四次挥手
  2. 跨域以及解决方案
  3. CORS 的细节,哪些是简单请求,哪些是复杂请求
  4. HTTPS?HTTP2?
  5. HTTP 报文的格式

# 算法

  1. 手写冒泡排序
  2. 给定两组数,分别以链表方式存储,求和
  3. 数组去重
  4. 微信红包是如何实现的
  5. 给定一组数,求和函数时代延迟的网络请求,如何在最快的时间内计算出这组数据的和

# 前端工程化

  1. webpack 如何拆分大文件
  2. webpack 的打包过程
  3. webpack 的基本配置

# 头条、蚂蚁金服

  1. 合并 k 个有序链表
  2. 求数独
  3. 二叉树的层序遍历
  4. 二叉树的锯齿形层序遍历
  5. 字符串翻转
  6. 重排链表
  7. 二叉树插入节点
  8. 二叉搜索树节点删除
  9. 链表翻转
  10. 接雨水
  11. 旋转有序数组的峰值数字
  12. 有序矩阵的第 k 小数字
  13. 编辑距离
  14. 二分查找
  15. 找出小于并且最接近目标数字的数
  16. 寻找旋转排序数组中的最小值
  17. 不同路径
  18. 两两交换链表中的节点
  19. 山脉数组的峰顶索引
  20. 盛最多水的容器