---
# System prepended metadata

title: info2025-homework3

---

# 資訊科技產業專案設計課程作業 3
contributed by <`TonyLinX`>

## 工作職缺
>自 IC 產業結構和軟體工程師的機會和《0 到 100 的軟體工程師面試之路》所及的公司對應的官方網站中，找出較符合自身興趣/規劃的職務描述 (即 JD [Job Description]，至少找出 3 份)，分析上述職缺所需要的能力，探討自己在專業上匹配的程度。
## TSMC - Intelligent Manufacturing System Engineer (IMC) 
[職缺網址](https://careers.tsmc.com/en_US/careers/JobDetail/Intelligent-Manufacturing-System-Engineer-IMC/16026)
### 職務內容與能力需求分析
#### 智慧製造系統開發與 AI 整合能力

職缺說明將主要工作歸納為「System Development and AI Integration」，包含：
* 開發具備自動化與進階控制的智慧製造系統、
* 將 AI 模型導入產線以提升生產力與品質、
* 建立即時資料系統支援決策。

所需能力包括：
* 熟悉軟體系統設計與實作，能在實際製造環境中部署與維護系統。
* 具備使用機器學習／深度學習模型解決實務問題的經驗，且能與既有製程與設備整合。
* 理解自動化與製程控制的基本概念，能將感測資料、設備狀態與決策邏輯串接成完整流程。

#### 製造問題分析、資料科學與統計能力

職缺在「Problem Solving」部分強調：需要將 business 需求轉化為技術解法，並透過大數據分析找出與解決製造挑戰。

其他平台對同職缺的描述，也明確指出熟悉 machine learning、data visualization、statistical analysis 和 system development 是關鍵能力。

所需能力包括：
* 能處理大規模製程／設備資料，進行資料清理、特徵萃取與統計分析。
* 能利用機器學習或統計方法建構預測、分類或異常偵測模型。
* 能將分析結果轉化為具體的改善方案（如派工策略調整、設備維護策略優化）。

#### 專案管理與跨部門溝通協作能力

職缺中的「Project Management」內容包含：
(1) 確保團隊與使用者間的溝通清楚順暢，
(2) 主導跨部門解決方案的整合，並關注系統整體效能與穩定性。

所需能力包括：
* 能理解製造端、設備端與 IT／資料科學端的語言與需求，扮演 technical translator。
* 能在專案中主動追蹤需求、時程與風險，協調不同角色完成同一目標。

#### 關鍵系統與技術領域

職缺進一步列出多個核心系統與功能，揭露了此職位的技術重點：

* Production Scheduling and Manufacturing System
透過排程與派工演算法最佳化工單流程、縮短 cycle time、確保準時交貨。

* Advanced Process and Equipment Control System
以奈米級精度控制製程與設備，並透過 real-time anomaly detection and diagnostics 維持晶片品質。

* Quality Control and Defense System
使用資料分析與機器學習提升產品品質、降低不良率。


* Vision AI Applications
透過 Vision AI 進行缺陷偵測、樣式辨識與自動化檢測，以提高良率並支援預測性維護。

* Workflow Automation
以自動化方式簡化流程、減少人工操作、提升整體運營效率。

這些系統背後共同指向幾個核心能力：
對半導體製程與設備的基本理解、異常偵測與品質管控的統計／機器學習能力，以及將演算法落地為穩定系統的工程實作能力。

### 自身專業背景與職缺需求的匹配度
* 智慧製造系統開發與 AI 整合的匹配度
    * 碩士階段的研究主題為「Unsupervised Anomaly Detection and Domain Generalization for High-Resolution Industrial Images」，並參與 Silicon Carbide (SIC) Ingot Defect Inspection，平時就在研究異常偵測或缺陷檢測相關的領域。
    * 在「Image Recognition and Optimization System for Medications in Transparent Packaging」專案中，負責開發多視角、多光源的影像蒐集與系統整合，解決因反光與光照不一致導致的模型失效問題，證明不只會實做別人的方法，還能把分細語驗證問題，並提出自己方法進行改善。
* 資料科學、異常偵測與製造問題分析的匹配度
    * 碩士研究本身即聚焦於「異常偵測」與「domain generalization」：
        * 對高解析度工業影像設計 Unsupervised Anomaly Detection 架構。
        * 研究如何在光照、反光、domain shift 下保持模型穩定，這與職缺中提到的 real-time anomaly detection、品質防禦系統本質相同，只是資料型態從設備／製程 log 延伸到影像。
* Vision AI、缺陷偵測與品質防禦系統的匹配度
    * 職缺在「Vision AI Applications」段落中明確指出：使用 Vision AI 進行缺陷偵測、樣式辨識與自動化檢測，以提升良率並支援預測性維護。
    * 大學專題到碩士研究，整體主軸一直圍繞 Computer Vision 與 Anomaly/Defect Detection：
        * 透明藥包系統：影像取得、反光處理、顏色校正與藥物辨識整合為一套系統。
        * 工業影像 UAD 與 SIC 缺陷檢測：對應到實務上的 wafer／ingot 類缺陷問題，只是材質與設備不同。
    * 技術技能欄位中亦明確列出「Computer Vision」與「Anomaly Detection」作為核心能力之一。
### 模擬面試
面試官：為什麼你會選擇 unsupervised 的設定，而不是直接做 supervised segmentation 或 classification 呢？你怎麼看這兩種方法在工廠裡的 trade-off？

我：主要有兩個考量，標註成本跟 scalability。
在工廠裡，異常樣本本來就非常少，而且 defect 類型又具備多樣性。要對每一種缺陷都做 pixel-level mask，其實很難 scale，也不 realistic。而 Unsupervised / one-class 的設定只需要正常品，符合實際產線比較常見的情境。雖然 unsupervised 的 anomaly score 很難直接對應到 defect type，也比較敏感於 domain shift。我的設計就是在這個框架下，盡量把「對正常變異 robust」和「對真正缺陷敏感」這兩件事拉出 gap。

面試官：那你具體講一下你整個 model 的架構流程。從一張原始影像進來，到最後產出 anomaly map，中間每個步驟在做什麼？

我：流程可以簡單拆成幾個階段，Patch-based 切片與前處理,Teacher feature 抽取,Student 重建以及後處理與 thresholding。

面試官：你剛講 reverse knowledge distillation。為什麼要用 teacher–student，而不是直接用 autoencoder 或 reconstruction-based 方法？Teacher 帶來的好處是什麼？

我：我自己的理解是這樣，傳統 AE 要從 raw pixel 學 representation，容易學到比較低階、局部的東西，而且常常 reconstruction 太強，連缺陷都一起重建回去。而DINOv2 這類 self-supervised ViT 已經學過大規模自然影像，feature 比較 semantic，也對微小噪聲比較不敏感。拿這種 feature 當 target，比從 0 開始學要穩定很多。
第二原因是 teacher–student 這種方法分工結構很清楚，Teacher 負責提供一個有結構的 feature space，student 只要學會 fit 正常 feature 分佈。如果 student 也看不到 anomalous feature，它在異常區域就會用「錯誤的預測」填補，這正好給我們 anomaly signal。
第三個原因是訓練上的穩定度Teacher 凍結，實際訓練只更新 student，訓練比較穩定，也利於日後換 student 架構或做 test-time adaptation。

面試官：那你覺得你這個設計最大的弱點是什麼？如果我直接講一句「你這個架構在 domain shift 底下會爛掉」，你會怎麼回？
我：我會承認，原始 RD 架構在某些 domain shift（尤其是光照）下確實會爛掉。原因是DINOv2 在 pretrain 時，對顏色、亮度、風格有某種 invariance，但那是針對自然影像的 augment。在工業影像裡，有些 illumination 變化會被 teacher 當成style 差異，feature 會有明顯 shift；student 沒看過這種 style，就把它當成異常。

### 不足與未來補強方向
* 依公開資訊推測，IMC 團隊在部分系統會大量使用雲端、大數據與生產級 MLOps/DevOps 工具（如 container orchestration、CI/CD 等），此部分我並沒有相關經驗。
* 雖然已有工業影像與品質檢測經驗，但對半導體製程細節、設備種類與 fab 現場實際運作模式沒有任相關經驗以及知識。


## MediaTek - AI and Computing Platform
[職缺網址](https://www.104.com.tw/job/8tg72?jobsource=ref_chatgpt)
### 職務內容與能力需求分
* 研究與開發最先進的演算法
    * 深度學習
    * 數據分析
    * 機器學習
    * 自然語言處理 (NLP)
    * 影像識別 (Computer Vision)
* 把 AI/LLMs 實際用在 IC 產品上
    * 行動通訊
    * 無線與寬頻連結
    * 家庭娛樂晶片解決方案
### 自身專業背景與職缺需求的匹配度
職缺要的是：研究、分析並致力於最先進的演算法：深度學習、數據分析、機器學習、影像識別。
而我目前的研究與專題幾乎完全落在這條線上：
* 碩士研究主題：Unsupervised Anomaly Detection and Domain Generalization for High-Resolution Industrial Images
    * 聚焦在高解析度工業影像的 深度學習異常偵測，以 Dinov2-based knowledge distillation 架構結合對比學習與 domain generalization。
    * 面對的問題包含光照變化、反光、domain shift 等，屬於非常實際的 Computer Vision 問題，也牽涉到 representation learning 與不平衡資料。
* Chest X-ray Unsupervised Anomaly Detection
    * 在醫療影像領域上實作 unsupervised anomaly detection，透過模擬異常與 latent space 的對比學習，將 AUROC 從 ~50% 提升到 ~76%。
    * 過程中實際處理大量影像資料，設計 loss、評估指標，屬於典型的 deep learning / representation learning 任務。
* 透明藥包影像辨識系統 + IEEE Access 論文
    * 結合影像蒐集、反光去除、顏色校正與分類模型，將 Top-1 accuracy 從 15.19% 拉到 96.85%。
    * 這個專案既是 Computer Vision，又是完整 AI 系統的實作與優化案例。
這些經驗對職缺要求的 深度學習、機器學習、數據分析、影像識別 是直接對應的，差別只在於 domain 從醫療 / 工業影像，換成電信 /多媒體 / SoC 應用，本質一樣是「用 deep learning 解決實際訊號 / 影像問題」。

### 模擬面試
面試官：
你挑一個最代表你的 AI 專案，簡單介紹目標、你的角色，以及你實際解決了什麼技術問題。
我：
我會選 透明藥包影像辨識系統，這個專案最後有發表在 IEEE Access。目標是醫院在核對藥餐包的時候，希望有一個自動辨識藥品內容 的系統，減少藥師反覆人工確認的負擔。實務上最困難的地方不是模型，而是藥包是透明塑膠袋，很容易產生 強反光與光照不一致，如果照明與拍攝條件沒處理好，模型會完全失效。
我主要負責的是整個影像蒐集與硬體控制流程，包含設計多光源、多角度的拍攝平台，調整光源位置與曝光參數。減少反光以及讓藥物外觀在不同拍攝條件下仍然穩定，再把反光去除、顏色校正與後端的辨識模型整合成一條 pipeline。
最後，我們這組的結果是 Top-1 accuracy 從大約 15% 提升到 96% 以上。這個專案讓我很有感的是：AI 不是只有 model，如果前端的資料 acquisition 與系統設計沒有做對，再強的模型也救不起來。

面試官：
你現在做的是工業影像的 unsupervised anomaly detection，domain 主要是工廠、SiC 這種場景。
你怎麼看這些背景跟我們 AI & Computing Platform 要做的晶片應用之間的關係？要怎麼轉移？
我：
我覺得 domain 不同沒錯，但問題型態是類似的，都是實體系統 + 資料 + 品質/異常的組合。我現在做的：CT 設備、工業相機 → 產生投影、影像 → 做缺陷與異常偵測。MediaTek 這邊是 modem、sensory data、畫面、語音 → 一樣是 data，最後要判斷品質、user experience 或做某種智慧功能。
我已經習慣先理解 裝置/sensor 的特性（幾何、雜訊、光照），再設計資料處理與 model，最後看怎麼放進一個可部署的系統。
在方法層面，我用到的技術（representation learning、對比學習、domain generalization、anomaly detection）都是可轉移的。
換成 MediaTek 的場景，可能就變成，對 RF/baseband 資料做 anomaly 或品質監控，對多媒體、影像、sensor 做增強與辨識，或是用 ML 去優化內部研發流程。
所以我不會說我只會工業影像，比較像是我已經有一套處理真實訊號 + 限制條件 + AI 的工作方式，domain 換成聯發科的應用，是可以被搬過來的。

面試官：
你的履歷有一個 CPU-based Parallel Matrix Multiplication System，看起來是偏系統與效能優化。
你可以講一下這個專案在做什麼？你做了哪些關鍵設計？為什麼不用直接上 OpenMP 或 CUDA？

我：
這個專案一開始是課程作業，但我把它當成一個從零設計改善效能 CPU side compute system 的練習。

我做的事情包括
* Thread pool 設計
    * 實作一個 lock-free thread pool，每個 worker 有自己的 ring buffer，
    * 用 CAS 實作無鎖入隊 / 出隊，減少在高併發時的 lock contention。
* Work-stealing 機制
    * 當某些 worker 沒事做時，可以從其他 queue 偷 work，
    * 降低負載不均的情況，提升 overall utilization。
* SIMD + cache-friendly blocking
    * 在運算核心用 AVX2 做 SIMD，
    * 搭配 block-based matrix multiplication，讓資料利用 cache locality。
* 效能評估
    * 用 perf 看 cache miss、context switch、branch miss，
    * 跟 baseline 的 lock-based thread pool 比，效能大約提升 50%。

不用 OpenMP / CUDA 的原因很簡單：
目標是練習自己設計併行系統的能力，了解底層 contention、cache、排程這些細節，而不是靠現成 library。
這對我來說是一個補強：除了會寫 ML code 以外，我也知道如何去分析運算成本以及效能瓶頸是怎麼來的。


### 職務內容與能力需求分
### 不足與未來補強方向
* LLM、NLP、分散式訓練的實戰經驗
    * JD 有明寫 AI/LLMs、分散式計算是加分項。
    * 我現在的重心在 Computer Vision、UAD 與系統效能，對 LLM 與大規模分散式 training 的實務經驗比較少。
    * 這部分可以透過 side project 或課程，補一些 LLM fine-tuning、分散式訓練與 on-device LLM 的實作。
* MediaTek 特定應用 domain（modem、多媒體、邊緣裝置）的背景
    * 目前我在工業影像與醫療影像上比較熟，對 modem、無線通訊、多媒體編碼等領域還不算熟悉。
    * 不過我已經習慣先補 domain 再設計模型，這在醫院藥包與 SiC 計畫都做。
    * 未來進到 MediaTek 可以用同樣的方式快速補齊相關背景。


## Google – Software Engineer, University Graduate, 2026（Taipei / New Taipei）
[職缺網址](https://www.google.com/about/careers/applications/jobs/results/135117392874218182-software-engineer-university-graduate-2026?degree=BACHELORS&location=Taiwan&q=Software%20Engineer%2C%20University%20Graduate%2C%202026)

### 職務內容與能力需求分
* 學歷與 Computer Science 基礎
    * 需具備 Computer Science 或相關技術領域學士學位，或同等實務經驗。
    * 需有 computer science、data structures、algorithms、software design 相關經驗與訓練。
* 程式與系統開發能力
    * 需有 software development 經驗，能在至少一種 general-purpose language（例如 C/C++/Java/Python 等）中進行實作與開發。
* 依照 Google 官方對 Software Engineer, University Graduate 這個角色的描述：
    * 開發 next-generation 技術，處理 大規模系統設計、網路、資料儲存、安全、AI/ML、NLP、UI 和行動裝置 等範疇。
    * 針對公司關鍵專案設計、實作、測試、部署與維護軟體。
    * 需要能在小而多元的團隊中，對 scalability、access to data、performance 等議題提出解決方案。
    * 期望工程師具備：
        * 技術上的廣度與彈性
        * 能快速切換專案
        * 願意主動承擔問題並展現 leadership qualities。
### 自身專業背景與職缺需求的匹配度
#### 學歷與 CS 基礎：完全符合且略高於職缺門檻
* 職缺要求 CS 或相關領域學士，而我目前是
    * 國立成功大學 資工所碩士生（GPA 4.3/4.3），
    * 大學為國立東華大學 資工系（GPA 4.38/4.5，系排前三名）。
    * 系統性修過演算法、資料結構、作業系統、系統程式、電腦視覺等核心科目，並在專題與研究中實際應用。
    
在「學歷與 CS 基礎」這一項，我不只是符合 minimum qualifications，而是符合部分 regions JD 裡的 preferred（Master in CS / advanced degree） 要求。

#### 程式與演算法能力：具備新鮮人要求，另有分析效能的經驗
對照 JD：需要 general-purpose language + CS core。
我目前的對應情況：
* 程式語言與開發實務
    * Python：
        * 碩士研究、Chest X-ray UAD、MVTec AD 2、SiC CT pipeline 全部使用 Python / PyTorch。
        * 實作完整 training / evaluation / visualization / data pipeline，不是只跑別人的 notebook。
    * C / C++：
        * 在「CPU-based Parallel Matrix Multiplication System」專案中，以 C 語言搭配 Pthreads、AVX2 SIMD 寫出高效能矩陣乘法系統，實作 lock-free thread pool、per-thread ring buffer、work-stealing scheduling。
        * 實測對 baseline lock-based thread pool 有顯著效能提升，並利用 perf 分析 cache misses、context switches、CPU utilization 等指標。
        
#### AI / ML / Computer Vision 經驗：屬於加分項，剛好是我的強項
對這個職缺來說，AI/ML 不是硬性 requirement，而是加分能力。
我在這個面向的優勢：
* 工業影像 UAD（MVTec AD 2）
    * 碩士主題為 Unsupervised Anomaly Detection and Domain Generalization for High-Resolution Industrial Images。
    * 使用 DINOv2 register + reverse knowledge distillation + contrastive learning，設計在光照變化、反光、陰影等 domain shift 下仍穩定的 anomaly detection pipeline。
* 醫療影像 UAD（Chest X-ray）
    * 與醫院合作的胸腔 X 光異常偵測，從 baseline AUROC 約 50% 提升至 76%，實際證明自己有能力在 noisy data 上設計可行模型與訓練流程。
* SiC Ingot CT Defect Inspection
    * 結合 3D CT reconstruction 與 defect analysis，從資料擷取、重建、切片到缺陷偵測，實際把 computer vision 應用到半導體品質測試場景。

這些經驗讓我在 Google 內部若分配到 ML／CV／品質監控／anomaly detection 等相關專案時，能快速上手，也能和 ML team 有有效的技術溝通。

### 模擬面試
Interviewer:
Pick one project from your resume that you’re most proud of, and walk me through the technical details and the main challenges.
Me:
I’ll choose my CPU-based Parallel Matrix Multiplication System.
The goal was to go beyond a naive multi-threaded implementation and really understand how to design a high-performance compute engine on CPU. So instead of using OpenMP or a simple thread-per-task model, I implemented my own lock-free thread pool in C with the following components:
* Per-thread ring buffers for tasks
Each worker thread owns a ring buffer to store tasks. The ring buffer supports lock-free push/pop using atomic operations (CAS), which avoids global locks and reduces contention.
* Work-stealing scheduler
When a worker finishes its own queue, it can steal tasks from other workers’ queues. This balances the load when some threads get more tasks than others.
* Hybrid busy-spin + semaphore
If the queue is empty for a short time, the worker spins briefly to avoid context switch overhead. If it stays idle longer, it sleeps on a semaphore to save CPU. This hybrid strategy reduces both latency and CPU waste.
* SIMD + block-based matrix multiplicationSIMD
On the compute side, I used AVX2 intrinsics and blocked the matrices to fit better in cache, which significantly improved memory locality.

In the end, my system achieved around 50% performance improvement over a baseline that used a simple lock-based thread pool. 

Interviewer:
Your research is in unsupervised anomaly detection. Can you explain that project, but focus on the software engineering aspects rather than just the machine learning part?
Me:
Sure. The research question is: how to detect anomalies in high-resolution industrial images without labeled defects, and make the model robust to domain shifts like lighting changes.
From a software engineering perspective, I had to build a fairly complete pipeline:
* Data pipeline
    * I designed a dataset structure for multiple domains: regular lighting, overexposed, shadows, reflections, etc.
    * I implemented a custom PyTorch Dataset and DataLoader to handle large high-res images, including patch-based cropping and sliding windows to keep memory under control.
* Modular model code
    * The encoder is based on DINOv2, and the student is a transformer-based decoder.
    * I separated the code into modules: encoder wrapper, student model, loss functions (distillation loss, contrastive loss), and evaluation scripts, so I could swap components without rewriting everything.
* Experiment management
    * I used configuration files (YAML) to track different settings: patch size, overlap ratio, learning rate schedule, augmentation parameters, etc.
    * I wrote logging utilities to record metrics, loss curves, and sample anomaly maps so I could compare experiments.

* Evaluation and debugging tools
    * I implemented metrics like AUROC and AU-PRO@0.05, and visualized feature spaces with PCA/UMAP to debug whether the encoder was actually learning lighting-invariant representations.
    * When performance dropped, I could quickly reproduce a run and bisect changes.

The ML side is important, but in practice, what made the project move forward was treating it as a software system: clear abstractions, reproducible experiments, and good tooling for debugging and comparison.

### 不足與未來補強方向
* 缺乏真正的大規模 production system 經驗
    * 目前主要在 academic / lab 專案與課程作業，還沒有參與數十人以上團隊維護的 production codebase。
    * 這會是進公司初期需要花時間適應的部分，包括 code review 流程、deploy pipeline、oncall、SLO 等。
* 英文口說與系統設計表達
    * 閱讀與書寫英文 paper、文件沒有問題，但在全英文面試下，解釋 system design 與 trade-off 的流暢度還有提升空間。

## Resume 
> 這個 resume 我會在 objective 去放關於我要應徵的職位內容，例如我想應徵 IMC 我就會在開頭就表明我要應徵哪個職缺。所以如果我今天要換成 MediaTek or Google，我就會針對那個職缺進行改動。

[TonyLinX Resume](https://docs.google.com/document/d/1D5xC7Y1xlrBPdp4pmVUn62KnT2g0BOqv/edit?usp=sharing&ouid=105565369668107352711&rtpof=true&sd=true)

