嵌入式軟體面試題一

2021-06-18 00:36:31 字數 3525 閱讀 2821

1、請寫出你所知道的c

語言關鍵字。

auto :宣告自動變數

switch :用於開關語句

case:開關語句分支

break:跳出當前迴圈

default:開關語句中的「其它」分支

goto:無條件跳轉語句

do :迴圈語句的迴圈體

while :迴圈語句的迴圈條件

if:條件語句

else :條件語句否定分支(與 

if 連用)

enum :宣告列舉型別

union:宣告共用資料型別

extern:宣告變數是在其它檔案中宣告

for:一種迴圈語句

register:宣告暫存器變數

return :子程式返回語句(可以帶引數,也可不帶引數)迴圈條件

sizeof:計算資料型別長度

static :宣告靜態變數

struct:宣告結構體變數或函式

typedef:用以給資料型別取別名

unsigned:宣告無符號型別變數或函式

void :宣告函式無返回值或無引數,宣告無型別指標

volatile:說明變數在程式執行中可被隱含地改變

short :宣告短整型變數或函式

signed:宣告有符號型別變數或函式

char :宣告字元型變數或函式

float:宣告浮點型變數或函式

int: 宣告整型變數或函式

long :宣告長整型變數或函式

const :宣告唯讀變數

double :宣告雙精度變數或函式

2、ipv4把所有的

ip位址分為a、

b、c、

d、e五類。請寫出

b類位址和

c類位址的範圍和掩碼,

d類位址的用途是什麼?

分類 字首碼 開始位址 結束位址 對應cidr

修飾 預設子網掩碼

a類位址 0 0.0.0.0 127.255.255.255 /8 255.0.0.0

b類位址 10 128.0.0.0 191.255.255.255 /16 255.255.0.0

c類位址 110 192.0.0.0 223.255.255.255 /24 255.255.255.0

d類位址 (群播) 1110 224.0.0.0 239.255.255.255 /4 未定義

e類位址 (保留) 1111 240.0.0.0 255.255.255.255 /4 未定義

3、請簡述在linux

中多程序程式和多執行緒程式的區別。

4、列出目前linux

系統能支援的檔案系統,列舉常用的四個以上。

ext3 ext4 jffs2 yffs2 ubifs  cramfs

5、寫乙個「標準」巨集min

,這個巨集輸入兩個引數並返回較小的乙個?

#define  min(a, b)  (  (a)  <=  (b)  :  (a)  ?  (b)  )

6、什麼是mmu

,mmu

的作用?

mmu是

memory management unit

的縮寫,負責虛擬位址到實體地址的轉換,

提供硬體機制的記憶體訪問授權。

7、關鍵字volatile

有什麼含義,並給出幾個應用場合。

1. 定義的變數應該是異變的,防止編譯器優化,使得程式直接訪問原始記憶體位址。

2. 中斷服務程式中修改的供其它程式檢測的變數需要加volatile。

3. 多工環境下各任務間共享的標誌應該加volatile。

4. 儲存器對映的硬體暫存器通常也要加voliate

,因為每次對它的讀寫都可能有不同意義。

5. 頻繁地使用volatile

很可能會增加**尺寸和降低效能。

8、雙向鍊錶操作題:

/*節點定義*/

typedef srruct node

struct node *next;

struct node *previous;

}node;

/*鍊錶定義*/

typedef struct

node node;

int count;

} list;

#define head node.next

#define tall  node.previous

/*初始化乙個鍊錶*/

void lstinit (list *plist)

pplist->head=null;

pplist->tall=null;

pplist->count=0;

請編寫函式把乙個節點(pnode

)插入鍊錶

plist

中某個節點(

pprev

)之後。

9、請寫出strcpy 

和 memcpy 

的區別

1、strcpy

和memcpy

都是標準

c庫函式。

2、strcpy

提供了字串的複製。即

strcpy

只用於字串複製,並且它不僅複製字串內容之外,還會複製字串的結束符。

3、strcpy

函式的原型是:

char* strcpy(char* dest, const char* src);

4、memcpy

提供了一般記憶體的複製。即

memcpy

對於需要複製的內容沒有限制,因此用途更廣。

5、memcpy

函式的原型是:

void *memcpy( void *dest, const void *src, size_t count );

strcpy和

memcpy

主要有以下

3方面的區別。

5.1、複製的內容不同。

strcpy

只能複製字串,而

memcpy

可以複製任意內容,例如字元陣列、整型、結構體、類等。

5.2、複製的方法不同。

strcpy

不需要指定長度,它遇到被複製字元的串結束符

"\0"

才結束,所以容易溢位。

memcpy

則是根據其第

3個引數決定複製的長度。

5.3、用途不同。通常在複製字串時用

strcpy

,而需要複製其他型別資料時則一般用

memcpy。

6、實現原型:

char   *strcpy(char* strdest, const char* strsrc)

void *memcpy(void *dest, const void *src, size_t count)

嵌入式軟體經典面試題

用預處理命令 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指標。哪種方法更好呢?...

嵌入式面試題

1.main int ptr int a 1 printf d d a 1 ptr 1 這段程式的輸出是 a 2 2 b 2 1 c 2 5 d 以上均不是 2.考查自加操作 main 這段程式的輸出是 a i 4 j 2 b i 3 j 2 c i 3 j 4 d i 3 j 6 3.此題考查的是...