最近整理了三道 TSMC OA 真題,涵蓋貪心分組、圖論和排序優化。題目分別涉及學生技能水平分組、資料庫連線故障恢復,以及三台伺服器的模組部署難度最大化。下面按題目順序整理題目描述和解題思路,方便複盤相關演算法考點。
TSMC HackerRank OA 基本形式
| 考試項目 | 相關資訊 |
|---|---|
| 考試平台 | HackerRank |
| 考試時長 | 約 90 分鐘,具體以考試通知為準 |
| 題目數量 | 3 道程式設計題(以本次考試記錄為準) |
| 程式語言 | Python、Java、C++、C 等,具體以平台支援選項為準 |
第一題:分組(Group Division)
題目描述
一所大學招收了 n 名技能水平各不相同的學生。為了更好地安排教學,學校決定根據學生的技能水平進行分班。入學測試會為每名學生評定一個技能水平,並將結果儲存在陣列 levels[] 中,其中 levels[i] 表示第 i 名學生的技能水平。
同一組內所有學生的技能水平差異必須滿足指定範圍 maxSpread,即同一組中最高技能水平與最低技能水平之差不能超過 maxSpread。請確定滿足上述條件所需的最少分組數量。
解題思路
先將 levels 按照從小到大的順序排序,再遍歷陣列進行貪心分組。每次以當前組中最小的技能水平作為基準,如果當前學生的技能水平與它的差值不超過 maxSpread,就將該學生加入當前組;否則,重新建立一組。遍歷結束後,統計得到的分組數量即可。
第二題:資料庫連線故障恢復

題目描述
你負責管理 n 個服務 Pod,編號為 1 到 n。部分 Pod 之間存在雙向連線,由二維陣列 connections 給出,共有 m 條連線。如果兩個 Pod 直接相連,或可以透過其他 Pod 間接連線,則它們屬於同一個區域(Region),即同一個連通分量(Connected Component)。初始時,所有 Pod 的資料庫連線均處於活動狀態。你需要按照給定順序處理 q 個查詢,每個查詢分為以下兩種類型:
類型 1:傳送資料(1 podId) 向 podId 傳送資料。如果該 Pod 的資料庫連線仍處於活動狀態,則資料直接寫入該 Pod;如果連線已失效,則將資料轉發給同一區域內編號最小的活動 Pod。如果該區域內不存在活動 Pod,則返回 -1。類型 2:連線故障(2 podId) 將 podId 的資料庫連線標記為非活動狀態。一旦連線失效,便不會恢復。
請按順序處理所有查詢,並返回一個陣列,記錄每次類型 1 查詢的結果:成功寫入資料的 Pod 編號,或表示無法寫入的 -1。返回結果的順序應與類型 1 查詢的出現順序一致。
解題思路
使用 BFS 劃分連通塊,並為每個連通塊建立一個最小堆,配合惰性刪除維護活躍節點。處理查詢時,堆頂就是該連通塊中編號最小的活躍節點。
第三題:軟體模組部署難度最大化

題目描述
給定 n 個軟體模組,第 i 個模組的難度由陣列 difficulty[i] 表示,其中 0 ≤ i < n。你需要按照以下規則,將這些模組分配到三台不同的伺服器上進行部署:
- 每台伺服器至少分配一個模組。
- 每個模組必須且只能分配給一台伺服器。
部署完成後,從每台伺服器中各選擇一個模組,計算整體部署難度,其計算公式為:|d₁ – d₂| + |d₂ – d₃|,其中,d_j 表示從第 j 台伺服器中選出的模組難度,(1 ≤ j ≤ 3)。你的任務分為兩個步驟:
- 將所有模組分配到三台伺服器上。
- 對於每一種分配方案,分別從每台伺服器中選擇一個模組,使上述公式的計算結果最小。
在所有可能的模組分配方案中,求各方案對應的最小部署難度的最大值。
解題思路
將陣列按難度排序後,最優分組可以劃分為連續的三段。遍歷分割點,分別考慮三種結構:1. S2 的難度位於中間;2. S2 包含最大值(後綴);3. S2 包含最小值(前綴)。對於每種情況,考慮對手選擇最接近的 d1、d2、d3 時得到的最小部署難度,最後取三種情況中的全域最大值。
總結
這三道題分別考查貪心分組、連通分量維護和排序後的分組最佳化。備考時,除了熟悉基礎演算法,還要注意題目中的約束條件,尤其是分組邊界、節點失效後的查詢處理,以及如何縮小分配方案的列舉範圍。要注意题目中的约束条件,尤其是分组边界、节点失效后的查询处理,以及如何缩小分配方案的枚举范围。
如果你正在準備 TSMC 或其他大廠的 OA 或面試,除了刷題,也可以結合真實面經熟悉常見題型和考察方向。InterviewShow 整理了 TSMC、Microsoft、Amazon、Google、Stripe、TikTok 等科技公司的面試資料,可領取相關公司的 OA/VO 真題,幫助你了解常見考點和面試形式。我們也提供 OA 輔助和面試輔助服務,涵蓋 Coding、System Design 和 BQ。你可以查看服務介紹,或直接聯絡我們了解詳情。
FAQ
TSMC OA 難嗎?
TSMC OA 的難度因職位和考試批次而異。程式設計題通常會涉及陣列、圖論、貪心、動態規劃和資料結構等常見考點。備考時除了掌握基本演算法,還要注意資料規模和時間複雜度,避免直接模擬導致超時。建議提前練習類似的演算法題,並熟悉 HackerRank 等線上程式設計平台的答題方式。
TSMC 是做什麼的?
TSMC 是全球領先的專業晶圓代工企業,主要為晶片設計公司製造半導體晶片。公司提供先進製程和特色製程等製造服務,客戶涉及高效能運算、智慧型手機、汽車和物聯網等領域。TSMC 主要負責晶片製造,而不是以自有品牌設計和銷售通用晶片為主要業務。
TSMC OA 怎樣準備比較有效?
建議優先練習陣列排序、貪心演算法、圖的遍歷、堆和基礎動態規劃。做題時先讀完所有題目,判斷解題思路和實作成本,再合理分配時間。提交前還應檢查空陣列、單個元素、重複值、邊界條件和大規模輸入,避免因為細節問題而失去測試用例的得分。