腾讯秋招一面
- 自我介绍。
- 低代码平台面向特定场景还是通用场景?
- 特定场景向通用场景重构,有哪些能力是可以借鉴或者复用的?
- 组件一般跟 UI 框架的结合比较密切,怎么实现复用?
- 对于生成出来的页面以及相关配置,如何存储和解析恢复?
- 你的 UI 能做到恢复,那逻辑能力怎么嵌入?比如,问卷 Input 值的校验?
- 常见的数据结构,以及各自的实现方法?
- 为什么 Fiber 要在树里加上双向链表?对树也是可以做递归,那为什么要用链表?
- B 树和 B+ 树?
- 设计一种数据结构,能够快速遍历一颗完全二叉树的叶子节点。
- Hash Map 的底层原理?
- Hash 冲突的前置概念是什么?为什么会有冲突?
- 为什么需要有 Hash 函数?而不是直接利用数据本身来做 key?
- 通过什么指标,可以判断一个哈希函数的冲突的多与少?有什么解决或者改善冲突的办法?
- 线程和进程的区别?
- 浏览器一个 tab 是一个进程还是一个线程?判断的依据是什么?
- React 常用的 Hook 有哪些?各自的用法是什么呢?
- useCallback/useMemo 的根本目的?
- useReducer 和状态管理库有一定相似性,那是不是可以用 useReducer 来代替状态管理库的使用?或者,考虑代码封装,利用自定义 Hook 来代替状态管理库的使用?
- Hooks 不能在回调、循环、分支语句中使用,这是出于什么考虑?
- Key 的存在是为了什么?面向的目标是 VNode 还是 DOM?
- 你知道原地复用吗?
- 讲一下 Promise 使用场景和基本用法?
- async 具体怎么使用?
- 改写 Image 的加载逻辑,如何实现?
- 初始化 Promise 时传入的函数,本身就报错了,那会怎么样?比如,浏览器里不存在 Promise?
- 怎么判断一个对象是否是 Promise 实例?不通过 instanceof 判断,那怎么判断?
- 手写 Promise 的实现,最复杂的地方在哪里?
- then 方法会返回什么?返回的 Promise 是原来的吗?then 里抛出的错误会被之后的 catch 捕获吗?
- 讲一下 Web 会用到的一些设计模式,以及在哪些地方用到?不要说设计模式在框架里的应用,比如 Vue-watch 的观察者模式。
- 为什么当初用 MutationObserver 模拟微任务的执行?
- 平常在代码层面投入的时间多吗?大多数是为了学习的课程还是兴趣,或者其他原因?
- 到目前为止,有落地比较成熟、自己会使用的一些项目工具吗?
- 「反问」业务、技术栈、增长情况、团队规模。
