wxg 公众号 & 小程序前端一二面
一次很难忘的面试经历,第一次经历从操作系统到计网、算法、八股都这么深的面试,虽然挂掉了,但收获蛮大的,再战!
一面
算法
- 39. 组合总和 - 力扣(LeetCode)
- LRUCache,手写O(1),不准用Map Set
interface FileInfo { name: string; require?: FileInfo[]; } function getDepList(requireTree: FileInfo): string[]; // 应返回:['F.js', 'E.js', 'D.js', 'C.js', 'B.js', 'A.js', 'page.js'] const requireTree: FileInfo = { name: "page.js", require: [ { name: "A.js", require: [ { name: "C.js", require: [ { name: "F.js", }, ], }, ], }, { name: "B.js", require: [ { name: "D.js", require: [ { name: "F.js", }, ], }, { name: "E.js", require: [], }, ], }, ], }
实习经历
- 你说你用到了rspack,请你说一下rspack原理吧,对比webpack有什么优势
- rspack优秀的架构?解决问题的算法有了解过吗?(我:解决了一个死锁)
- 模型都是你自己跑的吗?
- 说一下TTI,计算原理,开始计算的起点(没答好,只说了起点是FCP)
八股
- 进程和线程的区别
- 栈内存和堆内存有什么区别,什么情况下用哪个?
- 浏览器有哪些进程?
- 重绘和回流说一下,如果用了css transform是重绘还是回流?
- 计算机网络缓存有哪些
- vue和react主要区别
- 在选技术栈的时候你会选react还是vue?
- 说一下微信小程序的双线程架构以及优势
- 怎么解决死锁的
二面
- rspack是怎么实现的?遇到过什么问题?rspack内置SWC压缩JS代码有问题,问题在哪?怎么解决?
- nodejs怎么和cpp/rust通信的
- 有了解过napi、node-addon吗?
- 说一下DLL和SO文件怎么实现的,node是怎么引入这些文件的
- 你说你用过字节的lynx框架中有遇到Android和IOS双端表现不一致的,你能解释一下为什么吗?
- 从渲染引擎出发,你说一下react native和flutter你了解多少?
- 对比lynx和react native以及flutter,你说一下lynx和flutter还是RN更像?
我:不知道,但是我可以猜一下,我在用抖音的时候发现评论区的水波纹只在安卓端有,IOS端没有,而flutter是可以保持双端一致的,所以我推测是和RN更像,用Flexbox + 原生组件去构建UI
- 了解过V8的JIT吗,不了解,说一下你自己的理解(我:从tailwind的JIT出发,说大概是补充编译时的缺陷)
- 问TTI怎么计算的(从FCP起点开始)
- FCP LCP LCP FP这些怎么算的?
- 页面很卡你怎么排除?
- 如果有一个动画很卡你会怎么做?(css3硬件加速(transform),脱离文档流)
- 你对vue、react怎么理解的
- 为什么说react不符合直觉而vue符合?
- 说一下vue原理?响应式原理是怎样的?你从源码中收获了什么?
- 分析一下快排的时间复杂度怎么算出来的?
- 了解过cpp虚函数吗?(不了解)
- cpp编译过程了解吗?
用gcc编译之后会生成一个out文件,然后可以直接执行它,也可以用objdump debug...,这里说错的,应该是GDB调试,objdump是看二进制文件的
- 了解过线程竞争吗?
- 多线程竞争安全吗?解决方法?(加锁,信号量)
- 你最近学的一个很酷的东西?
反问:
- 你们组做什么的(小程序运行时 & 渲染引擎)
- 对我有什么学习上的建议嘛
- 大概多久有结果
已挂