嵌入式軟體面試題總結(1)

2021-09-24 09:37:38 字數 2149 閱讀 3443

這個是一家做led螢幕的公司的題,崗位是c++開發。

時間緊,挑了幾個重點的到網上找了找解釋,明天面試回來用**都驗證一遍。

1,const和static

c語言關鍵字

const就是用來限定乙個變數不允許被改變的

修飾符,const修飾的變數不可修改,但並不是嚴格意義的常量。

使用 const

字首宣告指定型別的常量,它限定乙個變數不允許被改變,產生靜態作用。

const 推出的初始目的,正是為了取代預編譯指令,消除它的缺點,同時繼承它的優點。

可以保護被修飾的東西,防止意外的修改,增強程式的健壯性。如果修改const常量,編譯器就會報錯。

const常量,在第一次使用時分配記憶體。編譯器通常不為普通const常量分配儲存空間,而是將它們儲存在符號表中,這使得它成為乙個編譯期間的常量,沒有了儲存與讀記憶體的操作,使得它的效率也很高。

const定義常量從彙編的角度來看,只是給出了對應的記憶體位址,而不是像#define一樣給出的是立即數,所以,const定義的常量在程式執行過程中只有乙份拷貝,而#define定義的常量在記憶體中有若干份拷貝。

2,virtual關鍵字

為c++關鍵字,virtual宣告的函式為虛函式,告訴編譯器不要靜態鏈結。

3,public,protected,private修飾作用

摘自runoob

派生類可以訪問基類中所有的非私有成員。因此基類成員如果不想被派生類的成員函式訪問,則應在基類中宣告為 private。

我們可以根據訪問許可權總結出不同的訪問型別,如下所示:

訪問public

protected

private

同乙個類

yesyes

yes派生類

yesyes

no外部的類

yesno

no 乙個派生類繼承了所有的基類方法,但下列情況除外:

當乙個類派生自基類,該基類可以被繼承為public、protectedprivate幾種型別。繼承型別是通過上面講解的訪問修飾符 access-specifier 來指定的。

我們幾乎不使用protectedprivate繼承,通常使用public繼承。當使用不同型別的繼承時,遵循以下幾個規則:

4,指標和引用的區別

來自

①從現象上看,指標在執行時可以改變其所指向的值,而引用一旦和某個物件繫結後就不再改變。這句話可以理解為:指標可以被重新賦值以指向另乙個不同的物件。但是引用則總是指向在初始化時被指定的物件,以後不能改變,但是指定的物件其內容可以改變。

②從記憶體分配上看,程式為指標變數分配記憶體區域,而不為引用分配記憶體區域,因為引用宣告時必須初始化,從而指向乙個已經存在的物件。引用不能指向空值。

注:標準沒有規定引用要不要占用記憶體,也沒有規定引用具體要怎麼實現,具體隨編譯器 

③ 從編譯上看,程式在編譯時分別將指標和引用新增到符號表

上,符號表上記錄的是變數名及變數所對應位址。指標變數在符號表上對應的位址值為指標變數的位址值,而引用

在符號表上對應的位址值為引用物件的位址值

。符號表生成後就不會再改,因此指標可以改變指向的物件(指標變數中的值可以改),而引用物件不能改。這是使用指標不安全而使用引用安全的主要原因。從某種意義上來說引用可以被認為是不能改變的指標

。④不存在指向空值的引用這個事實,意味著使用引用的**效率比使用指標的要高。因為在使用引用之前不需要測試它的合法性。相反,指標則應該總是被測試,防止其為空。

⑤理論上,對於指標的級數沒有限制,但是引用只能是一級。如下:

int** p1;         // 合法。指向指標的指標

int*& p2;         // 合法。指向指標的引用

int&* p3;         // 非法。指向引用的指標是非法的

int&& p4;         // 非法。指向引用的引用是非法的

注意上述讀法是從左到右。 

5,寫乙個網路通訊端

嵌入式軟體面試題一

1 請寫出你所知道的c 語言關鍵字。auto 宣告自動變數 switch 用於開關語句 case 開關語句分支 break 跳出當前迴圈 default 開關語句中的 其它 分支 goto 無條件跳轉語句 do 迴圈語句的迴圈體 while 迴圈語句的迴圈條件 if 條件語句 else 條件語句否定...

嵌入式軟體經典面試題

用預處理命令 define宣告乙個常數,用以表明一年中有多少秒 忽略閏年問題 define year 60 60 24 365 ul考點 1 define語法的基礎知識 2 懂得預處理器將為你計算常數表示式的值,因此,直接寫出你是何年機斷一年中有多少秒而不是計算出實際的值,是更清晰沒有代價的。3 意...

嵌入式面試題

15 typedef 在c語言中頻繁用以宣告乙個已經存在的資料型別的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子 define dps struct s typedef struct s tps 以上兩種情況的意圖都是要定義dps 和 tps 作為乙個指向結構s指標。哪種方法更好呢?...