# 腾讯文档

# 一面

  • 算法:用js实现随机选取1-100之间的5个数字,存入一个数组,并使用快速排序,不允许重复

  • 算法:用函数实现,给定一个数组,元素都是正整数,要求返回这些元素组成的最大数。例如:[7,5,52,3]则返回75523

  • 算法:

    • 有[1,2,3,4,5,6,7,8,9,10]的数组,要求实现一个函数:

      1,数字1在1秒后输出

      2,数字2在数字1输出后的2秒后输出

      3,数字3在数字2输出后的3秒后输出

      以此类推。

      要求至少用2种方式实现

  • 解释 React 的 Fiber 架构

# 二面

  • 解释你在项目中用 webpack 做过的内容
  • 大学学过的课程
  • 如何评价一个算法的优劣
  • 快速排序的时间复杂度是多少,最优是多少,最差是多少?什么情况下会最优,什么情况下会最差
  • 冒泡排序的时间复杂度是多少
  • 链表和数组的区别
  • 二叉树了解吗?什么是平衡二叉树?什么是满二叉树、完全二叉树?什么是红黑树?
  • 二分查找是什么,以及如何实现二分查找
  • 网络的 7 层模型
  • HTTP 各版本区别
  • HTTP 请求头中包含了什么;
  • TCP 连接和 UDP 连接的区别
  • 解释一下线程、进程?以及操作系统中各个进程之间是如何进行通信的;
  • JS 实现异步编程的方式有哪些?
  • 解释一下面向对象编程;
  • 如何理解面向对象中的多态;
  • 开发中用到了哪些设计模式;
  • TS 的数据类型有哪些;
  • 有没有做过 IE 的兼容;IE 兼容 ES6 吗?兼容 ES5 吗?
  • 一万转成二进制有几位数;
  • 实现题:获取当前浏览器userAgent,并将它转成base64,返回出现最多的字母