前端面试手写题

前端面试手写题

整理前端面试常见的手写题,面试出现概率高,建议每个都过自己过一遍。

你也可以提交 PR,提供你面试遇到的题目。

高频:★★★
中频:★★
低频:★

JavaScript 原理

  • 实现 bind() ★★
  • 实现 apply() ★★
  • 实现 call() ★★
  • 实现 instanceof ★
  • 实现 new ★
  • 实现 jsonp ★★★
  • 实现 Promise ★★★
  • 实现 Promise.all() ★★★
  • 实现 Promise.race() ★
  • 实现 EventEmitter 订阅监听模式 ★★
  • setTimout 实现 setInterval ★
  • 深拷贝 ★★★

函数

  • 函数防抖 ★★★
  • 函数节流 ★★★
  • 函数柯里化(实现 sum(1,2)(3)()) ★★★

数组

  • 数组拍平 ★★★
  • 数组去重 ★★★

字符串

  • 去除字符串首尾空格 ★

算法

算法需要掌握基本的数据结构,例如栈、队列、链表、树、排序算法等等,建议去 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

你可能感兴趣的:(JavaScript,面经,javascript)