刚结束 L'Oréal 纽约 tech hub 的 senior software engineer 岗位面试流程。system design 那轮最有意思,而且这家公司 eng 面试相关信息基本没有,所以我想认真写一下。
先说:L'Oréal 把他们的 senior IC 级别叫做「Senior Software Engineer」,但不同团队对 scope 的预期不同,大致相当于 Google 的 L5 或 Meta 的 E5。他们对外不使用数字级别。
System design 的设置
60 分钟,1-2 个面试官(我有两个)。没有发任何具体的准备资料,recruiter 只说「准备设计一个可扩展的 web 系统」。很经典。
我拿到的题:为 L'Oréal 旗下不同品牌的电商站点做一个个性化商品推荐平台(Garnier、Maybelline、Lancome 各有不同网站)。要考虑 multi-tenant、跨品牌用户数据。
他们重点看什么 数据建模:如何在不违反数据同意边界的情况下表示跨品牌的同一个用户(GDPR 一开始就提了) 规模:他们给了个大概数字,比如全站 50M 月活 缓存和延迟:「用户在手机端希望推荐加载很快」 他们没有深挖分布式一致性、replication lag 等那种偏 infra 考试的东西。更偏产品架构,而不是基础设施。
他们怎么评估(我的理解)
他们想看到你怎么结构化处理模糊问题,怎么问澄清问题,以及如何带着理由做 tradeoff。有位面试官问了我「what would you cut if you had to ship an MVP in 6 weeks(如果你必须在 6 周内交付一个 MVP,你会砍掉什么?)」,让我意识到他们对产品判断的重视不亚于技术深度。
我通过了这一轮,进入 hiring manager 阶段。同一天的 behavioral 对我来说反而比 system design 更难。