---
# System prepended metadata

title: info2025-homework3
tags: [面試]

---

# [2025資訊科技產業專案設計第3次作業](https://hackmd.io/@sysprog/info2025-homework3)

### 1. [Google Software Engineering Intern, Summer 2026](https://www.google.com/about/careers/applications/jobs/results/95392037762671302-software-engineering-intern-summer-2026)
<details>
  <summary>詳細敘述</summary>
Minimum qualifications:
    
- Currently pursuing a Bachelor’s, Master's, or PhD degree in Computer Science, or a related technical field.
- Experience in software development and coding in at least one general purpose programming language (e.g., Java, C, C++, Python, JavaScript, C#, Go, etc.).


Preferred qualifications:

- Knowledge of Unix/Linux environments, Machine Learning, Tensorflow, or embedded systems.
- Ability to showcase tech projects and participate in computer science-related extracurricular activities.
- Available to work full time for 10-12 weeks outside of university term time and to return to a degree program after completion of the internship.

    
Responsibilities:

- Apply knowledge gained in computer science courses to real-world problems.
- Analyze information and evaluate results to choose the best solution to effectively solve problems.
- Develop scripts to automate routine tasks.
- Create and support a productive and innovative team. Work with peers, managers, and teams.

</details>

### 自身匹配程度
> 對intern的要求不高，現階段的我可以嘗試看看

Minimum qualifications:
- 有各種語言(Java, C, C++, Python, C#)的開發經驗，可以參考github上的專案。
Preferred qualifications:
- 日常開發使用Linux，熟悉Linux基本指令及操作。
- 不了解ML、Tensorflow、 embedded systems，關於ML、Tensorflow有打算選修大學部的課程，embedded systems系少貌似沒有相關的課程，除了微算機||~~希望jserv老師可以開課~~||



### 2. [Google Software Engineer, Mobile, Android Permissions](https://www.google.com/about/careers/applications/jobs/results/117224102778806982-software-engineer-mobile-android-permissions)

<details>
  <summary>詳細敘述</summary>
Minimum qualifications:

- Bachelor’s degree or equivalent practical experience.
- 2 years of experience programming in Java or Kotlin.
- 2 years of experience Android application development.


Preferred qualifications:

- Master's degree or PhD in Computer Science or related technical field.
- 2 years of experience with performance, large scale systems data analysis, visualization tools, or debugging.
- 2 years of experience with data structures or algorithms in either an academic or industry setting.
- Experience with embedded systems or operating systems.
- Proficiency in code and system health, diagnosis and resolution, and software test engineering.

Responsibilities:

 - Write product or system development code.
 - Review code developed by other engineers and provide feedback to ensure best practices (e.g., style guidelines, checking code in, accuracy, testability, and efficiency).
 - Contribute to existing documentation or educational content and adapt content based on product/program updates and user feedback.
 - Triage product or system issues and debug/track/resolve by analyzing the sources of issues and the impact on hardware, network, or service operations and quality.
 - Participate in, or lead design reviews with peers and stakeholders to decide amongst available technologies.

</details>
### 自身匹配程度
- 對Java有一定程度的了解，有使用過Spring boot開發[專案](https://github.com/Seanachan/Kungnection)的經驗，但時間不到兩年那麼長
- 沒有Android的開發經驗。
- OS經驗不足，打算下學期選修「Linux核心設計」
- Embedded systems經驗不足，暫時沒有想法，想嘗試但不知如何下手。
- 現階段專案開發、debug經驗不足。

### 3. [NVIDIA Software Linux Engineer](https://nvidia.eightfold.ai/careers?query=linux&start=0&pid=893391215894&sort_by=relevance)
<details>
    <summary>詳細敘述</summary>
What you’ll be doing:

In this role you will involve designing and developing new features within the Linux driver and user space for the leading distributions, managing packaging for Linux distributions, and performing kernel back-ports to support emerging features. The ideal candidate will be technically proficient, customer-focused, and capable of collaborating effectively across teams and with external clients.

What we need to see:
- BS in Computer Science, Computer/Software Engineering or related field
- 4+ years work experience in a software development.
- Extensive experience in Linux kernel development and Linux driver design.
- Proficiency in Linux package management, deployment, and maintenance.
- Hands-on experience with kernel back-porting and patch management.
- Excellent communication skills with a customer-centric approach.
- Strong ability to collaborate and work efficiently in a fast-paced environment.
- Programming Languages: Have experience programming in C++/C & Python as well as scripting languages
- You should be focused, learn quickly, and have strong analytical skills with attention to detail. Strong troubleshooting and debugging skills.
- Demonstrated uses of creative thinking for solutions to exciting problems that matter.
    
Ways to stand out from the crowd:
- MS in Computer Science, Electrical Engineering, or a related field.
- Extensive experience in Linux operating system development, contributing to overall OS functionality.
</details>

### 自身匹配程度
- 工作經驗不足，可以積極尋找實習機會。
- Linux kernel經驗不足，預計下學期選修「Linux核心設計」。
- 有使用過pacman、apt、等package management，其中有寫過pacman的PKGBUILD。
- 熟悉C/C++，但沒有實際專案開發經驗。

 
## 模擬面試Linux相關題目(來自學長轉述)
> 🧔：interviewer 👶：interviewee

🧔：如果一個檔案系統無法建立新檔案，請問可能的原因？
👶：可能的原因有很多種，有可能是儲存空間不足、權限不足、或是inode用完了。

🧔：請你說明什麼是inode
👶：inode是在UNIX系統上用來描述FS的資料結構
> 這部分我不太熟，OS還沒上到FS。

🧔：你會怎麼排除問題？
👶：我在自己的筆電上有遇過root分區滿了的情況，可以使用`df -h`、`df -i`來檢查硬碟使用量。

---

🧔：請你說明`kill`指令的作用
👶：`kill`指令是使用我個人使用頻率很高的指令，因為我的waybar跟fcitx偶爾會有問題或是需要重新啟動，這時候就需要使用`kill`然後重開。`kill`用在關閉特定的process，會發送`kill()`的system call，可根據process的PID使用指令，例如`kill -9 1234`

🧔：`kill -9`殺不掉一個process，分析可能的原因。
👶：可能是一個zombie process，process 其實已經終止，但parent process還沒有exit。它只剩下一個PID和一個存在process table裡的紀錄，本身已經沒有程式碼在執行。

---
🧔：請你說明`exec()`system call的作用
👶：`exec()`用於開啟一個新的process並取代現在正在執行的process，在修OS時有用過`exec()`和`fork()`實做過簡單的shell，shell會先`fork()`，接著在child process呼叫`exec()`指令。


🧔：為什麼要 fork 再 exec？能不能直接 exec？
👶：因為`exec()`會將整個program image取代掉，許多情況都需要保留program image，所以需要使用`fork()`產生新的process。

🧔：請你說明`fork()`system call的作用
👶：`fork()`會產生新的process(child)，parent process會收到child process的PID為回傳值，child process則會收到0為回傳值。


### [履歷](https://docs.google.com/document/d/1bfB-NrnscqzyFYvzEd4yAPePxUlr4lNcLANdPxhtCbg/edit?tab=t.0#heading=h.r2zj487i63ie)
