# 2016q3 Homework1 面試題目 contributed by <``煙捲``> ## 1. 公司名稱:聯發科 職務說明:4G 工具軟體工程師 面試題目: ``` 1. ask: the value of v? unsigned long v1 = 0x 00001111; unsigned long v2 = 0x 00001202; unsigned long v; v = v1&(~v2); v = v | v2; 2. ask: the value of *(a+1), (*p-1)? int a[5] ={1,2,3,4,5}; int *p = (int *)(&a+1); 3. Re-write void(*(*papf)[3])(char *); typedef__________; pf(*papf)[3]; 4. Explain lvalue and rvalue. ``` 流程: N/A 出處:[wubui MTK 面試心得分享](http://wubui.pixnet.net/blog/post/41242054-%5B%E9%9D%A2%E8%A9%A6%5D-%E8%81%AF%E7%99%BC%E7%A7%91%E6%8A%80-mtk-(%E5%85%A7%E5%90%AB%E8%80%83%E9%A1%8C)) ## 2. 公司名稱:晨星科技 Mstar 職務說明: + Flat Panel TV System S/W Senior Engineers + Embedded Communication軟體工程師 面試題目: ``` 1. ask: the content of array a? int a[]={6,7,8,9,10}; int *p=a; *(p++)+=123; *(++p)+=123; 2. Explain process and thread. ``` 流程: N/A 出處:[wubui MTK 面試心得分享](http://wubui.pixnet.net/blog/post/41242054-%5B%E9%9D%A2%E8%A9%A6%5D-%E8%81%AF%E7%99%BC%E7%A7%91%E6%8A%80-mtk-(%E5%85%A7%E5%90%AB%E8%80%83%E9%A1%8C)) ## 3. 公司名稱:群暉 職務說明:N/A 面試題目: ``` 1. 講解一下 Process 及 Thread 的差別跟比較: 2. Stack 跟 Heap 的差別: 3. 請解釋一下 Virtual Function: 4. 請解釋一下 Synchronous call 跟 Asynchronous call 的差別: 5. 比較 Stack 跟 Queue 的差別 => 實作一下 Stack。 ``` 流程: N/A 出處:[npes87184's blog](https://npes87184.github.io/%E9%9B%9C%E8%A8%98/2015/09/05/interviewShare.html) ## 4. 公司名稱:聯發科 職務說明:N/A 面試題目: ``` 1. 什麼是OS: 2. 講解一下 Process 及 Thread 的差別跟比較: 3. 講解一下如何避免 Race Condition: 4. 講解一下什麼是 Hazard: ``` 流程: N/A 出處:[npes87184's blog](https://npes87184.github.io/%E9%9B%9C%E8%A8%98/2015/09/05/interviewShare.html) ## 5. 公司名稱:群暉科技 職務說明:軟體工程師 (題目不完整,僅列出比較有重點描述的題目,大部份都是說概念相關的題目而已) 面試題目: ``` 1. pointer操作、pointer/reference的差別與實作 2. 最短路徑演算法等等圖論的東西 3. 找出array中重複的數字 4. 動態擴充的stack和queue實作 5. Multi-Process / Multi-Thread之間的同步與溝通問題 6. Virtual Memory的觀念、Page Fault、LRU演算法 7. 算樹的高度、節點數量、BFS/DFS 8. Linked-List相關的題目(排序、插入等) ``` 流程: N/A 出處:[npes87184's blog](https://npes87184.github.io/%E9%9B%9C%E8%A8%98/2015/09/05/interviewShare.html) ## 6. 公司名稱:聯發科技 MediaTek 職務說明:N/A 面試題目: ``` 1.「10題的C語言填充和選擇題」(還是超過10題有點忘了),基本上是多重指標、函式指標、各種Macro、遞迴的 trace code、extern、static、const、volatile等等。 2.「7題程式題」線上作答,程式必須通過隨機的測試輸入才給對,作答時間每題五分鐘,可以使用C或C++。(以下是記得的部份) + 給定一篇 paragraph,將它轉成二進位輸出。 + 給定一個正整數數列進行排列,使其奇數在前,偶數在後。奇數部份由小到大排列,偶數部份由大到小排列。 + 給定一個正整數n,求出第n個質數。 --------------------------------------------- 面試題: 1. 什麼情況下會產生 stack overflow,如何避免。 2. 講講Interrupt,寫 ISR要注意什麼。 3. 什麼時候會產生 race condition。 4. DMA是什麼,好處是?請簡單在白板上畫出他的架構圖。 5. 講講 memory hierarchy 6. Edge trigger和 level trigger的差別。 7. 有沒有寫過Kernel space的程式。 8. 碰過最難的或印像深刻的bug,你怎麼處理的? 9. 專題如何分工,介面怎麼切割?是否有版本控管? ``` 流程: 1. 上機考兩部份皆英文題 + 第一部份是「10題的C語言填充和選擇題」 + 第二部分是「7題程式題」 2. 一面(投影片介紹)幾乎每一頁都會打斷你,問很多相關問題,自介同時還會順便考一點技術問題 3. 二面,一樣使用投影片來介紹,不過這階段主管幾乎沒有考技術問題,主要以了解你經歷、專案、修課情況居多 出處:[LEE CHAO YUAN](https://www.facebook.com/notes/lee-chao-yuan/2015-%E7%A0%94%E6%9B%BF%E9%9D%A2%E8%A9%A6%E4%B9%8B%E5%B0%8F%E5%B0%8F%E5%BF%83%E5%BE%97/994199820640092/) ## 7. 公司名稱:晨星半導體MStar 職務說明:N/A 面試題目: 大部份題目已忘,僅記得以下這些 ``` C/C++筆試 1.大致上有function pointer、volatile variable 2.蠻多程式的 refactoring、optimization、debugging 3. Singleton pattern 白板題是實作 binary search tree ``` 流程: 1. 先進行20題左右的C/C++筆試(考C++較多),答題時間一個小時 2. 一面:要求做20分鐘的投影片自我介紹,主管在聽完簡報後才開始提問,基本上針對我的專案、修課進行相關的技術提問,然後有問我為什麼筆試的題目要這樣優化程式碼或做這樣的修改這樣子 3. 二面:介紹部門工作內容(一面也有),然後問的問題也比較沒有標準答案,例如主管以我做過的專案問我會如何再進一步擴充和豐富原本的內容,有什麼想法嗎?可能會碰到什麼問題?那你打算要用什麼方式怎麼解決? 出處:[LEE CHAO YUAN](https://www.facebook.com/notes/lee-chao-yuan/2015-%E7%A0%94%E6%9B%BF%E9%9D%A2%E8%A9%A6%E4%B9%8B%E5%B0%8F%E5%B0%8F%E5%BF%83%E5%BE%97/994199820640092/) ## 8. 公司名稱:群暉 Synology 職務說明:N/A 面試題目: 大部份題目已忘,僅記得以下這些 ``` 1. 在嵌入式平台上面使用過哪些Linux tool、Debug tool、Profiling tool 2. 你說你使用過perf 效能分析工具,那它的原理是什麼,為什麼可以作到。 3. 請講一下你用過GDB的什麼功能,用來解決什麼問題。 4. 在嵌入式平台上開發跟在一般PC上開發有什麼不一樣和要注意的地方。 5. TCP/UDP差別在哪,用途?Socket程式大概怎麼寫?(三向交握那些) 6. Client和Server在做網路通訊時,recv buffer包含了什麼資訊。 7. Critical section是什麼?(之後我提到了Mutex) 8. Mutex程式大概怎麼寫?撰寫時有什麼要注意的地方? 9. Process 和 thread 差別?如果是不同process,如何保護Critical section? 10. 有沒有寫過shared memory,大概怎麼寫,寫的時候要注意什麼。 11. 原本好像要問我fork(),不過之後不知道為什麼就沒問了 12. 講講虛擬記憶體和分頁機制。 13. 現在有兩個整數集合要進行差集,怎麼寫?為什麼用這種資料結構?有沒有更快的方法?時間和空間複雜度各是多少?(我舉了array、linked list、binary search tree、hash table的實作方式) 14. 解釋對稱式和非對稱式加密,為什麼他們可以運作,如何運作。 15. 公鑰跟私鑰的差別跟用途?數位簽署的原理? 16. Linux 系統如何儲存使用者密碼。 17. 為什麼能確保加密資料不會被字典攻擊。 18. 講講SQL injection 跟XSS 攻擊。 19. 為什麼宣告並初始一個超大陣列會crash,而宣告成static就不會,他們的儲存方式有什麼差別。(之後我有講到stack、heap、global) 20 .stack 和 heap差別是什麼。 21. function在進行呼叫的時候OS會作什麼事情,組合語言大概怎麼寫。 22. 白板題:給定一個數列和一個數字,請寫出partition的程式,左邊小於此數字,右邊大於等於此數字,要確保所有特殊數列都能通過測試。 23. 白板題:順時鐘旋轉一張 NxN 的灰階圖片,不可以使用額外的二維陣列。 ``` 流程: 1. 進去小型面談室,自我介紹三分鐘,接下來就針對我的自我介紹、論文、經歷進行提問,差不多告一段落後就進行技術面試問題 出處:[LEE CHAO YUAN](https://www.facebook.com/notes/lee-chao-yuan/2015-%E7%A0%94%E6%9B%BF%E9%9D%A2%E8%A9%A6%E4%B9%8B%E5%B0%8F%E5%B0%8F%E5%BF%83%E5%BE%97/994199820640092/) ## 總結 很多群暉、台積電、聯發科等考題都有Linked List、Thread/Process等必考題,但版上都是稍微帶過,沒有詳細題目所以沒列出來....,資料結構、演算法,計算機結構都要好好念才行 :smile: ## 其他相關資源 + [軟體工程師面試資源整理](https://hungys.xyz/software-engineer-interview-resources/) + [C Interview Questions and Answers](http://placement.freshersworld.com/c-interview-questions-and-answers/33121831412) +