JavaScript面试题目搜集

319 阅读2分钟
  1. 合并两个数组的方法
  2. 合并两个对象的方法
  3. 求字符串数组最长公共前缀,如输入: ['flo', 'flower', 'flight'],输出: 'fl'
  4. 获取精度较高的时间
  5. 获取首屏时间
  6. 手写深拷贝
  7. 如何实现正则的深拷贝
  8. 介绍原型鸡生蛋、蛋生鸡问题
  9. 模拟实现 Array.prototype.splice
  10. 节流实现
  11. 解析url中的query参数
  12. jsonp的代码实现(遇到并发很多请求,window下变量覆盖问题怎么处理)
  13. es module 和 commonjs 的区别,以及异步加载模块的方案(AMD/CMD)和模块化发展历程
  14. 写 new 的执行过程
  15. 写一个处理加法可能产生精度的函数,比如 0.1 + 0.2 = 0.3
  16. 写一个 es6 的继承过程
  17. 写一个大数相乘的解决方案。传两个字符串进来,返回一个字符串
  18. 写一个防抖函数
  19. 闭包的理解
  20. 面向对象理解
  21. 函数式编程理解
  22. 斐波那契数列?怎么优化?
  23. 从数组中找出三数之和为n
  24. 二分查找的时间复杂度怎么求?
  25. null和undefined的区别
  26. 冒泡排序算法和数组去重
  27. 描述一下Promise
  28. Promise.all中如果有一个抛出异常了会如何处理
  29. Promise为什么能链式调用
  30. 实现一个Promise
  31. 描述一下EventLoop的过程
  32. 冒泡和捕获的具体过程
  33. 所有的事件都有冒泡吗?
  34. 描述下原型链
  35. typeof和instanceof的区别,并实现instanceof
  36. typeof null === 'object'为什么等于true
  37. 对this的理解
  38. apply/call/bind的相同和不同,并实现
  39. setTimeout的原理,与requestAnimationFrame有什么区别
  40. ['1', '2', '3'].map(parseInt) what & why ?
  41. 介绍下 Set、Map、WeakSet 和 WeakMap 的区别?
  42. ES5/ES6 的继承除了写法以外还有什么区别?
  43. Object.prototype.toString.call() instanceof Array.isArray()这三种判断数组类型的方法的优劣
  44. a.b.c.da['b']['c']['d'],哪个性能更高?
  45. ES6 代码转成 ES5 代码的实现思路是什么
  46. 为什么普通 for 循环的性能远远高于 forEach 的性能,请解释其中的原因。
  47. 数组里面有10万个数据,取第一个元素和第10万个元素的时间相差多少
  48. var、let 和 const 区别的实现原理是什么
  49. setTimeout、Promise、Async/Await 的区别
  50. Async/Await 如何通过同步的方式实现异步
  51. JS 异步解决方案的发展历程以及优缺点
  52. Promise 构造函数是同步执行还是异步执行,那么 then 方法呢?

ps: 仅收集题目,答案自行搜索。

部分题目的答案在我的github中有笔记,有兴趣的可以看看: github.com/jjaimm/fron…

来源: