面灵AI→

宇量昇 软件开发一面凉经:项目拷问与两道算法题

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. 自我介绍
  2. 在校拿过哪些奖学金、竞赛经历
  3. 拷问项目(通用:MySQL 在项目中作用是什么?MySQL 和 Redis 有什么区别?项目大致代码量多少?)
  4. 拷问实习(通用:实习期间遇到哪些技术难点?AI 在开发过程中效率提升怎么样?)
  5. 算法:爬楼梯
  6. 算法:数组元素包含正负零,统计数组中只出现一次的数字个数,要求尽可能快(内存不受限)

《参考解析》

  1. MySQL 与 Redis 的区别要落到使用场景:MySQL 是磁盘上的关系型数据库,支持事务、复杂查询与持久化,是数据的最终落点;Redis 是内存键值存储,读写快但容量受内存约束,适合缓存、计数、分布式锁、会话和排行榜。项目里常见分工是「MySQL 存业务事实,Redis 挡热点读、存临时态」,答的时候最好补一句一致性怎么处理——先更新数据库再删缓存(Cache-Aside),并对缓存失败做重试或延迟双删,而不是两个都写。

  2. 被追问项目代码量时怎么答:面试官问代码量往往是想判断你对项目的参与深度。直接报一个数字容易被继续追问「哪部分是你写的」,所以答法是给总量再拆比例和你负责的模块,顺带说清模块的复杂度来自哪里(多少张表、多少接口、有没有并发或异步)。数字要真实,说不清就说不清,硬编一个大概率的会被问穿。

  3. 实习技术难点按 STAR 讲:背景是什么问题(现象 + 影响面)、你的判断依据(日志、监控、复现)、做了哪几个方案、为什么选现在这个、最后指标变化。AI 提效这类问题也照这个结构答:别只说「效率提升了很多」,要给出具体环节(写单测、生成样板代码、排查报错)、量化方式(耗时对比、返工次数)和局限(生成代码必须自己审、复杂业务上下文给不全)。

  4. 爬楼梯是动态规划入门题:状态转移是 f(n) = f(n-1) + f(n-2),边界 f(1)=1、f(2)=2;空间可以压缩成两个变量滚动,做到 O(1) 空间、O(n) 时间。容易踩的坑是 n 较小时直接返回、以及大 n 时结果溢出要不要取模。变体(每次可走 1..m 阶、不能连续跳两阶)都可以用同一套递推思路推。

  5. 统计只出现一次的数字个数(内存不受限):内存放开之后最快的做法是用哈希表或计数数组统计频次再数 1 的个数,时间 O(n)、空间 O(n)。如果元素取值范围已知且不大,直接开一个计数数组更快;也可以用位图压缩空间。写完要主动补一句「如果内存受限怎么做」——排序后一遍扫描 O(n log n) 且 O(1) 额外空间,或者用异或只能处理「其他元素都出现两次」的特例,不能直接套用。主动分情况讨论,比写完就停更容易拿分。

  6. 这一场失利的启示:这场面试的反馈是算法答得不好、后续没有通知,而算法题只有两道、难度不高,说明真正拉开差距的是「讲清楚思路再写」。建议准备一个固定的口述模板:先说暴力解法与复杂度、再说优化方向、最后写代码并跑几个边界用例(空数组、全相同、含负数与零)。面试官在意的往往不是你几秒写出来,而是你有没有自己的推演过程。