Loading...
Loading...
时间:< 30min
感觉很奇怪,时间比较短,全程无八股无手撕,一直追问项目。
答:和一面不同,面试官没有自我介绍,也没开摄像头,反倒是我叽里咕噜说了一大堆。
答:主要讲了一下这个项目的灵感来源,结合自身经历说了一下兴趣方向,再说了一下在实际生活中有什么实用需求。
答:CRDT主要是受到一位大四学长之前项目经历的启发,同时了解了一下这个思想之后决定了要用它,同类型的产品了解过Figma,它虽然也是CRDT,但是技术栈是自己使用WASM+Rust实现的,没什么帮助,还了解了Yjs,但是后面选择不用Yjs的原因主要是适用场景有限,对项目整体的帮助不大,反而还会有部分理论上的性能开销。
答:自己搜集相关资料和查询文献+问AI+了解市面上已有的实现方案。
答:扯了一下这个项目的benchmark测试机制是如何实现的,主要讲的是全量渲染的性能检测口径+benchmark回归阈值的判定与自我调整,详情可以看Aevia测试系统的迭代史。
答:先是承认了一下现版本并没有实现这个功能,然后讲了一下预想中的实现方案:在线时客户端不断同步服务端的最新版本,断线后客户端缓存本地离线操作,重连后客户端根据最近版本获取服务端的增量数据,同时将本地缓存的操作发送给服务端,服务端转发给各客户端后,由它们各自进行合并、协调和重绘。
答:这个问题没答好,本质上是高并发的问题,但是因为我没有面对过这种场景,加上我也不是很专业的后端,所以能想到的措施有限,主要就是说了一下服务端削峰、主动同步客户端版本并及时补充丢失数据,以及和客户端减小网络传输的体积,比如减少不必要的数据、对数据进行压缩和二进制传输之类的。
面试结束后仔细想了一下,其实还可以降低高频网络请求的往返频率(节流),同时缓存和合并一些高频小操作进行统一处理(批处理),然后服务端可以横向扩展,并使用Redis进行相互通信(分布式),同时还要做好降级和熔断策略等等,看来以后要多想一想这方面的问题了。
主要反问了一下实习生工作、部门结构、对AI时代前后端的看法、组内想要拥有什么样的能力的人,但是面试官应该是有其它别的什么事,所以反问给出的答复都比较简略,加上这场面试的时间太短了,想不到有什么问题要问的,于是就很快结束了。
整体的节奏很紧凑,面试官没开摄像头,基本都是问我项目怎么设计、怎么实现的,还有几个比较经典的场景问题,问完之后直接就让我反问了,反问阶段更奇怪,我询问实习生要负责什么业务以及部门结构时,面试官直接说这个产品在内部还属于保密阶段,不方便告知,但一面面试官反而说了更多东西(至少说了一下大概业务是做什么的),我也没问二面面试官具体是什么职级,不知道这是什么原因。
反正总体面下来,感觉远不如一面那么愉快和热情,面试官的反应也比较平淡,并且由于没开摄像头,我也不知道他对我的回答有什么反应,反正我自我感觉后面几个场景题回答的比较凑合,不能说很好,但是后续反思的时候也感觉到还是有些没考虑到的地方。
后续:挂了