记录前端知识体系的点点滴滴,能力有限,持续更新。
自己挖的坑自己填!从2020年4月底开始维护,希望和你一起进步。
- 移动端适配汇总
- 开发经验汇总
- 雪碧图实现
- 文本截断
- 边框画图
- 常见布局方案
输入 URL 后,都发生了什么?请从浏览器的视角分析进行分析?
单线程的 JavaScript,是如何处理复杂的 web 交互的?
- this 指向问题?
- 高阶函数之-compose函数
- 实现简单:全局单利模式
-
Promise - 实现各路api
-
async - 原理实现
Nodejs- 实现eventEmitter; (待写简要思路)
-
封装一个在线运行组件
-
封装一个表单验证吧
- 详细说说虚拟 DOM?
说说你对 global 以及 global.process 的理解?
- webpack 对静态资源的压缩与合并
css 和 js 阻塞页面渲染?你怎么理解?
有了解同构应用吗(SSR)?
- SSR 项目技术沉淀
缓慢更新中
| 出处 | Hint + 解 |
|---|---|
| Array.prototype.sort() | |
| 插入排序/选择排序/冒泡排序 | 基础排序汇总 |
| 快速排序 | 阮一峰老师 / 挡板思想 + swap |
| 归并排序 | 山里有座庙,庙里有个老和尚,旁边有个小和尚 |
| 三栈排序 | |
| 双栈排序 | |
| 88. 合并两个有序数组 | 归并排序,谁大移谁(三指针),注意合并逻辑条件 |
| 75. 颜色分类 | 利用挡板思想进行排序分类,典型🌈问题 |
| 面试题 16.16. 部分排序 | 两趟,一正一反确定边界 |
| 169. 多数元素 | 快速排序返回众数/hash计数 |
| TODO: | |
| 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ | 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ |
- 基础排序手写一遍重温思想,mergeSort重温
- 排序时间复杂度总结
- 栈排序
| Array.prototype.find()/findIndex()/indexOf() | |
|---|---|
| 704. 二分查找 | 相邻退出,进行后续处理 |
| base-在有重复的数组中返回第一个/最后一个元素 | 移动mid,直到加单退出 |
| LintCode:460. 在排序数组中找最接近的K个数 | 范围所缩小至加单,中心开花 |
| 74. 搜索二维矩阵 | map回矩阵:r = mid / col c = mid % col |
| 34. 在排序数组中查找元素的第一个和最后一个位置 | 找到元素,双指针左右移动 |
| 33. 搜索旋转排序数组 | 分割后,必定一半是有序 |
| TODO:378. 有序矩阵中第K小的元素 | |
| 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ | 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ |
| 出处 | Hint + 解 |
|---|---|
| 面试题03. 数组中重复的数字 | 哈希/quickSort |
| 1. 两数之和 | map |
| 11. 盛最多水的容器 | 双指针夹逼 |
| 283. 移动零 | 双指针 + swap (不为0一起动) |
| TODO:15. 三数之和 | |
| 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ | 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ |
| 出处 | Hint + 解: |
|---|---|
| 20. 有效的括号 | DOM 树如何维护层级关系?这题就怎么做.. |
| min stack? | |
| 双栈排序? | |
| 三栈排序? | |
| 实现队列? | |
| 矩形面积? | |
| 滑动窗口? | |
| 队列实现栈? | |
| 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ | 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ |
| 出处 | Hint + 解: |
|---|---|
| 二叉树的中序遍历,(后序,前序) | 在模拟后续实现思路时,注意剪枝这个 hack 操作 |
| 429. N 叉树的层序遍历 | 利用 children 接口很简单,如果限制只能 DFS 呢? |
| 110. 平衡二叉树 | |
| 101. 对称二叉树 | 左左 === 右右 && 左右 == 右左 👊 |
| 98. 验证二叉搜索树 | |
| 二叉搜索树减枝? | |
| 二叉树搜索区间? | |
| 958. 二叉树的完全性检验 | |
| 验证二叉搜索树 | |
| 二叉搜索树的最近公共祖先 | |
| 有序链表转换二叉搜索树 | |
| 面试题 07. 重建二叉树 | inorder\preorder 特点 + 分而治之 + sliceAPI |
| 面试题 26. 树的子结构 | 巧妙找到入口 + 精干的条件判断 |
| 面试题 27. 二叉树的镜像 | 画图找规律:swap 子树的值 |
| 面试题 32 - I. 从上到下打印二叉树 | 队列 |
| 面试题 32 - II. 从上到下打印二叉树 II | 队列 + 计数 |
| 面试题 32 - III. 从上到下打印二叉树 III | 画图找规律:reverse 输出/双栈思想 |
| 面试题 34. 二叉树中和为某一值的路径 | DFS + 回溯法 |
| 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ | 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ |
| 出处 | Hint + 解: |
|---|---|
| 70. 爬楼梯 | |
| 22. 括号生成 | 递归穷举后,添加限制条件(括号正确性判断) |
| 50. Pow(x, n) | 快速幂求值(注意数学边界),缩小问题规模(递归 |
| 78. 子集 | 01 问题,加或者不加,注意引用值问题 |
| 51. N 皇后 | |
| 322. 零钱兑换 | |
| 236. 二叉树的最近公共祖先 | |
| 105. 从前序与中序遍历序列构造二叉树 | |
| 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ | 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ |
| 出处 | Hint + 解: |
|---|---|
| 130. 被围绕的区域 | |
| K Smallest in Unsorted Array | |
| 200. 岛屿数量 | |
| 127. 单词接龙 | |
| 126. 单词接龙 II | |
| 515. 在每个树行中找最大值 | |
| 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ | 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ |
| 出处 | Hint + 解: |
|---|---|
| 70. 爬楼梯 | 一维 dp,线性回头看(斐波那契) |
| 55. 跳跃游戏 | |
| 45. 跳跃游戏 II | |
| 122. 买卖股票的最佳时机 II | |
| 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ | 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ |
| 数组 | |
| 面试题03. 数组中重复的数字 | 排序 +diff / hash +diff / 索引排序 |
| 03-fllow up: 287. 寻找重复数 | 数量二分法 |
| 链表 | |
| 面试题18. 删除链表的节点 | 思路: |
| 面试题22. 链表中倒数第k个节点 | 思路: |
| 面试题24. 反转链表 | 思路: |
| 面试题35. 复杂链表的复制 | |
| 面试题52. 两个链表的第一个公共节点 | |
| 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ | 〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️〰️ |
- 输入一个 url 会发生什么?
-
说说 HTTP 相关的代理有哪些?
-
Restful API 了解吗?你的最佳实践是什么?
- 说说你对websocket的理解?
- 他的应用领域有哪些?
- websocket的长连接知道吗?
-
和 TCP 的区别?
-
为什么DNS使用UDP协议?