虾皮一面|前端|2026.1.6下午17:00--18:00
虾皮一面详细面经
本次虾皮一面以“自我介绍+项目深挖+技术细节提问+现场编程+校招沟通”为主线,核心围绕简历中的核心项目、前端底层原理展开,整体难度偏实战,注重技术落地细节,以下是完整面经梳理:
一、面试开场
面试官先明确了本次面试的四大模块:自我介绍、项目细节提问、基础技术点考察、双向问答。我完成自我介绍后,面试官立刻聚焦简历中的第一个核心项目(笔记项目)展开深度追问。
二、核心项目1:笔记项目(重点追问模块)
1. 语义检索与离线缓存
- 向量检索相关:面试官重点问语义检索的实现逻辑,核心追问“向量如何实现语义匹配”,以及余弦距离、欧氏距离的概念(我对这两个距离概念仅能简单作答,细节掌握不足);
- 缓存存储介质:简历中写了使用indexDB做离线缓存,但面试官提及测试时看到缓存实际存在localStorage,我如实说明实际落地是localStorage,面试官指出简历表述与实际不符的问题;
- 离线缓存边界:追问“离线文本大于5MB时的处理方案”,我因忘记具体处理逻辑,未能清晰作答;
- 协同冲突处理:询问“网络恢复后,离线数据同步到后端的冲突解决方式”,我表示未做过相关处理;面试官补充这是“协同模式下的冲突”,并提及CRDT算法,要求我讲解该算法的实现逻辑(举例“两个文档内容合并后保证一致性”),我的回答未达到面试官预期。
2. 缓存策略与缓存问题
- 三级缓存策略:面试官让我简述项目中的三级缓存策略,我说明实际落地的是“前端两级(10秒、30秒)+ 后端一级(300秒)”的架构;追问“笔记更新后,缓存是等待过期还是主动处理”,我回答“会主动删除旧缓存,请求数据库更新数据”;
- 缓存击穿:提问“高并发场景下的缓存击穿问题(第一个请求查库,其余请求排队,第一个请求拿到数据写入redis后,其他请求从redis取数)”,我按自己的理解完成作答。
3. 协同架构与WebSocket
- 架构重构:面试官提及简历中的“重构协同架构”,但我当时未梳理清重构逻辑,无法详细作答;
- WebSocket协同:
三、核心项目2:vue3pdf阅读器项目
面试官围绕该项目的核心技术点提问,部分问题因表述问题未完全听懂,核心提问方向:
- 虚拟滚动算法的实现逻辑;
- 内存泄露问题的解决方法;
- 高清适配的实现方式;
- Web Worker处理大文件:询问“几百兆PDF传入Web Worker时,超出处理范围的解决方案”,我因未听懂问题仅被动回应,面试官见我未理解便跳过该问题。
四、现场编程(事件循环/宏微任务)
面试官询问完项目后,切入实习相关话题,随即现场出了一道宏任务/微任务(事件循环) 的代码题(属于技术校验类题目)。我完成代码作答后,面试官指出我的答案“偏底层细节,未抓核心逻辑”,并建议我后续补充事件循环模块的知识。
五、校招相关沟通与面试收尾
- 业务方向:面试官询问我校招期望的业务方向,提及初期会做平台类任务、开发端相关工作,可能涉及hotnote,核心技术栈为React;
- 后续流程:告知接下来可能会有广告投放相关的技术面,最后是HR面,本次技术面至此结束。
六、面试复盘
- 薄弱点:对CRDT算法、事件循环核心逻辑、Web Worker处理大文件等底层原理掌握不深,部分项目细节(如离线缓存边界处理)记忆模糊;
- 注意点:简历中的技术点需与实际落地一致(如indexDB/localStorage),避免表述偏差;
- 建议:后续需重点补充事件循环、协同冲突处理、大文件处理等知识点,梳理项目中的技术细节,形成完整的落地逻辑。
查看7道真题和解析