just got through the Bain onsite for a senior ML engineer role. writing it up same day while it's fresh.
it's done virtually now. four sessions back to back with a 10-minute break between each. total time about 4.5 hours.
session 1: coding (60 min) one interviewer. two problems, lighter and harder. i got a dynamic programming problem (medium) and a string parsing one (harder). they let you code in whatever language. i used Python. the harder problem had an edge case i didn't catch until they nudged me. felt medium-hard overall.
session 2: coding (45 min) one problem but more discussion-heavy. they asked me to code a solution then immediately said 'now walk me through what breaks at scale.' it transitioned into a mini design conversation. this felt deliberate, like they want to see if you just write code or actually think about it.
session 3: system design (70 min) two interviewers this time. the prompt was designing a data pipeline for aggregating client engagement data across multiple enterprise tenants with freshness SLAs. right in my wheelhouse but still took 10 min of clarifying questions to scope properly. they seemed pleased that i slowed down.
they probed: failure recovery, data quality monitoring, schema evolution, how you'd alert on freshness degradation. all real problems i've dealt with. felt like a conversation rather than a test.
session 4: behavioral / values (45 min) coverage of standard STAR questions but with follow-up probes. 'tell me about a time you disagreed with a senior stakeholder' and 'describe a project that didn't go as planned' both came up.
overall: the day felt long but well-structured. no trick questions, no weird brain teasers. they're hiring for people who can actually think through problems, not people who've memorized solutions.