上个季度做了 BMS 的 online assessment 和 live coding 轮,投的是 mid-level SWE 岗位。直接把我看到的情况写下来,因为我之前几乎找不到相关信息。
Online assessment(HackerRank): 90 分钟,2 道题。第一题中等难度:给一组带时间戳的用药剂量日志,找出给药间隔超出指定范围的患者。基本是 interval/sliding window 题,只是没这么标注。用 Python 没问题。第二题偏图:在药物相互作用依赖图里找 connected components。也是中等。没有 Leetcode-hard,也不算送分。
只有一次机会。不能重考。自己安排好。
Live coding(technical phone screen,Teams,45 分钟): 味道差不多:数据处理题,上面叠一层业务领域背景。他们给了个类似 CSV 的输入,让我解析、识别异常、输出清洗后的结果。我用 Python。他们看重:边界情况处理、代码清晰度、以及在动手前先问清楚问题。面试官还明确说,比起你去假设,他更想看到你先问问题。
Onsite coding 轮: 再来一道 45 分钟的 coding 题。这题更像 design + implementation 混合:设计一个简单的 scheduler,能跟踪带优先级和依赖关系的任务,然后实现核心逻辑。我用了 heap 和 adjacency list。他们允许我边想边说,也没怎么打断。
总共 coding 轮:3 轮。没有一轮像背题。每题里都出现了 domain context(制药、临床数据、调度),说实话还挺新鲜。只要基础扎实、能把思路讲清楚,不需要 Leetcode hard。
我注意到一点:每一轮都会问测试。不是「write a test(写一个测试)」,而是「how would you verify this works(你会怎么验证它是可用的)」。这个要提前准备答案。