嵌入式軟體工程師面試題

2021-08-04 05:52:08 字數 3017 閱讀 9714

embedded software design engineer

1 讀程式段,回答問題

int main(int argc,char *argv)

a) 寫出程式輸出

b) 在乙個可移植的系統中這種表示式是否存在風險?why?

#include "stdio.h"

int a=0;

int b;

static char c;

int main(int argc,char *argv)

a) 寫出程式輸出

b) 編譯器如果安排各個變數(a,b,c,d)在記憶體中的布局(eg. stack,heap,data section,bss section),最好用圖形方式描述。

__interrupt double compute_area(double radius)

3 c/c++基礎知識問題

a) 關鍵字volatile在編譯時有什麼含義?並給出三個不同使用場景的例子(可以偽**或者文字描述)。

b) c語言中static關鍵字的具體作用有哪些 ?

c) 請問下面三種變數宣告有何區別?請給出具體含義

int const *p;p是乙個指向常整型變數的指標。

int* const p;p是乙個指向整型變數的常數執政。

int const* const p;

4 嵌入式系統相關問題

a) 對於整形變數a=0x12345678,請畫出在little endian及big endian的方式下在記憶體中是如何儲存的。

b) 在arm系統中,函式呼叫的時候,引數是通過哪種方式傳遞的?

c) 中斷(interrupt,如鍵盤中斷)與異常(exception,如除零異常)有何區別?

5 設週期性任務p1,p2,p3的週期為t1,t2,t3分別為100,150,400;執行時間分別為20,40,100。請設計一種排程演算法進行任務排程,滿足任務執行週期及任務週期。

6 優先順序反轉問題在嵌入式系統中是一中嚴重的問題,必須給與足夠重視。

a) 首先請解釋優先順序反轉問題

b) 很多rtos提供優先順序繼承策略(priority inheritance)和優先順序天花板策略(priority ceilings)用來解決優先順序反轉問題,請討論這兩種策略。

參***:

1 5存在風險,因為c=c++%5;這個表示式對c有兩次修改,行為未定義,c的值不確定

int a=0; // data section

int b; // data section

static char c; // bss

int main(int argc,char *argv)

a=2,b=100,c=2,d=6,e=5

2a)isr不能返回乙個值;

b)isr不能傳遞引數;

c)浮點一般都是不可重入的;

d)printf函式有重入和效能上的問題。

3 a) 用volatile關鍵字定義變數,相當於告訴編譯器,這個變數的值會隨時發生變化,每次使用時都需要去記憶體裡

重新讀取它的值,並不要隨意針對它作優化。

建議使用volatile變數的場所:

(1) 並行裝置的硬體暫存器

(2) 乙個中斷服務子程式中會訪問到的非自動變數(全域性變數)

(3) 多執行緒應用中被幾個任務共享的變數

b) 在函式體,乙個被宣告為靜態的變數在這一函式被呼叫過程中維持其值不變。

在模組內(但在函式體外),乙個被宣告為靜態的變數可以被模組內所用函式訪問,但不能被模組外其它函式

訪問。它是乙個本地的全域性變數。

在模組內,乙個被宣告為靜態的函式只可被這一模組內的其它函式呼叫。那就是,這個函式被限制在宣告它的

模組的本地範圍內使用。

static全域性變數與普通的全域性變數有什麼區別:static全域性變數只初使化一次,防止在其他檔案單元中被引用;

static區域性變數和普通區域性變數有什麼區別:static區域性變數只被初始化一次,下一次依據上一次結果值;

static函式與普通函式有什麼區別:static函式在記憶體中只有乙份,普通函式在每個被呼叫中維持乙份拷貝

c) 乙個指向常整型數的指標

乙個指向整型數的常指標

乙個指向常整型數的常指標

4a) 0x12345678

little endian big endian 剛好反過來

高位址--〉 0x12 低位址--〉 0x12

0x34 0x34

0x56 0x56

低位址--〉 0x78 高位址--〉 0x78

b)引數<=4時候,通過r0~r3傳遞,>4的通過壓棧方式傳遞

c) 異常:在產生時必須考慮與處理器的時鐘同步,實踐上,異常也稱為同步中斷。在處理器執行到由於程式設計失誤而導致的錯誤指令時,或者在執行期間出現特殊情況(如缺頁),必須靠核心處理的時候,處理器就會產生乙個異常。

所謂中斷應該是指外部硬體產生的乙個電訊號,從cpu的中斷引腳進入,打斷cpu當前的執行;

所謂異常,是指軟體執行中發生了一些必須作出處理的事件,cpu自動產生乙個陷入來打斷當前執行,轉入異常處理流程

非同步與同步的區別`

56 高優先順序任務需要等待低優先順序任務釋放資源,而低優先順序任務又正在等待中等優先順序任務的現象叫做優先順序反轉

優先順序繼承策略(priority inheritance):繼承現有被阻塞任務的最高優先順序作為其優先順序,任務退出臨界區,恢

復初始優先順序。

優先順序天花板策略(priority ceilings):控制訪問臨界資源的訊號量的優先順序天花板。

優先順序繼承策略對任務執行流程的影響相對教小,因為只有當高優先順序任務申請已被低優先順序任務占有的臨界資源

這一事實發生時,才抬公升低優先順序任務的優先順序

嵌入式軟體工程師面試題1

1 include 2 using namespace std 34 void getmemory char p,int num 78 int main void 問題出在void getmemory char p,int num 裡面,這裡面的 p其實是main 裡str的乙個副本,編譯器總要為函...

嵌入式軟體工程師筆試題

一 選擇題 1 定義函式 時,預設函式的型別宣告,則函式型別取預設型別 a.void b.char c.float d.int 參 d 二 簡答 1 多型類中的虛函式表是compile time,還是run time時建立的?參 虛函式表是在編譯期就建立了,各個虛函式這時被組織成了乙個虛函式的入口位...

嵌入式軟體工程師面試歷程

記錄這個月的面試經驗和其中些許對於工作的看法。一 廣州優利康沛科技 這是我向公司提出離職申請,還沒離職就去面試的一家公司。該公司沒有筆試題,由乙個資深工程師直接面試我,都是問些基礎知識,例如 怎麼理解c語言中的定義和宣告?是否使用過實時作業系統?sizeof函式和strlen函式的區別?系統排程的原...