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

當前位置:首頁 > 嵌入式培訓 > 嵌入式招聘 > 嵌入式面試題 > 嵌(qian)入(ru)式工程師筆試(shi)題目

嵌入式工(gong)程師筆試題目 時間(jian):2018-08-15      來源:未知(zhi)

嵌入式工程師對于工作來說最重要的就是面試+筆試了,作為一個面試過很多家的老鳥來說,總結了一些嵌入式工程師經典筆試題,而且也是很廠家的,快看看你都掌握了沒
1.給兩(liang)個(ge)變(bian)量,如何找出一個(ge)帶環單鏈表中是什(shen)么地方出現環的?

一(yi)個(ge)遞增(zeng)一(yi),一(yi)個(ge)遞增(zeng)二,他們指向同一(yi)個(ge)接點(dian)時就是(shi)環出現的地方

1)。.堆棧(zhan)溢出一般是由什么原(yuan)因導致(zhi)的?

沒(mei)有回收垃圾資源

3).不能(neng)做switch()的參數類型是:

switch的參(can)數不(bu)能(neng)為實型。

4)、隊(dui)列和棧(zhan)有什么區(qu)別?

隊列先進先出,棧后進先出
 2.什么(me)(me)是(shi)引用(yong),引用(yong)與指針有什么(me)(me)區(qu)別?

1) 引用(yong)必須被(bei)初始化,指針不(bu)必。

2) 引用初(chu)始化以后不能被改變(bian),指(zhi)針可以改變(bian)所指(zhi)的對象。

3) 不存在指向空值的引用,但(dan)是存在指向空值的指針。

3.A.c 和(he)B.c兩個c文件中使用了兩個相同名(ming)字的(de)static變量,編譯的(de)時候會(hui)不會(hui)有問題(ti)?這兩個static變量會(hui)保(bao)存(cun)到哪里(棧(zhan)還是堆或者其他的(de))?

static的全局變量(liang),表明(ming)這(zhe)個變量(liang)僅(jin)在本模(mo)塊中有意義(yi),不會影響(xiang)其他模(mo)塊。

他們都放在(zai)數(shu)據(ju)區,但是編譯器對(dui)他們的命名是不同(tong)的。

 如果要(yao)(yao)使變(bian)量在(zai)其他模(mo)塊也有意義(yi)的(de)話,需要(yao)(yao)使用(yong)extern關鍵(jian)字(zi)。

4.什么是二(er)(er)叉樹,平衡二(er)(er)叉樹?

左右(you)子(zi)樹都是(shi)平衡(heng)二(er)叉樹 且左右(you)子(zi)樹的深度差(cha)值(zhi)的絕對值(zhi)不大于1

5.internet采用哪種網絡協(xie)議(yi),該協(xie)議(yi)的主要(yao)層次是(shi)什么?

Tcp/IP 主要(yao)層次(ci)有應(ying)用層 傳(chuan)輸層 網絡層 數據鏈路層 物理層

ISO的(de)七層模(mo)型(xing)是什么?

應用層(ceng) 表示層(ceng) 會話層(ceng) 傳輸層(ceng) 網絡(luo)層(ceng) 物理鏈(lian)路層(ceng) 物理層(ceng)

Tcp udp屬于運輸層

Tcp服(fu)務提(ti)供了數據流(liu)(liu)傳輸,可靠性,有效(xiao)流(liu)(liu)控制,全雙工操(cao)作(zuo)和多路(lu)復用技術

Udp不(bu)提供(gong)可靠性,流控制以(yi)及錯誤恢復功能(neng) udp頭包(bao)含少,負載消耗小(xiao)。

優缺點:

Tcp提供可靠的(de)傳(chuan)輸服務,有流量控(kong)制。缺點是包頭大,冗余性(xing)不好(hao)。

Udp不提供穩定的(de)服務 但包頭小 開銷小。

Internet物理地(di)址(zhi)和ip地(di)址(zhi)轉換(huan)采(cai)用什么協議?

ARP(地址(zhi)解析協議)

IP地(di)址(zhi)的編碼分為(wei)那(nei)兩(liang)部(bu)分?

網絡號(hao) 和主(zhu)機號(hao) 不(bu)過要與子(zi)網掩碼(ma)與之后才能區分哪是網絡號(hao)那是主(zhu)機號(hao)。

6.用戶輸入M,N值(zhi),從1至(zhi)N開始(shi)順(shun)序循環數(shu)數(shu),每(mei)數(shu)到M輸出(chu)該數(shu)值(zhi),直至(zhi)全部(bu)輸出(chu)。寫出(chu)C程序。

循(xun)環鏈表,用取余操(cao)作做

7..不能做switch()的參數類型(xing)是:

switch的參數不能為(wei)實型。

進程和(he)線程的區別是什么?

進程是程序的一次執行

線程是進程內的(de)一個執行單(dan)元,也是進程內的(de)可(ke)調度實體。

與進程的區別:

調度:線程是(shi)(shi)可(ke)調度和(he)分配的基本單元(yuan),進程是(shi)(shi)擁有資源(yuan)的基本單位(wei)。

并發性(xing):不同(tong)進程和(he)同(tong)一個進程中的多(duo)個線程都可以并發。

擁有資(zi)源:進(jin)程(cheng)(cheng)是擁有資(zi)源的(de)獨立(li)單(dan)位,而線程(cheng)(cheng)不擁有資(zi)源,但它可(ke)以訪問屬于進(jin)程(cheng)(cheng)的(de)資(zi)源。

系統(tong)開銷:由于創建進程(cheng)和(he)撤(che)(che)銷進程(cheng) 系統(tong)都要(yao)為之分配和(he)回收資源,所以系統(tong)的開銷明顯大(da)于線程(cheng)創建和(he)撤(che)(che)銷時的開銷

8.談談COM的(de)線程模型。然后討論進程內/外(wai)組件的(de)差別。

1網絡編程(cheng)(cheng)中設(she)計并發服(fu)務器(qi),使(shi)用多進程(cheng)(cheng) 與(yu) 多線程(cheng)(cheng) ,請問有什么區別(bie)?

1) 進(jin)程(cheng):子(zi)進(jin)程(cheng)是父進(jin)程(cheng)的(de)復制(zhi),它(ta)獲得父進(jin)程(cheng)數據空(kong)間,堆 棧的(de)復制(zhi)品。

2) 線程(cheng):相對于(yu)進程(cheng)而言(yan),線程(cheng)更接近于(yu)一個(ge)執(zhi)行(xing)體的概(gai)念,它可以與同進程(cheng)的其他(ta)線程(cheng)同享(xiang)進程(cheng)資源,但同時擁有自(zi)己的棧空間(jian),寄存器,指針(獨立(li)的執(zhi)行(xing)序列)。

3) 兩者(zhe)都可以(yi)提高程序(xu)的(de)并發(fa)度,提高程序(xu)的(de)運行效率(lv)和響應(ying)。

4) 線(xian)程(cheng)和(he)進(jin)程(cheng)各(ge)有優(you)缺點(dian),線(xian)程(cheng)開銷少,但(dan)不利(li)于資源管理(li)和(he)保(bao)護。而進(jin)程(cheng)恰恰相反,開銷大,但(dan)對資源有獨立掌控權,可更好地管理(li)。

2.列舉幾種進(jin)程的(de)同步(bu)機制

1)原(yuan)子操作

2)信號量機制

3)自旋鎖

4)管程,會合,分布式系統

3 進程間的通訊(xun)的途徑

共享(xiang)存儲(chu)系(xi)統(tong)

消息傳遞系統

管道:以(yi)文件系(xi)統(tong)為基礎

9.進程死鎖的原因(yin)

資源競爭(zheng)及進程(cheng)推進順(shun)序非法

10.死(si)鎖的4個必要條件

互斥、請求保持(chi)、不可剝奪、環(huan)路

11.死鎖的處(chu)理(li)

鴕鳥策(ce)略(lve)、預防策(ce)略(lve)、避免策(ce)略(lve)、檢測與解(jie)除死鎖

12. 操(cao)作系統中進程調度策略有哪幾種?

FCFS(先(xian)來(lai)先(xian)服務(wu)),優先(xian)級(ji),時間(jian)片(pian)輪轉,多級(ji)反饋(kui)

13.數(shu)組和鏈表的區別

數組:數據順序存儲,固(gu)定大(da)小

連表:數據(ju)可以隨機存儲,大小(xiao)可動態改變

面試題: 線(xian)程(cheng)與進程(cheng)的(de)(de)(de)區別和聯(lian)系? 線(xian)程(cheng)是(shi)否(fou)具有相同的(de)(de)(de)堆棧? dll是(shi)否(fou)有獨立的(de)(de)(de)堆棧?

進程(cheng)(cheng)是死(si)的(de)(de),只(zhi)是一(yi)些資源的(de)(de)集合(he),真(zhen)正(zheng)的(de)(de)程(cheng)(cheng)序(xu)執行都是線(xian)(xian)程(cheng)(cheng)來完成(cheng)的(de)(de),程(cheng)(cheng)序(xu)啟(qi)動的(de)(de)時候(hou)操作系統就幫你創(chuang)建(jian)了一(yi)個(ge)主線(xian)(xian)程(cheng)(cheng)。

14.每個線程有自己的堆棧(zhan)。

DLL中有沒(mei)有獨立的(de)(de)堆(dui)棧(zhan)(zhan),這(zhe)個問(wen)題(ti)不(bu)好回答,或者(zhe)說這(zhe)個問(wen)題(ti)本(ben)身是(shi)(shi)否有問(wen)題(ti)。因為DLL中的(de)(de)代(dai)碼是(shi)(shi)被某些線(xian)程(cheng)(cheng)所執(zhi)行(xing),只有線(xian)程(cheng)(cheng)擁有堆(dui)棧(zhan)(zhan),如(ru)果(guo)DLL中的(de)(de)代(dai)碼是(shi)(shi)EXE中的(de)(de)線(xian)程(cheng)(cheng)所調(diao)用(yong),那(nei)么這(zhe)個時候(hou)是(shi)(shi)不(bu)是(shi)(shi)說這(zhe)個DLL沒(mei)有自己獨立的(de)(de)堆(dui)棧(zhan)(zhan)?如(ru)果(guo)DLL中的(de)(de)代(dai)碼是(shi)(shi)由DLL自己創建的(de)(de)線(xian)程(cheng)(cheng)所執(zhi)行(xing),那(nei)么是(shi)(shi)不(bu)是(shi)(shi)說DLL有獨立的(de)(de)堆(dui)棧(zhan)(zhan)?

以上講的(de)是(shi)(shi)堆棧(zhan),如(ru)果(guo)對于堆來說,每(mei)個(ge)DLL有(you)自己的(de)堆,所以如(ru)果(guo)是(shi)(shi)從DLL中(zhong)動態分配的(de)內存(cun),最(zui)好是(shi)(shi)從DLL中(zhong)刪(shan)除,如(ru)果(guo)你從DLL中(zhong)分配內存(cun),然后(hou)在EXE中(zhong),或者另(ling)外一個(ge)DLL中(zhong)刪(shan)除,很(hen)有(you)可能導致程(cheng)序崩潰

用(yong)宏定義寫出swap(x,y)

#define swap(x,y) (x=x+y;y=x-y;x=x-y)

char * const p;

char const * p

const char *p

上述三(san)個有什么(me)區別?

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

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

const char *p; //和(he)char const *p

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 ) << endl;

結果是:0 0 1 1

解答(da):str1,str2,str3,str4是數組變量,它們有各自的內存空間(jian);

而str5,str6,str7,str8是(shi)指針,它們指向相同的常量區域。

15. 以下代碼中的兩(liang)個sizeof用法(fa)有問(wen)題(ti)嗎?[C易]

void UpperCase( char str[] ) // 將(jiang) str 中的小寫(xie)字母轉換成(cheng)大寫(xie)字母

{

for( size_t i=0; i

if( 'a'<=str[i] && str[i]<='z' )

str[i] -= ('a'-'A' );

}

char str[] = "aBcDe";

cout << "str字符(fu)長(chang)度(du)為: " << sizeof(str)/sizeof(str[0]) << endl;

UpperCase( str );

cout << str << endl;

答:函(han)數內(nei)(nei)的(de)(de)sizeof有問題。根據語法,sizeof如用(yong)于(yu)數組,只能測出(chu)靜態數組的(de)(de)大小,無(wu)法檢測動(dong)態分(fen)配的(de)(de)或(huo)外部(bu)數組大小。函(han)數外的(de)(de)str是(shi)一個(ge)靜態定義的(de)(de)數組,因此(ci)其(qi)大小為6,函(han)數內(nei)(nei)的(de)(de)str實際只是(shi)一個(ge)指向字符串的(de)(de)指針(zhen),沒有任何額外的(de)(de)與(yu)數組相(xiang)關的(de)(de)信息,因此(ci)sizeof作用(yong)于(yu)上只將其(qi)當指針(zhen)看,一個(ge)指針(zhen)為4個(ge)字節,因此(ci)返回(hui)4。

16.main()

{

int a[5]={1,2,3,4,5};

int *ptr=(int *)(&a+1);

printf("%d,%d",*(a+1),*(ptr-1));

}

輸(shu)出:2,5

*(a+1)就是a[1],*(ptr-1)就是a[4],執行結(jie)果是2,5

&a+1不是(shi)首(shou)地址+1,系統會(hui)認為(wei)加一個(ge)a數組的(de)偏移,是(shi)偏移了(le)一個(ge)數組的(de)大(da)小(xiao)(本例(li)是(shi)5個(ge)int)

int *ptr=(int *)(&a+1);

則ptr實際(ji)是&(a[5]),也就是a+5

原因如下:

&a是(shi)數組(zu)指針,其(qi)類型為 int (*)[5];

而指針加1要根據指針類(lei)型加上一定的(de)值,

不同類型(xing)的指針+1之(zhi)后增加的大小不同

a是長度為(wei)5的int數(shu)組指針,所以要加 5*sizeof(int)

所以ptr實(shi)際是(shi)a[5]

但是(shi)prt與(&a+1)類型是(shi)不(bu)一樣的(de)(這點很重要)

所以prt-1只會(hui)減去sizeof(int*)

a,&a的(de)地(di)(di)址(zhi)是(shi)(shi)(shi)一樣的(de),但意思不一樣,a是(shi)(shi)(shi)數組首地(di)(di)址(zhi),也就(jiu)是(shi)(shi)(shi)a[0]的(de)地(di)(di)址(zhi),&a是(shi)(shi)(shi)對(dui)象(數組)首地(di)(di)址(zhi),a+1是(shi)(shi)(shi)數組下一元素的(de)地(di)(di)址(zhi),即a[1],&a+1是(shi)(shi)(shi)下一個(ge)對(dui)象的(de)地(di)(di)址(zhi),即a[5].

上一篇:c開發經典面試題集合

下一篇:嵌入式軟件開發人員經典面試題,資深程序員總結

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

回到頂部