2022.05.14
一面
自我介绍
单向链表输出倒数第 K 个元素 链表倒数第 k 个节点
看代码输出结果(考察变量、函数提升)
看代码输出结果(考察异步代码先后顺序)
手写 instanceof 关键字
手写 Promise
react 中为什么不能在 for 循环、if 语句里使用 hooks,说下 react hooks 实现原理。
因为 react hooks 依赖于函数调用顺序,如果在循环里面,函数调用顺序就会乱掉,所以不能在循环里面使用 hooks。 react hooks 实现原理:react hooks 通过闭包的方式,将状态保存在函数内部,通过函数调用顺序来保证状态的正确性。
说下 react fiber。
看你之前做过 RN 开发,说下 RN 的原理。
说下输入一个 url 地址的全过程。 从输入网址后发生了什么
http 的缓存策略。
说下 https,证书是如何校验的? 或者说 CA 证书里面有什么? HTTP 详解
说下 http2,你觉得阻碍 http2 发展的问题是什么?(这题后面的问题挺有意思,可以网上搜下答案)
算法题。跳格子问题,假设一次只能跳一个格子和两个格子,N 个格子有多少种跳法?
二面
自我介绍
为什么要离职?
对你的项目经历中 RN 做的 app 挺感兴趣的,你能详细说下这个项目吗?
RN 中原生和 js 端是如何通信的?你说后面使用 JSI 了,你能说下 JSI 的实现原理吗?
如果要你对这个 app 进行性能优化,你有哪些办法(面试官问了三次还有其他办法吗?)
代码层面,按照 react 的优化,减少 re-render 次数。图片加载用 react-native-fast-image,页面初始化的逻辑使用 InteractionManager.runAfterInteractions。去掉无用的 View 层。
进行分包加载,启动时只加载启动页面 bundle,二级及更深页面等访问到再加载。
一些复杂的控件,写原生模块,比如日期选择、下拉选择、级联、播放器等。
你们的 RN 热更新服务是怎么做的?热更新原理是什么?你们的热更新策略怎么做的?
客户端用的微软的 code-push,服务端用的 code-push-server。
热更新原理就是 app 每次启动会请求热更新服务器,对比下本地 bundle 版本和服务器的 bundle 版本,如果版本不一致,就会根据配置的更新策略下载、更新 bundle,然后重新 reload bundle。
我们就是在检查到新的 bundle 后,会弹窗强制更新。
设计一个 RN 热更新服务,需要考虑哪些地方?
你有什么要问我的吗?
js 模拟点击事件
css 实现内容不相同的左右两个 div 等高
table-cell
display: box
float 浮动相同
1.让 setState 连续更新的几个 hack
方法一: 常见的一种做法便是将一个回调函数传入 setState 方法中。即著名的函数式用法。这样能保证即便在更新被 batched 时,也能够访问到预期的 state 和 props
方法二: 另外一个常见的做法是需要在 setState 更新之后进行的逻辑, 封装到一个函数中,并做为第二个参数传给 setState。这段函数逻辑将会在更新后由 React 代理执行。即 setStat(updater, [callback])
方法三:把需要在 setState 更新之后进行的逻辑放在一个合适的生命周期 hook 函数中,比如 componentDidMount 或者 componentDidUpdate 也当然可以解决问题,也就是说 count 第一次 +1 之后,触发 componentDidUpdate 生命周期 hook,第二次 count +1 操作直接放在 componentDidUpdate 函数里面就好了
最后更新于
这有帮助吗?