久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式招聘 > 嵌入式面試題 > 華為的嵌入式工程師面試題(有答案)

華為的(de)嵌入式(shi)工程師面試(shi)題(有(you)答(da)案) 時間:2015-09-21      來源(yuan):未知

有答案(an)的面(mian)試(shi)題,雖然不適合自我測試(shi),但是(shi)看看也無妨,畢竟(jing)對即將要面(mian)試(shi)同學而言,百(bai)益而無一(yi)害。如下(xia):

 (1)什(shen)么是(shi)預(yu)編(bian)譯(yi),何時需(xu)要預(yu)編(bian)譯(yi):

答案:

1、總是使用不經常改(gai)動的大型代碼體。

2、程序(xu)由(you)多(duo)個(ge)(ge)模(mo)塊組成,所(suo)有(you)模(mo)塊都(dou)使用一組標準(zhun)的包含文件和相(xiang)同的編譯選項(xiang)。在這種情況(kuang)下,可以將(jiang)所(suo)有(you)包含文件預編譯為(wei)一個(ge)(ge)預編譯頭。

(2)char * const p char const * p const char *p 上述三個有(you)什(shen)么區別(bie)?

答案:

char * const p; //常量(liang)指針(zhen),p的值(zhi)不可(ke)以修改

char const * p;//指(zhi)(zhi)向常量的(de)指(zhi)(zhi)針,指(zhi)(zhi)向的(de)常量值(zhi)不可(ke)以改

const char *p; //和char const *p

(3)char str1[] ="abc"; char str2[] = "abc"; const char str3[] ="abc"; const char str4[] = "abc"; const char *str5 ="abc"; const char *str6 = "abc"; char *str7 ="abc"; char *str8 = "abc"; cout < < ( str1 == str2 )< < endl; cout < < ( str3 == str4 ) < < endl; cout < <( str5 == str6 ) < < endl; cout < < ( str7 == str8 ) < < p>

結果是:0 0 1 1 str1,str2,str3,str4是數組變量,它們有(you)各自的內存空間(jian);而str5,str6,str7,str8是指針,它們指向相同的常量區域(yu)。

(4)以(yi)下代碼中(zhong)的兩個(ge)sizeof用法有問題嗎?

[C易] void UpperCase( charstr[] ) // 將 str 中的小寫字母(mu)(mu)轉換(huan)成(cheng)大寫字母(mu)(mu) { for( size_t i=0; i< endl; <="str[i]" str< cout ); str UpperCase( sizeof(str[0])

(5)一個32位(wei)的機器,該機器的指針是多少位(wei)答(da)案:

指(zhi)針(zhen)是多少位(wei)只要(yao)看地址總(zong)線(xian)的位(wei)數就(jiu)行了。80386以(yi)(yi)后的機子(zi)都是32的數據總(zong)線(xian)。所以(yi)(yi)指(zhi)針(zhen)的位(wei)數就(jiu)是4個字節了。

6、main() { inta[5]={1,2,3,4,5}; int *ptr=(int*)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); }

答案:2。5 *(a+1)就(jiu)(jiu)是(shi)(shi)(shi)(shi)a[1],*(ptr-1)就(jiu)(jiu)是(shi)(shi)(shi)(shi)a[4],執行結果是(shi)(shi)(shi)(shi)2,5 &a+1不(bu)(bu)是(shi)(shi)(shi)(shi)首(shou)(shou)地(di)(di)(di)址(zhi)+1,系統會認為加一(yi)(yi)(yi)個(ge)a數(shu)(shu)組(zu)的(de)偏移(yi),是(shi)(shi)(shi)(shi)偏移(yi)了一(yi)(yi)(yi)個(ge)數(shu)(shu)組(zu)的(de)大小(本例是(shi)(shi)(shi)(shi)5個(ge)int) int *ptr=(int*)(&a+1); 則ptr實(shi)際是(shi)(shi)(shi)(shi)&amp;(a[5]),也(ye)(ye)就(jiu)(jiu)是(shi)(shi)(shi)(shi)a+5 原因(yin)如(ru)下(xia): &a是(shi)(shi)(shi)(shi)數(shu)(shu)組(zu)指(zhi)(zhi)針(zhen),其類型(xing)(xing)為 int (*)[5]; 而指(zhi)(zhi)針(zhen)加1要(yao)(yao)根據指(zhi)(zhi)針(zhen)類型(xing)(xing)加上一(yi)(yi)(yi)定的(de)值,不(bu)(bu)同類型(xing)(xing)的(de)指(zhi)(zhi)針(zhen)+1之后增加的(de)大小不(bu)(bu)同 a是(shi)(shi)(shi)(shi)長度為5的(de)int數(shu)(shu)組(zu)指(zhi)(zhi)針(zhen),所以要(yao)(yao)加 5*sizeof(int) 所以ptr實(shi)際是(shi)(shi)(shi)(shi)a[5] 但是(shi)(shi)(shi)(shi)prt與(&a+1)類型(xing)(xing)是(shi)(shi)(shi)(shi)不(bu)(bu)一(yi)(yi)(yi)樣的(de)(這點很重要(yao)(yao)) 所以prt-1只會減去sizeof(int*) a,&a的(de)地(di)(di)(di)址(zhi)是(shi)(shi)(shi)(shi)一(yi)(yi)(yi)樣的(de),但意思不(bu)(bu)一(yi)(yi)(yi)樣,a是(shi)(shi)(shi)(shi)數(shu)(shu)組(zu)首(shou)(shou)地(di)(di)(di)址(zhi),也(ye)(ye)就(jiu)(jiu)是(shi)(shi)(shi)(shi)a[0]的(de)地(di)(di)(di)址(zhi),&a是(shi)(shi)(shi)(shi)對(dui)象(數(shu)(shu)組(zu))首(shou)(shou)地(di)(di)(di)址(zhi),a+1是(shi)(shi)(shi)(shi)數(shu)(shu)組(zu)下(xia)一(yi)(yi)(yi)元(yuan)素(su)的(de)地(di)(di)(di)址(zhi),即a[1],&a+1是(shi)(shi)(shi)(shi)下(xia)一(yi)(yi)(yi)個(ge)對(dui)象的(de)地(di)(di)(di)址(zhi),即a[5].

7、請問以(yi)下代(dai)碼有什么問題:

int main()

{

char a;

char *str=&a;

strcpy(str,"hello");

printf(str);

return 0;

}

答案:沒有(you)為str分配內存空(kong)間,將(jiang)會發生異常問題(ti)出在將(jiang)一(yi)個字符(fu)串復制進(jin)一(yi)個字符(fu)變量指針(zhen)所指地址。雖然可以(yi)正確輸出結果(guo),但因為越界進(jin)行內在讀寫而導致程序崩(beng)潰。

8、char* s="AAA"; printf("%s",s); s[0]='B';printf("%s",s); 有什么錯?

 答案:"AAA"是(shi)字符(fu)串常(chang)量(liang)。s是(shi)指針,指向這個字符(fu)串常(chang)量(liang),所(suo)以聲明s的時候就(jiu)有問(wen)題。 cosnt char*s="AAA"; 然(ran)后又(you)因為是(shi)常(chang)量(liang),所(suo)以對是(shi)s[0]的賦值操作(zuo)是(shi)不合(he)法的。

 9、寫(xie)一個(ge)(ge)(ge)"標準"宏,這個(ge)(ge)(ge)宏輸(shu)入兩個(ge)(ge)(ge)參數并返回較小的一個(ge)(ge)(ge)。

答案:.#define Min(X, Y)((X)>(Y)?(Y):(X)) //結(jie)尾沒有';'

10、嵌入式系統(tong)中經(jing)常要用到無限(xian)循環,你(ni)怎么用C編寫死循環。

答案:while(1){}或者for(;;)

11、關鍵字static的作用是什么?

答案:定義靜態(tai)變量

12、關(guan)鍵字const有(you)什么含意?

答(da)案:表(biao)示常量不(bu)可以修改的(de)變量。

13、關鍵字volatile有什么含(han)意?并舉(ju)出(chu)三個不同的例子(zi)?

答案(an):提示編譯(yi)器(qi)(qi)對(dui)象的值(zhi)可能(neng)在編譯(yi)器(qi)(qi)未監測到的情況下改變(bian)。

14、int(*s[10])(int) 表示的是什么啊(a)?

答(da)案:int(*s[10])(int) 函數指針(zhen)數組,每個指針(zhen)指向一個int func(int param)的(de)函數。

15、有以下(xia)表(biao)達式:

int a=248;

b=4;

int const c=21;

const int *d=&a;

int *conste=&b;

int const *f const =&a;

請問(wen)下列表達式哪些會(hui)被編(bian)譯器(qi)禁止(zhi)?為什么?

答案:*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;*c 這是個什么東(dong)東(dong),禁(jin)止 *d 說(shuo)了是const, 禁(jin)止 e = &a 說(shuo)了是const 禁(jin)止 const *f const =&a; 禁(jin)止

16、交換(huan)兩個變量的值,不使用第(di)三(san)個變量。即(ji)a=3,b=5,交換(huan)之后a=5,b=3;

 答案:有兩(liang)種(zhong)(zhong)解(jie)法(fa), 一種(zhong)(zhong)用算(suan)術算(suan)法(fa), 一種(zhong)(zhong)用^(異(yi)或) a = a + b; b = a - b; a= a - b; or a = a^b;// 只能對int,char.. b = a^b; a = a^b; or a ^= b ^= a;

17.c和c++中的struct有什么不同(tong)?

答(da)案:c和(he)c++中struct的主(zhu)要區別是c中的struct不可(ke)以含(han)有成員函數,而c++中的struct可(ke)以。c++中struct和(he)class的主(zhu)要區別在于默認(ren)的存取(qu)權限不同,struct默認(ren)為public,而class默認(ren)為private

18.

#include

#include

void getmemory(char *p)

{

p=(char *)malloc(100);

strcpy(p,"helloworld");

}

int main( )

{

char *str=NULL;

getmemory(str);

printf("%s/n",str);

free(str);

return 0;

}

答案:程序崩潰,getmemory中(zhong)的malloc 不能返回動(dong)態(tai)內存, free()對(dui)str操作很危險(xian)

19.

char szstr[10];

strcpy(szstr,"0123456789"); 產(chan)生(sheng)什么(me)結果?為什么(me)?

答(da)案: 長度不一樣(yang),會(hui)造成非(fei)法的OS

20.列(lie)舉幾種(zhong)進程的(de)同步機制,并比較其優缺點。

答案: 原子操(cao)作 信號量機制 自(zi)旋(xuan)鎖 管程(cheng),會合(he),分布(bu)式系統

上一篇:百度Android面試題筆試部分(憑記憶)

下一篇:未完待續請看某企業的嵌入式面試題(二)

熱點文章(zhang)推薦(jian)
華清學員(yuan)就業榜單
高(gao)薪學員經驗分享
熱點新聞推薦
前臺專(zhuan)線:010-82525158 企業培訓(xun)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部