面試問答
解釋stack, heap, static variable, global variable
在嵌入式系統中,程式...
1. 下面程式碼有什麼問題:
int main()
{
int *ptr=(int *)malloc
(sizeof(int));
int a=560;
ptr=&a;
free(ptr);
return 0;
}
ans: memory leak
2. 解釋stack, heap, static variable, global variable 差異
3. smart pointer的用途跟有哪些?
4. override 跟 overload的差異?
5. virtual function的用途? 子類別一定要用到這個virtual function嗎? 什麼情況下一定要用到? pure virtual function
6. call by reference 跟 call by address的差異
7. static member function跟static variable的用途是什麼?
8. heap跟stack哪個記憶體是連續,哪個是不連續的? heap要怎麼讓記憶體連續? 有什麼作法?
9. overload的時候function的input跟名稱都相同的話,return 型態如果不一樣的話可以嗎?
10.
題目要求:
有一個 Bookmark List
each bookmark [start, end]
現在給定一個 target time range [TargetStart, TargetEnd]
請找出 bookmark list 中跟 target 有重疊的 bookmark 有哪些
包含等於
請先實作 insert() 跟 search()
面試問答
解釋stack, heap, static variable, global variable
在嵌入式系統中,程式的記憶體主要分為 stack(堆疊)、heap(堆積)、static(靜態) 和 global(全域) 區段。
Stack 是用來存放函式呼叫時的區域變數、參數和回傳位址。它由編譯器自動管理,成長方向通常向下,分配和釋放速度極快,但大小有限,太深的遞迴或大陣列容易造成 stack overflow。
Heap 是由程式員手動管理(用 malloc/free 或 new/delete),適合需要動態分配的記憶體。但嵌入式系統通常避免用 heap,因為容易產生記憶體碎片,而且沒有 MMU 的 MCU 很難追蹤洩漏。
Static variable 是在函式內宣告但加上 static 關鍵字的變數。它只初始化一次,生命週期持續整個程式執行期間,但作用域仍限於該函式。
Global variable 是在所有函式外宣告的變數,預設放在 .data(有初始值)或 .bss(未初始化)段,程式一啟動就分配,所有函式都能存取,但濫用會降低模組化與可測試性。
在韌體開發中,我們通常會避免 heap、謹慎使用 global,並用 static 來封裝狀態,以提升穩定性與可預測性。
面試建議
我只能說快逃, 因為群暉雖然領的不錯. 不過最近越來越不好了. 在裡面通常不是在做ppt就是在做ppt, 實際工作沒什麼幫助.