面经 | Windows 365 / Cloud PC | 🔥🔥 | Microsoft
2026(9月) Software Engineer II @ Microsoft | Redmond, WA · Virtual · 3 轮 | 😐 Neutral | Medium-Hard
Windows 365 / Azure Virtual Desktop 组,电面加两轮 virtual onsite。
Round 1 — Phone Screen
Basic Calculator II:字符串里只有非负整数和 + - * /,没有括号,求值。用 Python 写,栈里存每一项,碰到 * / 直接和栈顶算。跑 "14-3/2" 时发现 -3/2 在 Python 里是 -2,改成往零取整。follow-up 加括号,只说了遇到 ( 压栈的思路,代码写到一半时间到了。
Round 2 — Coding
套了 Cloud PC 的壳:一批 host 各自剩余 vCPU 不同,来一个要 k 个 vCPU 的 Cloud PC,放到「够用且剩得最少」的那台,还要支持释放。Python 没有 TreeMap,面试官让我假设有 SortedList,存 (剩余, host_id),bisect 找第一个够用的。更新要先删再插,第一次漏了删,跑例子时同一台 host 出现两次才发现。
follow-up:再加一个内存维度。只说了按 vCPU 排、往后扫着看内存,面试官问最坏是不是又回到 O(n),没想出更好的办法。
Round 3 — System Design
设计 pooled host pool 的连接分配:用户点连接,broker 从一组 session host 里挑一台。
先讲了 breadth-first 和 depth-first 两种分配,各自什么时候用。面试官追了三个点:断线重连要回到原来那台 host(先查用户已有的 session 再分配);host 打补丁时进 drain,不接新连接;两个 broker 同时把最后一个空位给了两个人(session 计数用带 etag 的条件更新,失败换下一台)。最后问 host 心跳正常但连接一直失败怎么办,只说到按失败率摘掉,阈值和误摘没讲完。