我在 3 月走完了 CrowdStrike 的 ML engineer 面试全流程。岗位在他们的 AI/ML 团队,做的是威胁检测模型,不是 NLP,不是推荐系统。属于安全方向的 applied ML。我直接说他们考什么。
这个岗位的位置:CrowdStrike 在他们的 Falcon 平台里大量使用 ML,用于恶意软件分类、行为异常检测、威胁狩猎。这里的 ML eng 不涉及做 chatbot,而是做那种推理要快、对安全分析师来说足够可解释、并且要能抗对抗性操控的模型。你每个回答都要带着这个前提。
总共 6 轮。
ml fundamentals。他们深挖 gradient boosting。为什么某个具体问题上 XGBoost 比 random forest 更合适。样本里只有 0.01% 是恶意时,你怎么处理 class imbalance。precision vs recall 的取舍,尤其当 false negative 意味着漏掉攻击时(他们真的很在意你用这个语境来讲)。我被问了一个 ROC/AUC,还有一个 feature importance 的方法问题。SHAP 也出现了。要懂 SHAP。
ml system design。设计一个文件分类系统:给你一个代表 PE binary 的 feature vector(文件类型、section entropy、imports),做一个 pipeline,在推理时延小于 50ms 的情况下把它判成 malicious 或 benign。我讲了:feature engineering、模型选择(他们想要可解释的,不要黑盒)、serving 基础设施、监控 data drift、以及对抗鲁棒性。他们对 adversarial 追问很深:攻击者知道你的特征后,构造一个 binary 来绕过模型,你怎么办。
coding。两轮真写代码。一轮是数据处理题:给你一条 file scan events 的流,计算每个 endpoint 在滚动 5 分钟窗口内的 detection rate。基本是带 streaming 味道的 pipeline 题。另一轮是从零实现一个简单 decision tree。不是坑题,他们想看你理解数学。
behavioral。一轮,标准。他们问了你部署的某个模型在生产中出现异常行为的一次经历,以及你怎么处理。
cross-functional。和一位 product manager 以及一位 security researcher 聊。他们想看我能不能把模型输出翻译成分析师能采取行动的东西。
准备方向:gradient boosted trees、异常检测、对抗 ML 基础、极度不平衡类别下的 precision/recall 取舍、低延迟模型服务、SHAP。python 是基本功。tensorflow/pytorch 没那么重要,理解模型数学更重要。
comp:senior MLE,Austin,base $165k,RSU $200k/4yr。对 Austin 来说很强,尤其是在安全领域。