快递100全栈开发面试:三道笔试题加十分钟速通
- 轮次
- 面试
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
10.20 线下笔试
- 用伪代码实现读者-写者问题。
- 用伪代码实现防抖函数。
- 主观题:写一下你的 AI 使用经验。
10.21 面试
- 自我介绍。
- 几个后端八股(原帖未记录具体题目)。
- 你有前端经验吗?
《参考解析》
读者-写者问题考的是「读共享、写互斥」的同步设计。 最经典的解法用三个信号量:rw_mutex 保护「读者计数」这个共享变量,count_mutex 保护计数器本身,write_mutex 保证写者独占。读者进入时先锁计数器、第一个读者再锁写锁,退出时最后一个读者释放写锁;写者直接拿写锁。这样多个读者可以并发,写者与任何人互斥。需要主动说明代价:上面的写法是读者优先,写者可能饿死;要公平就再加一个「排队锁」或信号量,让后来的读者在写者等待时排在后面。面试时把「为什么需要两个 mutex」讲清楚,比背代码更加分。
防抖的核心是「延迟执行 + 重置计时器」。 基础版每次触发先 clearTimeout 再 setTimeout,只有最后一次触发后静默满 wait 毫秒才执行;要保留 this 和参数,用 fn.apply(this, args);要支持立即执行(leading)就加一个 immediate 标志,第一次触发立刻执行、后续在窗口内只重置计时器。工程上还要返回一个带 cancel() 的函数,组件卸载时能取消,否则定时器会持有闭包造成泄漏。伪代码写完后补一句「节流是固定频率执行、防抖是静默后执行」,把两个概念区分开。
笔试里的「AI 使用经验」不是让你写工具清单。 面试官想看的是你有没有把 AI 嵌进工作流:用它做什么(读陌生代码、生成单测、排查报错、写文档)、怎么验证结果(跑测试、review diff、小步提交)、踩过什么坑(幻觉 API、过度自信的修改)、以及哪些事不会交给它(涉及数据安全、核心链路的改动)。给一个具体例子,比列十个工具名有效。
「有没有前端经验」是全栈岗的硬门槛。 帖主回答没有之后面试十分钟就结束了,说明这个岗位要的是能独立接前端需求的人,而不是「后端为主、前端能看」。投全栈岗之前先看 JD 里的技术栈占比:如果前端写在必备项里,至少要有一个能讲清的项目(组件设计、状态管理、构建部署、性能优化各有一点),否则被速通是必然的。这也解释了为什么面试只问了几个后端八股就转向前端——八股只是确认基础,前端经验才是决定项。