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

當前位置:首頁 > 嵌入式培訓 > 嵌入式招聘 > 嵌入式面試題 > 嵌入式C語言面試題(ti)大集(ji)合(he),都(dou)是(shi)自(zi)己總(zong)結的(de)

嵌入式C語言面試題大集合,都是自己總結的 時間:2018-08-24      ;來(lai)源:未知

現在發展最快(kuai)的(de)(de)也就(jiu)是IT行業了(le),嵌入式就(jiu)是其中之一(yi)(yi),很多剛學出來(lai)的(de)(de)去找工作,一(yi)(yi)般都會(hui)是被(bei)面試(shi)題給(gei)難(nan)住了(le),與理想工作失之交臂,我面試(shi)了(le)那(nei)么多家,總(zong)結(jie)出了(le)一(yi)(yi)點規律,一(yi)(yi)般C語(yu)言是必(bi)考(kao)的(de)(de),題里(li)面必(bi)有的(de)(de),今天(tian)我總(zong)結(jie)出來(lai)一(yi)(yi)下C語(yu)言面試(shi)題,希(xi)望可(ke)以幫到你(ni)。

1. 關鍵(jian)字(zi)static有什么(me)用途?(請至少說明(ming)兩種(zhong))

1.限制變量(liang)(liang)的作用域2.設置(zhi)變量(liang)(liang)的存儲域

2. 引(yin)用與指針(zhen)有什么區別?

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

2) 引用初始(shi)化(hua)以(yi)后不能(neng)被改(gai)變(bian),指針可以(yi)改(gai)變(bian)所指的對象。

2) 不存在(zai)指向空(kong)值(zhi)(zhi)的引用,但是存在(zai)指向空(kong)值(zhi)(zhi)的指針。NULL

3. 描述(shu)實(shi)時系統的(de)基本特性

在特(te)定時(shi)間內完成特(te)定的(de)任(ren)務,實時(shi)性與可(ke)靠性

5. 什么是平衡二叉樹?

左右子樹(shu)(shu)都(dou)是平衡二叉樹(shu)(shu) 且左右子樹(shu)(shu)的深度差值的絕(jue)對值不(bu)大于(yu)1

6. 堆(dui)棧(zhan)溢出一(yi)般(ban)是由什么原因導致的?

沒有回收(shou)垃圾資(zi)源

7. 什么(me)函(han)數(shu)不能聲明為虛函(han)數(shu)?

構造函(han)數,因(yin)為它(ta)是(shi)在(zai)對(dui)象(xiang)產生(sheng)之(zhi)頭被調用(yong)的,而(er)虛(xu)函(han)數是(shi)對(dui)象(xiang)產生(sheng)之(zhi)后(hou)才起作用(yong)的機制(zhi),所以聲明虛(xu)構造函(han)數無意(yi)義(yi)。

8. 冒(mao)泡(pao)排(pai)序算法的時間(jian)復(fu)雜度是什么?

O(n^2)

9 寫出float x 與“零(ling)值”比較的if語句。

if(x>0.000001&&x<-0.000001)//見(jian)高質量C++編程(cheng)一書

10. Internet采(cai)用哪(na)種(zhong)網絡(luo)協(xie)(xie)議(yi)?該(gai)協(xie)(xie)議(yi)的主要層(ceng)次結構(gou)?

tcp/ip 應用(yong)層(ceng)/傳(chuan)輸層(ceng)/網絡(luo)層(ceng)/鏈路(lu)層(ceng)

11. Internet物(wu)理地址和(he)IP地址轉(zhuan)換采用(yong)什么協議?

ARP (Address Resolution Protocol )

12. IP地址的編碼分為哪(na)倆部分?

IP地(di)址由兩部分組成(cheng),網(wang)絡號和主機(ji)號。不過是要和“子網(wang)掩碼(ma)”按位(wei)與上之(zhi)后才能區分哪些是網(wang)絡位(wei)哪些是主機(ji)位(wei)。

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

實型。

14、局部變量能否和全局變量重名(ming)?

答:能,局部會屏蔽全局。要用全局變量,需要使用"::"

局(ju)部(bu)變(bian)(bian)量(liang)(liang)可以與(yu)全(quan)局(ju)變(bian)(bian)量(liang)(liang)同(tong)名(ming),在(zai)函數內(nei)引用這個變(bian)(bian)量(liang)(liang)時(shi),會用到同(tong)名(ming)的(de)(de)局(ju)部(bu)變(bian)(bian)量(liang)(liang),而(er)不會用到全(quan)局(ju)變(bian)(bian)量(liang)(liang)。對(dui)于有(you)些(xie)編譯器(qi)而(er)言,在(zai)同(tong)一個函數內(nei)可以定義(yi)多個同(tong)名(ming)的(de)(de)局(ju)部(bu)變(bian)(bian)量(liang)(liang),比如(ru)在(zai)兩(liang)個循環(huan)(huan)體內(nei)都定義(yi)一個同(tong)名(ming)的(de)(de)局(ju)部(bu)變(bian)(bian)量(liang)(liang),而(er)那個局(ju)部(bu)變(bian)(bian)量(liang)(liang)的(de)(de)作(zuo)用域就(jiu)在(zai)那個循環(huan)(huan)體內(nei)

15、如何引用一個已經定義過的全局變(bian)量?

答:extern關鍵字

可(ke)以(yi)用(yong)(yong)引用(yong)(yong)頭(tou)文(wen)件的方(fang)式(shi)(shi),也可(ke)以(yi)用(yong)(yong)extern關鍵字(zi),如(ru)(ru)果用(yong)(yong)引用(yong)(yong)頭(tou)文(wen)件方(fang)式(shi)(shi)來(lai)引用(yong)(yong)某個在頭(tou)文(wen)件中聲明的全局變理(li),假(jia)定你將那(nei)個變寫(xie)錯(cuo)了(le),那(nei)么(me)在編譯(yi)期(qi)間(jian)會報錯(cuo),如(ru)(ru)果你用(yong)(yong)extern方(fang)式(shi)(shi)引用(yong)(yong)時,假(jia)定你犯了(le)同樣的錯(cuo)誤,那(nei)么(me)在編譯(yi)期(qi)間(jian)不會報錯(cuo),而(er)在連(lian)接期(qi)間(jian)報錯(cuo)。

16、全局(ju)變量可(ke)不可(ke)以定(ding)義在可(ke)被多(duo)個.C文件包含的(de)頭文件中?為(wei)什么?

答:可以,在不同(tong)的C文件中以static形式來聲明同(tong)名全(quan)局變量。

可以在不(bu)同(tong)的C文件(jian)中聲明(ming)同(tong)名的全(quan)局變量,前提(ti)是其中只(zhi)能(neng)有一個C文件(jian)中對此(ci)變量賦(fu)初值,此(ci)時(shi)連接不(bu)會出錯

17、static全局變量(liang)與普通(tong)的全局變量(liang)有什么(me)區別?static局部變量(liang)和(he)普通(tong)局部變量(liang)有什么(me)區別?static函數與普通(tong)函數有什么(me)區別?

全(quan)(quan)局(ju)(ju)變(bian)(bian)量(liang)(外(wai)部變(bian)(bian)量(liang))的(de)說明(ming)之前(qian)再(zai)冠以static 就(jiu)構成了靜(jing)態(tai)的(de)全(quan)(quan)局(ju)(ju)變(bian)(bian)量(liang)。全(quan)(quan)局(ju)(ju)變(bian)(bian)量(liang)本(ben)身(shen)就(jiu)是(shi)靜(jing)態(tai)存(cun)儲方式, 靜(jing)態(tai)全(quan)(quan)局(ju)(ju)變(bian)(bian)量(liang)當(dang)然也是(shi)靜(jing)態(tai)存(cun)儲方式。這兩(liang)者在(zai)(zai)存(cun)儲方式上(shang)并無(wu)不同。這兩(liang)者的(de)區別(bie)雖在(zai)(zai)于非靜(jing)態(tai)全(quan)(quan)局(ju)(ju)變(bian)(bian)量(liang)的(de)作(zuo)用(yong)(yong)域是(shi)整個源(yuan)程序(xu),當(dang)一個源(yuan)程序(xu)由多個源(yuan)文(wen)件組成時,非靜(jing)態(tai)的(de)全(quan)(quan)局(ju)(ju)變(bian)(bian)量(liang)在(zai)(zai)各個源(yuan)文(wen)件中(zhong)都(dou)是(shi)有效(xiao)的(de)。 而靜(jing)態(tai)全(quan)(quan)局(ju)(ju)變(bian)(bian)量(liang)則限制了其(qi)作(zuo)用(yong)(yong)域, 即只在(zai)(zai)定義該(gai)變(bian)(bian)量(liang)的(de)源(yuan)文(wen)件內有效(xiao),在(zai)(zai)同一源(yuan)程序(xu)的(de)其(qi)它(ta)源(yuan)文(wen)件中(zhong)不能(neng)使用(yong)(yong)它(ta)。由于靜(jing)態(tai)全(quan)(quan)局(ju)(ju)變(bian)(bian)量(liang)的(de)作(zuo)用(yong)(yong)域局(ju)(ju)限于一個源(yuan)文(wen)件內,只能(neng)為該(gai)源(yuan)文(wen)件內的(de)函數公用(yong)(yong),因此可以避免在(zai)(zai)其(qi)它(ta)源(yuan)文(wen)件中(zhong)引起錯誤。

從以(yi)上分析可以(yi)看出, 把局部變(bian)量改(gai)(gai)變(bian)為(wei)靜態變(bian)量后(hou)是改(gai)(gai)變(bian)了(le)(le)它的存儲方式(shi)即改(gai)(gai)變(bian)了(le)(le)它的生存期。把全局變(bian)量改(gai)(gai)變(bian)為(wei)靜態變(bian)量后(hou)是改(gai)(gai)變(bian)了(le)(le)它的作用(yong)域, 限制了(le)(le)它的使用(yong)范圍。

static函(han)(han)數(shu)與普通函(han)(han)數(shu)作(zuo)用(yong)域不同。僅在(zai)(zai)本文(wen)(wen)件(jian)。只(zhi)在(zai)(zai)當前(qian)源(yuan)文(wen)(wen)件(jian)中(zhong)使用(yong)的函(han)(han)數(shu)應(ying)(ying)該(gai)(gai)說明為(wei)內(nei)部(bu)函(han)(han)數(shu)(static),內(nei)部(bu)函(han)(han)數(shu)應(ying)(ying)該(gai)(gai)在(zai)(zai)當前(qian)源(yuan)文(wen)(wen)件(jian)中(zhong)說明和定義。對(dui)于可在(zai)(zai)當前(qian)源(yuan)文(wen)(wen)件(jian)以外(wai)使用(yong)的函(han)(han)數(shu),應(ying)(ying)該(gai)(gai)在(zai)(zai)一個頭(tou)文(wen)(wen)件(jian)中(zhong)說明,要使用(yong)這些(xie)函(han)(han)數(shu)的源(yuan)文(wen)(wen)件(jian)要包含這個頭(tou)文(wen)(wen)件(jian)

static全局(ju)(ju)變量(liang)與普通的全局(ju)(ju)變量(liang)有什(shen)么區別(bie):static全局(ju)(ju)變量(liang)只(zhi)初使化一(yi)次(ci),防止在其他(ta)文件單元中被引用;

static局(ju)部變(bian)量(liang)(liang)和普(pu)通局(ju)部變(bian)量(liang)(liang)有什么(me)區別(bie):static局(ju)部變(bian)量(liang)(liang)只被(bei)初始化(hua)一次(ci)(ci),下(xia)一次(ci)(ci)依據上一次(ci)(ci)結果值;

static函(han)(han)數(shu)與普通(tong)函(han)(han)數(shu)有什(shen)么區別:static函(han)(han)數(shu)在(zai)內存中(zhong)只(zhi)有一(yi)份,普通(tong)函(han)(han)數(shu)在(zai)每個被調用(yong)中(zhong)維(wei)持一(yi)份拷(kao)貝

程序的(de)局部變量(liang)存在(zai)(zai)于(yu)(棧)中,全(quan)局變量(liang)存在(zai)(zai)于(yu)(靜態(tai)區)中,動態(tai)申請數據(ju)存在(zai)(zai)于(yu)(堆)中。

18、設有以(yi)下說明和定(ding)義:

typedef union {long i; int k[5]; char c;} DATE;

struct data { int cat; DATE cow; double dog;} too;

DATE max;

則語句 printf("%d",sizeof(struct date)+sizeof(max));的執行結果是:

答:

16位編(bian)譯器中,union = 5*2 = 10

data = int 2 + 10 + 8 = 20

此時(shi)結果為30

32位(wei)編譯器中:union = 5*4 = 20

Data = int 4+ union 20 + double 8 = 32

此時(shi)結果為52

19、寫出(chu)下(xia)列代碼的(de)輸出(chu)內(nei)容(簡單(dan))

typedef int(FUNC1)(int in); //自定(ding)義(yi)函數(shu)類型,注意要與函數(shu)指針的定(ding)義(yi)形式分開。

typedef int(FUNC2) (int*,int*,int*);

int inc(int a)

{ return(++a); }

int multi(int*a,int*b,int*c)

{ return(*c=*a**b); }

void show(FUNC2 fun, int arg1, int *arg2) //回調函數

{

int temp = arg1;

arg1 = inc(arg1);

fun(&temp,&arg1, arg2);

printf("%d\n",*arg2);

}

main()

{

int a;

show(multi,10,&a);

return 0;

}

答:110

20、下(xia)面的(de)(de)代碼的(de)(de)目(mu)的(de)(de)是把一(yi)個字符串倒序,如(ru)“abcd”倒序后變(bian)為“dcba”,請找出所(suo)有錯誤。

1、#include"string.h"

2、main()

3、{

4、 char*src="hello,world";

5、 char* dest=NULL;

6、 int len=strlen(src);

7、 dest=(char*)malloc(len);

8、 char* d=dest;

9、 char* s=src[len];

10、 while(len--!=0)

11、 d++=s--;

12、 printf("%s",dest);

13、 return 0;

14、}

答:

方法1:

int main(){

char* src = "hello,world";

int len = strlen(src);

char* dest = (char*)malloc(len+1);//要為\0分(fen)配(pei)一個空間(jian)

char* d = dest;

char* s = &src[len-1];//指向最后一個字符

while( len-- != 0 )

*d++=*s--;

*d = 0;//尾(wei)部要加\0

printf("%s\n",dest);

free(dest);// 使用完,應當釋放空間,以免造成(cheng)內(nei)存(cun)泄露

return 0;

}

方法2:

main()

{

char str[]="hello,world";

int len=strlen(str);

char t;

for(int i=0; i{

t=str[i];

str[i]=str[len-i-1]; str[len-i-1]=t;

}

printf("%s",str);

return 0;

}

21.用(yong)兩個(ge)棧實現一個(ge)隊列的功能(neng)?要求給出算法和(he)思路(lu)(思路(lu)題,有用(yong))

設2個棧為A,B, 一開始均為空(kong).

入隊:

將新元(yuan)素(su)push入棧(zhan)A;

出隊:

(1)判斷棧B是否為空;

(2)如果(guo)不(bu)為空(kong),則(ze)將棧B中最(zui)頂元素pop出(chu);如果(guo)為空(kong),則(ze)將A中所有元素POP出(chu)并PUSH到B中,這后POP出(chu)最(zui)頂元素,A則(ze)下移一單位。

2.對于一個頻繁使用(yong)的短小(xiao)函數(shu),在C語言中(zhong)應(ying)用(yong)什么實(shi)現,在C++中(zhong)應(ying)用(yong)什么實(shi)現?

c用(yong)宏定(ding)義,c++用(yong)inline

6.軟件測試(shi)都有那(nei)些(xie)種類?

黑盒:針(zhen)對(dui)系統功能的測(ce)試 白(bai)合:測(ce)試函數功能,各函數接口

7.確定(ding)模塊的(de)功能和模塊的(de)接口是(shi)在軟件設計的(de)那個(ge)隊段(duan)完成的(de)?

概要設計階段

三.選擇題:

1.Ethternet鏈接到Internet用到以下(xia)那(nei)個協議?

A.HDLC; B.ARP; C.UDP; D.TCP; E.ID 選A

2.屬于(yu)網絡層協議的是:

A.TCP;B.IP;C.ICMP;D.X.25 選B

3.Windows消息(xi)調度機制是:

A.指(zhi)令隊(dui)列;B.指(zhi)令堆棧(zhan);C.消息隊(dui)列;D.消息堆棧(zhan); 選C

四(si).找錯題:

2.#define Max_CB 500

void LmiQueryCSmd(Struct MSgCB * pmsg)

{

nsigned char ucCmdNum;

for(ucCmdNum=0;ucCmdNum

{

......;

}

死循環

3.以下是求一個數的(de)平方(fang)的(de)程序(xu),請找出(chu)錯誤:

#define SQUARE(a)((a)*(a))

int a=5;

int b;

b=SQUARE(a++);

注(zhu)意(yi):此題(ti)是有(you)歧(qi)義(yi)的(de),屬于(yu)有(you)問題(ti)的(de)代碼,要(yao)盡量避免寫這樣的(de)代碼。因為當一個句子中有(you)多個++操作符時,在不同的(de)編譯(yi)器里,運算順序可能是不一樣的(de),還有(you)可能相互影(ying)響。

上面的代碼中,“b=SQUARE(++a)”語句經預處理(li)后,變(bian)為(wei)b= ((++a)*(++a)),兩次++后a的值變(bian)為(wei)7,故最后的結果是“b = 7*7”,而不是原先設定(ding)的“b = 6*6”。

2.TCP/IP通信建立的過程怎樣,端(duan)口有什么作用?

三(san)次握手(shou),確(que)定(ding)哪個應用程(cheng)序使用該(gai)協(xie)議

上一篇:嵌入式最基本的面試題,老鳥總結

下一篇:嵌入式開發面試題(中軟國際)

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

回到頂部