面经 | Engineering New Analyst | 🔥🔥 | Goldman Sachs Bellevue
2027 NG 全职 @ Goldman Sachs Bellevue Engineering - 官网海投 - HackerRank + Superday | 🙂 Positive | Medium | Pending
投的是 Bellevue 新开的 Engineering office。
一开始看到他们一直在讲 AI / cloud transformation,我还以为面试会有很多 AI infra 或 ML 的东西,实际没有。整体还是很传统的软件工程面试,coding、database、项目和 BQ 都有。
前面是 HackerRank 和 video interview,后面进 Superday。Superday 我是 3 轮。
HackerRank
两道 coding。
第一题
Meeting Rooms 那一类。
给一堆 meeting interval,先问有没有 overlap,后面让求最少需要几个 meeting room。
我直接用了 min heap。
这题本身不难,写完以后有几个 testcase,主要就是注意 interval 边界。
第二题
Graph,具体题面我有点记不清了,最后是 topological sort。
第一问就是 BFS + indegree,写完以后 follow-up 问:
如果要输出所有可能的 topological order 怎么办?
这个我当时没有完整写,只说了 DFS / backtracking,每次从当前所有 indegree 为 0 的点里面选一个继续往下。
HackerRank 整体比我想象中正常,没有什么特别 Goldman-specific 的题。
Superday Round 1 — Coding
这一轮面试官挺 friendly 的,前面简单聊了五分钟简历,然后开始 coding。
题就是 LRU Cache。
让我实现 get 和 put,要求 O(1)。
这个算比较熟,我用了 hashmap + doubly linked list。
写完以后 interviewer 看了下,又问了一句:
如果有多个 thread 同时读写这个 cache 怎么办?
我第一反应说加 read/write lock。
然后他问:
get 真的是 read 吗?
这里我卡了一下,因为 LRU 的 get 虽然没有改 value,但是会把 node 移到最前面,其实还是会修改 linked list。
后面就聊了一会儿 locking。
我一开始讲得有点复杂,想拆 read lock / write lock,后面发现对这个实现来说很多操作其实都会改 recency,最后说如果先保证 correctness,用一个 mutex 反而更直接。
这一轮大概就这一道题,没有再塞第二道 LC。
感觉面试官更在意代码是不是 clean,还有你知不知道自己的 data structure 在 concurrency 下哪里会出问题。
Superday Round 2 — Backend / Database
这一轮没有让我设计一个特别大的系统。
题目是 flight ticket booking。
大概先让我从用户搜 flight、选票、付款到 booking 成功走一遍。
我刚开始还在讲 service 怎么拆,interviewer 很快就把话题拉到 database。
Index
先问:What indexes to build?
比如用户一般会按 origin / destination / date 查航班,那 index 怎么建。
聊完以后又问了一点 B-tree,不过没有深挖特别久,大概就是为什么 database index 常用 B/B+ tree、查找怎么走。
Double booking
后面问得最久的是:How to avoid double booking?
假设最后只剩一个 seat,两个人同时点进来。
我先说 transaction,然后他马上问:
两个人都已经 read 到 available 了呢?
这里就开始聊 row lock、optimistic locking、conditional update。
后面我提到可以先 hold seat 一小段时间。
他又问如果 payment 很慢,seat hold 已经过期,但是 payment callback 后面又成功了怎么办。
这个地方我答得不是特别顺。
我大概说 booking 和 payment 应该有各自的 state,不能因为 payment success 就直接认为 booking success。如果 seat 已经 release,可能要走 refund / compensation。
Retry
最后还有一个 retry 的问题。
client timeout 以后重新发 booking request,怎么避免重复创建。
这里就是 idempotency key。
这一轮我觉得是三轮里面最难的,因为一开始题看起来很普通,但一直往 transaction / concurrency 里面追。
Superday Round 3 — Project + BQ
最后一轮基本没写代码。
先让我挑一个过去的 project 讲。
我的项目里提到了 Kafka,所以 interviewer 顺着问了一点:Kafka partition 怎么分、consumer group 是什么、什么时候会 rebalance。
有一个问题我记得比较清楚:consumer 已经处理完 message,但是还没 commit offset 就挂了,会怎么样?
我说 message 会重新被消费,所以 downstream 最好自己保证 idempotent。
他没有继续往 Kafka internals 深挖,后面就转 BQ 了。
这轮有个问题我觉得挺符合 Bellevue 这个新 office 的方向:平时有没有用 GenAI 提效?
我讲了自己用 AI 帮忙读 code / 写 test / 整理一些 repetitive work。
然后他不是听完就过了,还继续问:你怎么确认 AI 生成的东西是对的?
我说至少 production code 不会直接拿生成结果就 merge,还是靠 tests、review,还有自己确认重要的 edge case。
之后就是比较正常的 BQ。
问了 tight deadline 怎么排 priority,还有一次和 manager / teammate 意见不一致是怎么处理的。
我那个 disagreement 的故事准备过,所以还算顺。
反而 GenAI 那一段我之前没有专门准备,讲得比较散。
最后问 Why Goldman / Why Bellevue。
我没有硬讲自己多喜欢 finance,主要说 Bellevue 这边是新的 engineering hub,而且明显在扩 cloud / AI engineering,这一点跟我想做的方向比较接近。
整体
整体比我预期正常很多。
没有因为 Bellevue office 主打 AI / cloud 就突然考一堆模型原理。
Coding 就是常见题,database 那一轮最容易被追。
我觉得比较需要准备的是:LRU 这种题除了能写出来,最好顺手想一下 concurrency;system design 不一定要背很大的 architecture,transaction / index / locking 这些基础反而很容易一直往下问。
BQ 也不是只把 STAR 背完就行。
比如我说用了 GenAI,他马上就问怎么 validate;说和 teammate disagreement,也会追最后到底是谁决定、结果怎么样。
现在还在等结果。