fe-interview-handwrite
fe-interview-handwrite copied to clipboard
📖 前端面试常见手写题整理
前端面试手写题
整理前端面试常见的手写题,面试出现概率极高,建议每个都过自己过一遍。
你也可以提交 PR,提供你面试遇到的题目。
代码汇总请参照 SUMMARY.md 。
高频:★★★ 中频:★★ 低频:★
JavaScript 原理
- 实现 bind() ★★
- 实现 apply() ★★
- 实现 call() ★★
- 实现 instanceof ★
- 实现 new ★
- 实现 jsonp ★★★
- 实现 Promise ★★★
- 实现 Promise.all() ★★★
- 实现 Promise.race() ★
- 实现 Proxy ★★
- 实现 EventEmitter 订阅监听模式 ★★
- setTimout 实现 setInterval ★
- 深拷贝 ★★★
函数
- 函数防抖 ★★★
- 函数节流 ★★★
- 函数柯里化(实现
sum(1,2)(3)()) ★★★ - compose 函数 ★★
- before 函数 ★
数组
- 数组拍平 ★★★
- 数组去重 ★★★
- 数组转对象 ★
字符串
- 去除字符串首尾空格 ★
- 下划线驼峰互转 ★
数学
- 计算圆周率 ★
算法
算法需要掌握基本的数据结构,例如栈、队列、链表、树、排序算法等等,建议去 LeetCode 上刷题。不过不要为了刷题而刷题,最重要的是归纳与总结,刷十道不如一道刷十遍。
- 归并排序 ★★
- 插入排序 ★
- 快速排序 ★★★
- 选择排序 ★
- 希尔排序 ★
- 堆排序 ★
- 二分查找 ★
- 最长递增子序列 ★★★
- 最长公共子串 ★★
- 城市数据找父节点 ★
- 查找缺失的数 ★
分享一下自己整理的 LeetCode 上必刷的题,比较具有代表性。
- [ ] LeetCode 001 Two Sum
- [ ] LeetCode 015 3Sum(可能会问 LeetCode18.4Sum思路)
- [ ] LeetCode 020 Valid Parentheses
- [ ] LeetCode 021 Merge Two Sorted Lists
- [ ] LeetCode 025 Reverse Nodes in k-group
- [ ] LeetCode 053 Maximum Subarra
- [ ] LeetCode 066 Plus One(等介于:高精度加加法)
- [ ] LeetCode 098 Validate Binary Search Tree
- [ ] LeetCode 110 Balanced Binary Tree
- [ ] LeetCode 134 Gas Station
- [ ] LeetCode 136 Single Number
- [ ] LeetCode 137 Single Number II
- [ ] LeetCode 146 LRU Cache(变形题:带有过期时间的LRU缓存)(Map + 链表)
- [ ] LeetCode 206 Reverse Linked List(递归、迭代)
- [ ] LeetCode 215 Kth Largest Element in an Array(等价于:快速排序)
- [ ] LeetCode 232 Implement Queue using Stacks(每次将新来的元素放到栈底,stack.push())
- [ ] LeetCode 328 Odd Even Linked List
- [ ] LeetCode 415 Add Strings(等价于:大数加法)
- [ ] LeetCode 470 rand70rand100
- [ ] LeetCode 496 Next Greater Element I(时间复杂度O(n)(单调栈,使用 Map 映射 stack 的指定位置)
- [ ] LeetCode 716 Max Stack(两个栈实现最大栈,要求pop,push, get max都为0(1)
- [ ] LeetCode 860 Lemonade Change