2024最新面经-面了个88W的小红书全栈

96 阅读5分钟

前段时间收到猎头邀请去面试小红书,这个方向是一个5-10年全栈的Infra岗位,薪资范围 30-55k*16,负责内部运维平台的开发和内部前端框架的基础建设,需要前端跨端技术、基础架构能力和工程化能力。

一面

我做个人 比较关注CICD和跨端开发的方向 问题:Q:你是怎么优化性能的?A:因为我做全栈,所以前后数据库性能方向我都有涉猎。前端基于DevTools观察Performance,根据火焰图重点优化。主要思路有资源压缩与合并,比如用雪碧图,合并JS。使用CDN规划加载顺序,比如优先加载首屏资源,异步加载其它资源,使用虚拟列表等。利用浏览器缓存,比如Redux/Local Storage/Session Storage/等. 减少重排重绘。Q:等一下,不用说那么多思路,说说实际业务中你做了什么来优化性能?A:前端主要是减少重排重绘,将对Element resize的方法合并到一起。还有利用缓存,把父级页面和公用的内容存到缓存里,避免多次请求。后端是用DotTrace定位性能问题点,然后清理冗余代码,并将一个多层嵌套的对象赋值从new改为用AutoMapper实现。Q:你说说React是怎么重排重绘的?A:React会创建一个Virtual DOM树,merge所有修改之后和上一个树做diff, 只改动不同的部分,来做最小更新。Q:你对diff算法有什么 A:同层比较,如果一个DOM改变了层级、类型,将销毁并直接重新创建该节点;每个节点都有一个key唯一对应。Q:你对跨端开发有理解吗?A:有,做过Electron开发,是Windows和MacOS上的跨端框架,它是基于Chromium内核+NodeJS引擎,所以我们可以用传统前端方式开发客户端,用NodeJS+IPC实现客户端内部操作。我在做技术选型选择Electron的时候还考虑了Tauri, 虽然Tauri有体积小,高性能的优势,但基于我们团队技术栈的考虑,我们没有会Rust的人,所以选用Electron。而且在当时Tauri才方兴未艾,Electron的社群相对完善一点。Q:Mobile方向呢,你会怎么设计架构?A:我做过小程序,小程序开发就用Uniapp,但是微信开发者框架非常差劲,很多坑需要解决。要做正经的iOS和Android项目,建议用Flutter,也会是未来的趋势。Q:你有用Flutter做过哪些项目?A:我没有做过Flutter的项目经历,但是对Flutter有一些技术选型上的理解,比如Flutter是Google开发的Moblie框架,主要解决传统框架例如React Native、Swift的问题。Q:Flutter可以替代Web开发吗?A:这个问题取决于我们的需求和成本:我们的需求主要是Mobile, Web只是顺带;还是Mobile和Web两手抓两手都要硬。前者是开发Flutter的同时顺带支持web,那么Flutter是可以做的,它用的是CanvasKit,用一个Element做容器渲染图层;但是对于浏览器的功能支持就没那么良好。如果我们希望对浏览器支持足够好,那么还是应该用react 、vue等传统web框架。Q:那你知道Flutter是怎么实现跨端的吗?A:这个问题有点大,能不能给点提示,想问哪个方面?Q:比如Flutter用了什么引擎?A:用了Dart语言的引擎,加Skia渲染库。(这个了解的不是很多,没了解得更加深入)

Q:好,我这边大致上了解了,你对我们这边有什么想问的问题吗?A:进来后我会加入什么Team?可能会被分配到做什么Project? Q:我们这个岗位主要负责内部运维平台的开发和内部前端框架的基础建设。项目方向包括lint配置,CI 性能调优,小红书移动端跨端体系性能表现,打开页面,加载耗时。Devtools工具建设,打通客户端+前端的trace日志,内存监控并展现,前端火焰图,客户端内存耗时任务的火焰图,工程上的业务编译发布构建、包的管理和发布,更新等。A:请问工作时间是?Q:早上10点-9/10点。

面试的时候已经是晚上7点了,而且面试之后面试官还要去做别的事,看起来小红书真的很卷,钱怕是有命挣没命花啊 ┭┮﹏┭┮

岗位简介

要求5-10年全栈经验,薪资范围 30-55k*16,工作时间10点-9/10点

工作职责

1、负责小红书 app 跨端容器能力建设,包括:ReactNative容器、native DSL 和 Web 容器的基础建设;2、负责跨端工程能力建设,包括:脚手架、调试工具、研发框架、运维平台等;3、推进跨端容器基础能力和架构演进,保证整体工程健壮性,满足业务持续迭代需求;4、需要持续关注业界前沿技术,实践落地业务场景,保证小红书基础能力处于业内前沿水平;5、需要承担重点、难点的技术攻坚,为团队完善技术沉淀。

任职资格

1、计算机相关专业,本科及以上学历,3年以上大前端方向开发经验;2、精通主流前端框架,熟悉设计模式,对 Vue/React/Angular/ReactNative/Flutter/iOS/Android 等 UI 框架有个人独特的见解;3、深入了解前端工程化及原理,具备良好的架构设计和工程设计能力;4、熟悉 Python 或 NodeJS 开发,熟悉数据库⼀些常⽤操作,以及前后端交互的架构体系。5、深入了解跨端技术的原理,对于 RN、native DSL 和 Web 的底层原理有比较好的了解;6、良好的团队沟通与协作能力;有项目、团队管理经验优先。