Did the BMS online assessment and live coding rounds last quarter, for a mid-level SWE role. Going to just lay out what I saw because I couldn't find much info before I went through it.
Online assessment (HackerRank): 90 minutes, 2 problems. The first was medium difficulty: given a list of medication dose logs with timestamps, find patients whose intervals fell outside a specified range. Basically an interval/sliding window problem, not labeled as such. Python was fine. The second was graph-adjacent: find connected components in a drug interaction dependency graph. Also medium. Nothing Leetcode-hard, nothing trivial.
You get one shot. No retakes. Plan accordingly.
Live coding (technical phone screen, 45 min via Teams): I got a similar flavor: data processing with some business domain context layered on top. They gave a CSV-ish input and wanted me to parse it, identify anomalies, and output a clean result. I was in Python. They cared about: handling edge cases, code clarity, and asking clarifying questions before diving in. The interviewer explicitly said they'd rather see me ask questions than make assumptions.
Onsite coding round: One more 45-minute coding problem. This one was more of a design + implementation hybrid. Design a simple scheduler that tracks tasks with priorities and dependencies, then implement the core logic. I used a heap and adjacency list. They let me think aloud and didn't interrupt a lot.
Total coding rounds: 3. None felt like memorization tests. The domain context (pharma, clinical data, scheduling) showed up in every problem, which was kind of refreshing actually. You don't need Leetcode hard if you have solid fundamentals and can think through a problem out loud.
One thing I noticed: they asked about testing at every round. Not "write a test" but "how would you verify this works". have an answer ready for that.