1. 程式人生 > >嵌入式軟體工程師【面經:第一部分-C語言基礎】

嵌入式軟體工程師【面經:第一部分-C語言基礎】

1、關鍵字static的作用是什麼?
這個簡單的問題很少有人能回答完全。在C語言中,關鍵字static有三個明顯的作用:
1). 在函式體,一個被宣告為靜態的變數在這一函式被呼叫過程中維持其值不變。
2). 在模組內(但在函式體外),一個被宣告為靜態的變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問。它是一個本地的全域性變數。
3). 在模組內,一個被宣告為靜態的函式只可被這一模組內的其它函式呼叫。那就是,這個函式被限制在宣告它的模組的本地範圍內使用。
大多數應試者能正確回答第一部分,一部分能正確回答第二部分,同是很少的人能懂得第三部分。這是一個應試者的嚴重的缺點,因為他顯然不懂得本地化資料和程式碼範圍的好處和重要性。

2引用與指標的區別是什麼?
1) 引用必須被初始化,指標不必。
2) 引用初始化以後不能被改變,指標可以改變所指的物件。
3) 不存在指向空值的引用,但是存在指向空值的指標。
指標通過某個指標變數指向一個物件後,對它所指向的變數間接操作。程式中使用指標,程式的可讀性差;而引用本身就是目標變數的別名,對引用的操作就是對目標變數的操作。
流操作符<<和>>、賦值操作符=的返回值、拷貝建構函式的引數、賦值操作符=的引數、其它情況都推薦使用引用。

3.h標頭檔案中的ifndef/define/endif 的作用?
答:防止該標頭檔案被重複引用。

4#include

#include “file.h”的區別?
答:前者是從Standard Library的路徑尋找和引用file.h,而後者是從當前工作路徑搜尋並引用file.h。

5、描述實時系統的基本特性
答 :在特定時間內完成特定的任務,實時性與可靠性。

實時作業系統:FreeRTOS、Vxworks、uCOS、RTLinux

非實時作業系統:Linux/Windows/OSX

6、全域性變數和區域性變數在記憶體中是否有區別?如果有,是什麼區別?
答 :全域性變數儲存在靜態資料區,區域性變數在堆疊中。