最近這波大廠 OA 確實有點密集,尤其是 Microsoft、Google、TikTok、Amazon 都在瘋狂發題。微軟這套我剛做完,整體難度屬於中等偏上,不是那種純模板題,但也沒有特別刁鑽,核心還是考察資料結構理解 + 程式碼實現穩定性。下面把這次的兩道題整理一下,給準備 Microsoft OA 的同學一個參考。
Q1:字串最大操作次數
題意:每次可以選三個連續字元 s[i], s[i+1], s[i+2],如果前兩個相等,且第三個不同,就把第三個改成和前兩個一樣。問最多能操作多少次。
思路:一旦出現兩個連續相同字元,它們就可以“向右擴散”,把後面不同的字元一個個變成一樣。也就是說,每一段長度 ≥2 的連續相同字元,都可以不斷吞掉右邊不同的字元,直到遇到新的連續塊。所以本質是在統計:有多少字元可以被前面的“連續塊”同化。可以從左往右遍歷,記錄當前連續相同字元的長度,如果長度 ≥2 且後面字元不同,就可以進行一次操作,並把連續長度繼續擴充套件。
Q2:Session 認證系統
題意:就是實現一個帶過期時間的 token 系統。每個 token 生成時有一個過期時間 = 當前時間 + TTL。支援三個操作:生成、續期、查詢當前沒過期的數量。關鍵點在於:在同一時間點,必須先判斷哪些 token 已經過期;如果過期時間剛好等於當前時間,也算過期,不能續期也不能計數。
思路:用一個雜湊表存 token_id -> 過期時間。每次操作時,先把所有過期的刪掉(或者在訪問時判斷是否過期)。generate 就直接寫入新的過期時間;renew 只有在 token 存在且沒過期時才更新過期時間;count 就統計當前沒過期的個數。
大廠 OA 衝刺建議
如果你最近在刷 Microsoft、Google、TikTok、Amazon 的 OA,一定要把重心放在“穩定度”上,而不是隻追求做出來。邊界條件必須練熟,過期判斷、下標越界、複雜度控制這些細節不能丟;同時要模擬真實考試節奏,把自己壓在限時環境裡訓練,目標是 30 分鐘內穩定 AC,而不是反覆 debug。現在很多 OA 真正拉開差距的,不是會不會,而是穩不穩。如果你卡在某類題型,或者想拿到更多最新真題整理、做高強度模擬,甚至需要 實戰輔助支援 ,都可以聯絡我們,一對一幫你把節奏和透過率一起拉上來。