极兔 软件开发笔试复盘:10 单选 8 多选与两道编程题
- 轮次
- 笔试
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
笔试
- 单选题 10 道:二叉树排序、栈的出栈顺序、HashMap 线性探测散列等基础知识,另有少量 Java 与 SQL 概念题
- 多选题 8 道
- 编程题一:统计点赞数量
- 编程题二:银行转账(考察预防死锁与 synchronized 加锁)
《参考解析》
-
银行转账题的考点是加锁顺序与死锁预防:最直接的死法是两个线程互相等对方持有的账户锁。标准解法有三种——按账户 ID 大小统一加锁顺序(最简单也最常用)、用
tryLock带超时并在失败时回退重试、或者把两个账户的余额变更收敛到一次有序的批量更新里。用synchronized时锁对象必须是被转账的账户实例本身,而不是方法所在的类或字符串常量;答完记得补一句事务与幂等——真实系统里转账还要处理失败重试不重复扣款。 -
统计点赞数量看似简单,面试官想看的是并发意识:单线程场景直接自增即可;一旦有并发,
count++不是原子操作,要用AtomicLong、LongAdder(写多读多时更优)或数据库侧的update ... set cnt = cnt + 1。如果再往下问,可以聊去重(同一用户重复点赞)、计数与明细的一致性(计数缓存与落库的补偿),这几句能把题从「会不会写」拉到「懂不懂线上」。 -
HashMap 与线性探测别混为一谈:线性探测是哈希冲突的开放定址解法——冲突时顺次找下一个空槽,删除要靠标记而不能直接清空。JDK 的
HashMap用的是链地址法(同槽挂链表,链表过长转红黑树),不是线性探测;ThreadLocalMap用的才是开放定址。选择题遇到这类考点,先判断题干说的是一般哈希表还是 JDK 实现。 -
基础选择题的备考范围很明确:二叉树(排序、遍历、性质计算)、栈与队列的出栈顺序、哈希冲突处理、Java 语法与集合、SQL 的查询与约束概念,这些都是书本知识,靠刷题和过一遍教材就能拿分。遇到「出栈顺序是否合法」这类题,用手动模拟栈进出比记结论更快。
-
社招与校招的卷面差异要有预期:同一家公司不同批次的笔试难度会不一样,社招批次有时会砍掉算法题、加重基础与场景题。看到卷面简单不要松懈,把多选当作主要的失分点来对待——多选通常错一个选项就整题不计分,模棱两可的选项要么有明确依据要么不选。