Try   HackMD

2024 年「資訊科技產業專案設計」作業 3

作業要求

  1. 自 IC 產業結構和軟體工程師的機會和《0 到 100 的軟體工程師面試之路》所及的公司對應的官方網站中,找出較符合自身興趣/規劃的職務描述 (即 JD [Job Description],至少找出 3 份)
  2. 分析上述職缺所需要的能力,探討自己在專業上匹配的程度
  3. 列出上述職缺 (或類似的職缺) 的面試題目,並嘗試對面試題目進行問答(儘量搭配自己過去 (或近期學習到) 的程式開發經驗,進行自問自答)
  4. 撰寫簡歷

符合自身興趣/規劃的職務

1.【2025 TSMC RDSS & AO】Information Technology Engineer (IT)

工作描述

Job Responsibilities

  1. Development and integration of Factory Automation Systems.
  2. Development and integration of Advanced Technology.
  3. Development and integration of Office Automation Systems.
  4. Development and integration of Cloud Computing, Kubernates or BigData Analytics Systems.
  5. Build/Development Scalable Platform for managing container applications.

Job Qualifications

  1. Major in IT, Computer Engineering, Software Engineering, Computer Science or related fields.
  2. Familiar with with one or more of the following :
    (1) Development of C/C++ or JAVA Programming.
    (2) Microservices Architecture Pattern, DevOps.
    (3) Web Applications for PC and Mobiles.
    (4) Hadoop, Spark and Parallel Computing.
  3. The ones with multiple above skill sets and experience is a plus.
  4. Experience in large-scale system integration, cloud computing, social networking for factory automation is a plus.
  5. Self-motivated, integrity, and result-oriented personality.

2. 2025校招/研發替代役/應屆預聘正職_軟韌體開發_ Embedded System software (台北)

工作描述

Job Responsibilities

資工/資管/電子/電機/電信/通訊/電控相關研究所背景,對行動通訊、無線及寛頻連結、家庭娛樂晶片解決方案有濃厚興趣的2025年應屆畢業生。 勇於表達意見,以團隊成功為目標,面對困難不輕易放棄,總是在想更好的做法,擁有創新及不斷學習的精神。 聯發科技邀請您,與全球最頂尖的菁英一同合作,彼此激盪最新的創意與解法,共同挑戰每一個不可能。

Job Qualifications

歡迎具備以下經驗及專長的你: 資工/資管/電機/電子/通訊相關研究所畢;嵌入式系統 (Embedded System) / Computer Organization & Architecture (計算機組織 & 結構) / 作業系統 (Operating System) / 資料結構 (Data Structure) / 程式語言 (Programming Language);RTOS (Real-time Operating System) / Linux / Android

3. Kronos - Senior Software Engineer, C++ (API)

工作描述

Job Responsibilities

Take charge of designing and developing API integrations for crypto exchanges, encompassing the aggregation of quotes and trades, as well as the efficient execution of orders across global exchanges.
Lead development sprints and release cycles to ensure robust access to live and historical market data.
Engage directly with traders to convey technology changes, address incidents, and troubleshoot issues.
Actively participate in technical discussions, conduct code reviews, and promote internal knowledge sharing.
While not on a 24/7 on-call rotation, be prepared to address occasional urgent issues, typically occurring once per month, with support from the entire team.

Job Qualifications

Bachelor’s or Master’s degree in Computer Science or related field
Possess a minimum of 5 years of programming experience using C++ in a Linux environment.
Exhibit strong analytical and problem-solving abilities.
Manage multiple tasks effectively in a dynamic, fast-paced environment.
Showcase strong written communication skills and intermediate oral proficiency in English.
Demonstrate a genuine passion for quantitative trading and the cryptocurrency markets.

Preferred Qualifications

Proven expertise in project management.
Display a high level of accountability and responsibility.
Understanding of network protocols, like HTTP, WebSocket, FIX, GRPC
Understanding of signature algorithms, like ECDSA

Interview Process

Coding assessment (via Codility)
Technical interview
Manager & HR interview

自我評估

技術能力

  • 後端語言:Java / Python / C / C# / PHP / SQL
  • 前端語言:HTML / Javascript / Ajax
  • API : 開發與維護 + REST相關知識
  • web及app開發框架:Angular / react / MVC架構 / AndroidStudio / Flutter
  • 業務流程自動化:RPA機器人開發
  • Git : Git 版本控制

可能優勢

  • 有 C/C++/java 專案開發經驗,符合以上職位要求。
  • 有多次企業實習經驗,開發全端網頁,使用 C# 及 Angular 框架。並使用 Git 版本控制大型專案。
  • 有產學合作專案, 負責後端 API 與關聯式資料表設計。
  • 多項網頁/app開發專案經驗,包括校內課程、企業實習專案、產學合作專案等。
  • 重視系統需求分析與使用流程設計,曾加入新創擔任專案管理實習生,嚮往進入軟體公司及IT部門。

自我不足

  • Hadoop, Spark等Parallel Computing技術不熟。
  • Linux 不熟,遇到底層硬體技術會有瓶頸。
  • 尚未養成leetcode每日刷題習慣,面試白板題時可能會因缺乏手感而失誤。

模擬面試題目

Q:C++ 中的 pointer 和 reference 差異?

模擬回答

pointer:可以為 nullptr、可重新指向其他對象、需要用 dereference 的方式 (運算符 * ) access。

reference:必須在初始化時賦值(不能為空)、不能改變引用的目標、不需要 dereference 運算符,可直接 access。reference 可以當作是原來對象的 alias

Q:什麼是多型?什麼是泛型?

模擬回答

多型:繼承是多型能夠實現的必要條件,而多型就是原有的類別提供一個介面或抽象類別,目的是為了消除類別間的耦合性,使程式更容易維護與擴充。也就是可以利用相同名稱的方法實現不同的實例。

泛型:在設計類別或方法時,可以先宣告型別參數 T,直到建立實例時才要宣告其參數,優點是可以重複利用程式碼。

Q:什麼是DevOps?

模擬回答

DevOps 由 Development 和 Operations 結合而成
鼓勵更快、更出色的應用程式開發,以及更快地將新的或修訂後的軟體功能或產品發佈給客戶。

1.減少從設計、開發(需求、程式碼)到測試、部署(程式)的時間
2.加強回饋機制(包括但不限於監控、告警)
3.過程中持續快速的疊代、學習

Q:什麼是CI/CD?

模擬回答

CI 持續整合 (Continuous Integration):每當開發人員 push 程式碼變更到 remote repository 時,觸發自動化 build 和 test 的程序,確保這次的變更是符合規範且通過所有測試案例的,減少有問題的程式碼影響到生產環境的機會。

CD 持續交付 / 持續部署 (Continuous Delivery / Continuous Deployment):Continuous Delivery 和 Continuous Deployment 的差別就是人為手動部署和自動化部署而已。

相關技能

  • Shell Script(Command):與作業系統 Kernel 互動的語言(指令)是一切的基礎
  • SSH 連線:創建公鑰和私鑰,以特定使用者連線至遠端 Server 進行操作
  • Git 版本控制:任何一種 Git workflow,用來管理分支、切換版本、合併流程
  • 容器化技術:用來隔離環境,快速搭建和部署(e.g. docker, docker-compose)
  • 程式碼規範檢查:檢查你的程式碼,是否符合團隊規範的程式碼風格
  • 單元測試、整合測試、自動化測試:檢查你的程式碼,能否在目標環境正常運作

相關工具

  • 最基本的建立、編輯腳本
  • 相容各 Git 程式碼託管平台
  • 視覺化呈現工作流(Workflow)、狀態(Status)和進度(Progress)
  • 管理不同使用者權限(Maintainer, Developer, Reviewer, etc.)
  • 可將任務分散給多個 Runner / Worker 執行
  • 設定成功 / 失敗發送信件通知
  • 支持第三方工具整合

Q:什麼是Thread?

模擬回答

Process是OS分配資源之對象單位,而Thread才是OS分配CPU時間之對象單位

  • 獨立:stack、register、counter
  • 共用code, date(共用變數區), files

行程在進行Context Switch時,需要保存整個Process的狀態資訊,包括Counter、CPU registers、PCB,在處理這個過程花費的CPU相對Thread較多,因為Thread僅需要保存他自己的CPU register而已。

參考面試經驗/職缺分享