3道經典嵌入式Linux面試題

2021-10-02 22:41:17 字數 1047 閱讀 2149

題一: 簡述memcpy和strcpy的區別?

題二:訊號量與互斥鎖的區別?

題三:簡述程式編譯的過程?

題一答案:

(1)複製的內容不同。strcpy只能複製字串,而memcpy可以複製任意內容,例如字元陣列、整型、結構體、類等。

(2)複製的方法不同。strcpy不需要指定長度,它遇到被複製字串的結束符"\0"才結束,所以容易溢位。memcpy則是根據其第3個引數決定複製的長度。

(3)用途不同。通常在複製字串時用strcpy,而需要複製其他型別資料時一般用memcpy。

題二答案:

(1)互斥量用於執行緒的互斥,訊號量用於執行緒的同步。

互斥:是指某一資源同時只允許乙個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。  

同步:是指在互斥的基礎上(大多數情況),通過其它機制實現訪問者對資源的有序訪問。在大多數情況下,同步已 經實現了互斥,特別是所有寫入資源的情況必定是互斥的。少數情況是指可以允許多個訪問者同時訪問資源。

(2)互斥量值只能為0/1,訊號量值可以為非負整數。

也就是說,乙個互斥量只能用於乙個資源的互斥訪問,它不能實現多個資源的多執行緒互斥問題。訊號量可以實現多個同類資源的多執行緒互斥和同步。當訊號量為單值訊號量時,也可以完成乙個資源的互斥訪問。

(3)互斥量的加鎖和解鎖必須由同一執行緒分別對應使用,訊號量可以由乙個執行緒釋放,另乙個執行緒得到。 

題三答案:

預處理:預處理命令以符號「#」開頭。預處理相當於根據預處理命令組裝成新的c程式,不過常以i為副檔名。c語言的預處理主要有三個方面的內容: 

1. 巨集定義。

2. 檔案包含。

3. 條件編譯。 

編譯:  將預處理輸出的.i檔案轉化成.s彙編檔案。

這個階段編譯器主要做詞法分析、語法分析、語義分析等,在檢查無錯誤後後,把**翻譯成組合語言。

彙編:將彙編檔案翻譯成機器語言,並打包成可重定位目標程式的o檔案。該檔案是二進位制檔案,位元組編碼是機器指令。

面試題解析,3道經典嵌入式Linux面試題

題一 簡述memcpy和strcpy的區別?題二 訊號量與互斥鎖的區別?題三 簡述程式編譯的過程?題一答案 1 複製的內容不同。strcpy只能複製字串,而memcpy可以複製任意內容,例如字元陣列 整型 結構體 類等。2 複製的方法不同。strcpy不需要指定長度,它遇到被複製字元的串結束符 0 ...

嵌入式經典面試題

這些題實在太經典了 預處理器 preprocessor 1 用預處理指令 define 宣告乙個常數,用以表明1年中有多少秒 忽略閏年問題 define seconds per year 60 60 24 365 ul 我在這想看到幾件事情 1 define 語法的基本知識 例如 不能以分號結束,括...

嵌入式軟體經典面試題

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