今年早些时候面了 Cisco 产品数据分析团队的 data scientist 岗。整个 loop 里有三轮偏技术的内容。把 SQL、case、stats 的细节写一下,因为 enterprise 公司的 DS 面试差异很大。
SQL round(45 min):在共享的 SQL 环境里现场做。两题。第一题是大量 join 的查询,基于网络事件日志:找出在 30 分钟窗口内触发某个特定告警序列的用户(这里实际上是设备)。会用到 window functions、条件聚合、GROUP BY。中等复杂度,但嵌套逻辑我花了点时间才梳理得更清晰。第二题是数据质量:给你一张 expected 和 observed 的指标表,写 query 找出超过阈值的异常。认真读题后就很直接。
Stats / ML case(60 min):题目大概是:你在分析一个新的网络安全功能是否能减少 false positive alerts。你会怎么设计分析?他们把它当讨论题,不是 coding。我讲了 A/B test 设计、为什么在 enterprise account(不是单个用户)这种单位上随机化很难、怎么处理共享基础设施上账号之间的 network effects、以及主指标选什么。他们两次 push back 我选的指标,我觉得这反而是好信号。
他们还问了一个单独的 stats 问题:「explain the difference between precision and recall to a non-technical stakeholder and when you'd optimize for each.(向非技术干系人解释 precision 和 recall 的区别,以及你会在什么情况下分别优化它们?)」不是挖坑题,但他们想要真实场景的解释,不是课本定义。
Product sense / case(30 min):产品数据分析 case 的简版:「AppDynamics usage has dropped 10% in the last quarter. How do you diagnose it?(AppDynamics 的使用量在上个季度下降了 10%。你会怎么诊断?)」funnel 拆解、用户分群、feature 级归因。典型 DS case 结构。
准备建议:SQL 的 window functions 和 self-joins,非 iid 场景下的实验设计基础,以及一个你真正上线过的模型或分析案例,讲清楚上线后发生了什么。这个团队不会问很深的 ML 建模,更偏分析和实验。
我拿到了 offer。有问题欢迎追问。