一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

嵌入式軟件工程師經(jīng)典的面試題

 輕浮山 2021-03-06


可能我們工作過(guò)一兩年,編程的時(shí)候也經(jīng)常用到這些知識(shí),但我相信還是有很多有經(jīng)驗(yàn)的工程師都不知道為什么。

下面直接分享,希望對(duì)即將找工作、跳槽的你有所幫助。

1

用#define聲明一個(gè)常數(shù),表明1年中有多少秒(忽略閏年問(wèn)題)?

答案:

#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
要點(diǎn):
A.沒(méi)有以分號(hào)結(jié)束;
B.懂得預(yù)處理器將為你計(jì)算常數(shù)表達(dá)式的值。即60 * 60 * 24 * 365而不是31536000.
C.考慮到了16位機(jī)將會(huì)溢出,巧妙運(yùn)用了UL。

2

寫一個(gè)“標(biāo)準(zhǔn)”宏MIN,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)?

答案:

#define MIN(A,B) ((A) <= (B) ? (A) : (B)) 
要點(diǎn):
A.參數(shù)用括號(hào)括起來(lái);
B.考察能否合理運(yùn)用條件運(yùn)算符;

3

Heap與Stack的差別?

答案:Heap是堆,Stack是棧。

Stack的空間由系統(tǒng)自動(dòng)分配/釋放,Heap上的空間手動(dòng)分配/釋放。

Stack空間有限,Heap是很大的自由存儲(chǔ)區(qū),malloc函數(shù)分配的內(nèi)存空間即在堆上。

網(wǎng)上經(jīng)典例子:

int a = 0; //全局初始化區(qū) char *p1;//全局未初始化區(qū) void main(void){ int b; //棧 char s[] = 'abc'; //棧 char *p2; //棧 char *p3 = '123456'; //123456\0在常量區(qū),p3在棧上 static int c =0; //全局(靜態(tài))初始化區(qū) p1 = (char *)malloc(10); //堆 p2 = (char *)malloc(20); //堆 }

4

用變量a給出下面的定義

A.一個(gè)整型數(shù)?

答案:int a;


B.一個(gè)指向整型數(shù)的指針?
答案:int *a;

C.一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數(shù)?
答案:int **a;

D.一個(gè)有10個(gè)整型數(shù)的數(shù)組?
答案:int a[10];

E.一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的?
答案:int *a[10];

F.一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針?
答案:int (*a)[10];

G.一個(gè)指向函數(shù)的指針,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)?
答案:int (*a)(int);

H.一個(gè)有10個(gè)指針的數(shù)組,該指針指向一個(gè)函數(shù),該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)?
答案:int (*a[10])(int);

5

關(guān)鍵字static的作用是什么?

A.在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過(guò)程中維持其值不變;

B.在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問(wèn),但不能被模塊外其它函數(shù)訪問(wèn)。它是一個(gè)本地的局變量;

C.在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用;

6

關(guān)鍵字const有什么含意?

答案:const意味著'只讀'。

如果回答'const意味著常數(shù)',面試官會(huì)覺(jué)得你只是一個(gè)業(yè)余的人。

7

下面的聲明都是什么意思?

代碼:

const int a;int const a;const int *a;int * const a;int const * a const;
答案:
A.前兩個(gè)的作用是一樣,a是一個(gè)常整型數(shù);

B.第三個(gè)意味著a是一個(gè)指向常整型數(shù)的指針(也就是,整型數(shù)是不可修改的,但指針可以);

C.第四個(gè)意思a是一個(gè)指向整型 數(shù)的常指針(也就是說(shuō),指針指向的整型數(shù)是可以修改的,但指針是不可修改的);

D.最后一個(gè)意味著a是一個(gè)指向常整型數(shù)的常指針(也就是說(shuō),指針指向的整型數(shù) 是不可修改的,同時(shí)指針也是不可修改的)。

8

關(guān)鍵字volatile有什么含意?

答案:一個(gè)定義為volatile的變量是說(shuō)這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。

精確地說(shuō)就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份。

9

sizeof和strlen的區(qū)別?

答案:sizeof是運(yùn)算符,在編譯時(shí)即計(jì)算好了;而strlen是函數(shù),要在運(yùn)行時(shí)才能計(jì)算。

10

在某工程中,要求設(shè)置一絕對(duì)地址為0x67a9的整型變量的值為0xaa66。編譯器是一個(gè)純粹的ANSI編譯器。寫代碼去完成這一任務(wù)?

答案:

int *p;p = (int*)0x67a9;*p = 0xaa66;

11

給定一個(gè)整型變量a,寫兩段代碼,第一個(gè)設(shè)置a的bit 3,第二個(gè)清除a 的bit 3。在以上兩個(gè)操作中,要保持其它位不變?

答案:

#define BIT3 (0x1 << 3)static int a;
void set_bit3(void){ a |= BIT3;}
void clear_bit3(void){ a &= ~BIT3;}

12

下面函數(shù)錯(cuò)誤嗎?

代碼:

int square(volatile int *ptr){ return *ptr * *ptr;}

答案:錯(cuò)誤;

正確寫法:

long square(volatile int *ptr){  int a;  a = *ptr;  return a * a;}
------------ END ------------

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    亚洲欧洲成人精品香蕉网| 婷婷色香五月综合激激情| 国产内射一级一片内射高清| 亚洲最新的黄色录像在线| 久久精品国产熟女精品| 果冻传媒精选麻豆白晶晶| 国产欧美韩日一区二区三区| 人妻熟女中文字幕在线| 一级欧美一级欧美在线播| 两性色午夜天堂免费视频| 欧美一区二区口爆吞精| 国产一区二区在线免费| 日韩无套内射免费精品| 国产又粗又猛又大爽又黄同志| 一区二区三区欧美高清| 91欧美日韩一区人妻少妇| 久久天堂夜夜一本婷婷| 嫩草国产福利视频一区二区| 国产精品久久三级精品| 午夜精品麻豆视频91| 成人午夜视频在线播放| 国产熟女高清一区二区| 国产免费一区二区三区av大片| 精品日韩av一区二区三区| 亚洲欧美黑人一区二区| 白白操白白在线免费观看| 日本乱论一区二区三区| 久久黄片免费播放大全| 国产精品欧美激情在线播放| 玩弄人妻少妇一区二区桃花| 欧美日韩国产黑人一区| 欧美日韩综合在线第一页 | 91香蕉视频精品在线看| 日本一区二区三区黄色| 在线一区二区免费的视频| 不卡视频在线一区二区三区| 久久一区内射污污内射亚洲| 婷婷开心五月亚洲综合| 久热在线视频这里只有精品| 国产在线一区二区三区不卡| 中文字幕精品少妇人妻|