# 阿里、美团
# 基础知识
# CSS
- 垂直水平居中
- 双栏布局
- 随窗口变化的正方形
- 网格布局
# JS
- JS 基本类型
- setTimeout、Promise、async/await 三者之间异步解决方案的区别
- 宏任务微任务,通常会给出一段代码,要你说出输出结果并解释原因
- 解释 JS 的单线程模型,以及为什么要这样设计?setTimeout 为什么无法做到精确
- 手写 Promise
- 原型链知识考察,通常会给出一段代码让你输出结果并解释
- 说说 ES6 以后新增的语法
- 解释 JS 的闭包?解释 this 指针指向问题以及 this 绑定函数
- JS 继承的几种方式和优缺点
- 实现节流和防抖
- fetch 是否可以共享 cookie?两个 then 分别对应什么
- 手写代码实现红绿灯效果
- js 是如何操作 cookie
# DOM API
问的比较少
- 如何翻转 DOM?
- 冒泡和捕获机制,实际应用有哪些
# 前端框架底层原理
我们以 React 为例子:
- setState 内部实现
- 什么是虚拟 DOM,引入虚拟 DOM 的目的,虚拟 DOM 一定能解决性能问题吗
- React Hooks 有哪些了解
- React Redux 底层原理?如何完成异步请求?介绍自己常用哪些中间件?以组合函数的方式手写实现中间件的级联功能。
- React 的 diff 算法
- React 的 fiber 算法
- React PureComponent 和 Component 区别
- React 的生命周期,新版旧版区别
- React 单项数据流如何理解
- 如何设计组件
- React memo
- React 无尽列表如何实现的
# 性能优化
- 浏览器的渲染原理
- 浏览器输入一个 url 的过程,以及过程用应用了哪些缓存,如何优化
- script 标签和 link 标签的先后顺序对页面加载的影响
- async 和 defer 的区别
# 计算机网络
- 三次握手四次挥手
- 跨域以及解决方案
- CORS 的细节,哪些是简单请求,哪些是复杂请求
- HTTPS?HTTP2?
- HTTP 报文的格式
# 算法
- 手写冒泡排序
- 给定两组数,分别以链表方式存储,求和
- 数组去重
- 微信红包是如何实现的
- 给定一组数,求和函数时代延迟的网络请求,如何在最快的时间内计算出这组数据的和
# 前端工程化
- webpack 如何拆分大文件
- webpack 的打包过程
- webpack 的基本配置
# 头条、蚂蚁金服
- 合并 k 个有序链表
- 求数独
- 二叉树的层序遍历
- 二叉树的锯齿形层序遍历
- 字符串翻转
- 重排链表
- 二叉树插入节点
- 二叉搜索树节点删除
- 链表翻转
- 接雨水
- 旋转有序数组的峰值数字
- 有序矩阵的第 k 小数字
- 编辑距离
- 二分查找
- 找出小于并且最接近目标数字的数
- 寻找旋转排序数组中的最小值
- 不同路径
- 两两交换链表中的节点
- 山脉数组的峰顶索引
- 盛最多水的容器