发现shopee今年还是挺火的,招的人也挺多,但是面经很少,所以记录一波,有需要的看下。
一面(视频面)
1.自我介绍
2.单向链表输出倒数第K个元素
3.看代码输出结果(考察变量、函数提升)
4.看代码输出结果(考察异步代码先后顺序)
5.手写instanceof关键字
6.手写Promise
6. react中为什么不能在for循环、if语句里使用hooks,说下react hooks实现原理。
8.说下react fiber。
9.看你之前做过RN开发,说下RN的原理。
10.说下输入一个url地址的全过程。
11. http的缓存策略。
12.说下https,证书是如何校验的?
13.说下http2,你觉得阻碍http2发展的问题是什么?(这题后面的问题挺有意思,可以网上搜下答案)
14.算法题。跳格子问题,假设一次只能跳一个格子和两个格子,N个格子有多少种跳法?
二面(leader面)
1.自我介绍
2.为什么要离职?
3.对你的项目经历中RN做的app挺感兴趣的,你能详细说下这个项目吗?
4. RN中原生和js端是如何通信的?你说后面使用JSI了,你能说下JSI的实现原理吗?
5.如果要你对这个app进行性能优化,你有哪些办法(面试官问了三次还有其他办法吗?)
代码层面,按照react的优化,减少re-render次数。图片加载用react-native-fast-image,页面初始化的逻辑使用InteractionManager.runAfterInteractions。去掉无用的View层。
进行分包加载,启动时只加载启动页面bundle,二级及更深页面等访问到再加载。
一些复杂的控件,写原生模块,比如日期选择、下拉选择、级联、播放器等。
6.你们的RN热更新服务是怎么做的?热更新原理是什么?你们的热更新策略怎么做的?
客户端用的微软的code-push,服务端用的code-push-server。
热更新原理就是app每次启动会请求热更新服务器,对比下本地bundle版本和服务器的bundle版本,如果版本不一致,就会根据配置的更新策略下载、更新bundle,然后重新reload bundle。
我们就是在检查到新的bundle后,会弹窗强制更新。
7.设计一个RN热更新服务,需要考虑哪些地方?
bundle体积大的问题。打包的时候需要进行分包,使用增量更新,减少下载体积。
用户的网络不稳定、网速差问题。需要用CDN加速,支持断点续传。
安全性问题。
bundle被中间人劫持篡改。使用https下载,并按照https的加密思路,对bundle用hash算法进行签名,然后app端检验签名是否被篡改。
bundle下载地址被暴力攻击。检查User-Agent,只允许手机设备下载,记录设备id,在一定时间内限制下载次数。
8.你有什么要问我的吗?
就一些简单的问题,这里就不说了。到hr面,基本都能过。
总结
整体难度一般,一面没有区分度,感觉一年经验和五年经验都是一样的。二面不错,对项目进行了深挖,考察了架构设计。问的问题偏向于RN,最后进来也是做C端的RN开发。
在shopee的工作体验确实轻松,不卷,但是过于轻松,又担心自己的产出。差不多就这样吧。大家自己看一看我写的面经,或许有所帮助吧。
全部评论
(5) 回帖