# 資訊科技產業專案設計課程作業 4 ## [Software Engineer, Chrome OS Kernel](https://careers.google.com/jobs/results/125197406972060358-software-engineer-chrome-os-kernel/?distance=50&q=chrome%20OS) ### 職位說明 - Merge upstream features and fixes into Chrome OS kernel branches as well as work with upstream open source projects to upstream Chrome OS developed code - Track kernel stability across devices and releases, and improve tooling to do so - Develop new features in various areas of the kernel - Partner with other teams in their use of specific kernel features, (e.g. tool development for said features) - Find and fix bugs in the kernel related to Chrome OS platforms and features ### 職位需求 - Experience in C/C++ programming. - Experience in the field of computer science, with experience in data structures, algorithms and software design. - Experience working with open source projects - Experience in debugging and instrumenting complex problems, involving multiple operating system components and tools ### 個人能力分析 - 有投入開源的作業系統專案經驗 - 曾參與開發嵌入式系統 - 熟悉 Armv8 架構開機設定流程 - 會調整 Linux Kernel 組態與整合 upstream 修補 ### 面試題目 ## [Embedded Software engineer](https://careers.mediatek.com/eREC/JobSearch/JobDetail/MTK120170503001?langKey=en-US) ### 職位說明 - Port the latest Linux Kernel to MediaTek ARM based SOC. - Optimize the Linux Kernel for maximum performance. - Upstream MediaTek drivers to Linux ### 職位需求 - At least 4 years of experience with embedded Linux software development. - Knowledge and experience with Linux kernel. - Strong programming skills in C. - Experience with multi-processors programming. - Experience with Android application framework. ### 個人能力分析 - 有投入開源的作業系統專案經驗,並移植到嵌入式硬體執行 - 熟悉 Armv8 架構開機設定流程,但還不了 device tree 的編寫、使用方式 - 有追蹤過部分的 Linux 核心程式碼,但是沒有 upstream 的經驗 ### 面試題目 - **Process 及 Thread 的差別跟比較** 共享資源的程度不同,在 Linux 核心當中, process 與 thread 都使用 `task_struct` 來建立,但 thread 會共享同一個 address space 而 process 之間則是獨立的 address space - **如何避免 Race Condition** 可以使用 semaphore 或 mutex 等作業系統所提供的同步工具來保護共享資源的存取與使用。在 `csv2json` 這個專案中,我就使用到 semaphore 來保護所有 thread 共享的 working queue,當有新的任務進到 working queue 時,酒會使用 conditional veriable 喚醒執行緒執行任務。 ###### tags: `info2021`