Interview Experience | Windows 365 / Cloud PC | π₯π₯ | Microsoft
2026 (Sep) Software Engineer II @ Microsoft β Redmond, WA β Virtual β 3 rounds | π Neutral | Medium-Hard
Windows 365 / Azure Virtual Desktop team: a phone screen plus two virtual onsite rounds.
Round 1 β Phone Screen
Basic Calculator II: a string with only non-negative integers and + - * /, no parentheses, return the value. I wrote it in Python with a stack of terms, combining with the top of the stack right away on * or /. Running "14-3/2" by hand, I noticed that -3/2 gives -2 in Python, so I changed it to round toward zero. The follow-up was adding parentheses. I only described pushing onto the stack when you hit (, and time ran out halfway through the code.
Round 2 β Coding
The problem was wrapped in Cloud PCs. There is a set of hosts, each with a different number of free vCPUs. A Cloud PC that needs k vCPUs goes to the host that has enough room and the least left over, and hosts also have to support release. Python has no TreeMap, so the interviewer let me assume a SortedList of (free, host_id) and use bisect to find the first host that fits. Every update has to remove and then reinsert. The first time I left out the remove, and only caught it when the same host showed up twice while running an example.
Follow-up: add memory as a second dimension. I only said to sort by vCPU and scan forward checking memory. The interviewer asked whether the worst case goes back to O(n), and I didn't come up with anything better.
Round 3 β System Design
Design connection assignment for a pooled host pool: a user clicks connect, and a broker picks one session host from the pool.
I started with breadth-first and depth-first assignment and when you would use each. The interviewer then pushed on three things: a user who disconnects and reconnects has to land back on the same host (look up the user's existing session before assigning); a host being patched goes into drain mode and takes no new connections; and two brokers can give the last free slot to two people at the same time (update the session count with an etag-conditioned write, and move to the next host if it fails). The last question was a host whose heartbeat looks fine but whose connections keep failing. I only got as far as taking it out based on failure rate, and didn't finish on thresholds or on pulling healthy hosts by mistake.