軟件工程師面試題庫(kù)及答案_第1頁(yè)
軟件工程師面試題庫(kù)及答案_第2頁(yè)
軟件工程師面試題庫(kù)及答案_第3頁(yè)
軟件工程師面試題庫(kù)及答案_第4頁(yè)
軟件工程師面試題庫(kù)及答案_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件工程師面試題庫(kù)及答案軟件工程師面試題及答案選擇題1:設(shè)floata=2,b=4,c=3;,以下C語(yǔ)言表達(dá)式與代數(shù)式(a+b)+c計(jì)算結(jié)果不一致的是A.(a+b)*c/2B.(1/2)*(a+b)*cC.(a+b)*c*1/2D.c/2*(a+b)參考答案:B,因?yàn)閍,b,c三個(gè)變量都是浮點(diǎn)數(shù),所以在B答案中其結(jié)果是0,因?yàn)樵谟?jì)算1/2是就是0,如果改成1/2.0就正確了。2:為了向二進(jìn)制文件尾部增加數(shù)據(jù),打開(kāi)文件的方式應(yīng)采用A.″ab″B.″rb+″C.″wb″D.″wb+″參考答案:Ar:打開(kāi)一個(gè)文本文件只讀w:打開(kāi)一個(gè)文本文件只寫a:對(duì)一個(gè)文本文件添加rb:打開(kāi)一個(gè)二進(jìn)制文件只讀wb:打開(kāi)一個(gè)二進(jìn)制文件只寫ab:對(duì)一個(gè)二進(jìn)制文件添加r+:打開(kāi)一個(gè)文本文件讀/寫w+:生成一個(gè)文本文件讀/寫a+:打開(kāi)一個(gè)文本文件讀/寫軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第1頁(yè)。rb+:打開(kāi)二進(jìn)制文件讀/寫軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第1頁(yè)。wb+:生成二進(jìn)制文件讀/寫ab+:打開(kāi)二進(jìn)制文件讀/寫3:下述程序執(zhí)行后的輸出結(jié)果是#includemain(){intx='f';printf("%c\n",'a'+(x-'a'+1));}A.gB.hC.iD.j參考答案:A4:C語(yǔ)言中,下列運(yùn)算符優(yōu)先級(jí)最高的是A.!B.%C.>>D.==軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第2頁(yè)。參考答案:A軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第2頁(yè)。優(yōu)先級(jí)運(yùn)算符名稱或含義使用形式結(jié)合方向說(shuō)明1[]數(shù)組下標(biāo)數(shù)組名[常量表達(dá)式]左到右()圓括號(hào)(表達(dá)式)/函數(shù)名(形參表).成員選擇(對(duì)象)對(duì)象.成員名->成員選擇(指針)對(duì)象指針->成員名2-負(fù)號(hào)運(yùn)算符-表達(dá)式右到左單目運(yùn)算符(類型)強(qiáng)制類型轉(zhuǎn)換(數(shù)據(jù)類型)表達(dá)式++自增運(yùn)算符++變量名/變量名++單目運(yùn)算符--自減運(yùn)算符--變量名/變量名--單目運(yùn)算符*取值運(yùn)算符*指針變量單目運(yùn)算符&取地址運(yùn)算符&變量名單目運(yùn)算符軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第4頁(yè)。軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第3頁(yè)。!軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第4頁(yè)。軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第3頁(yè)。邏輯非運(yùn)算符!表達(dá)式單目運(yùn)算符~按位取反運(yùn)算符~表達(dá)式單目運(yùn)算符sizeof長(zhǎng)度運(yùn)算符sizeof(表達(dá)式)3/除表達(dá)式/表達(dá)式左到右雙目運(yùn)算符*乘表達(dá)式*表達(dá)式雙目運(yùn)算符%余數(shù)(取模)整型表達(dá)式/整型表達(dá)式雙目運(yùn)算符4+加表達(dá)式+表達(dá)式左到右雙目運(yùn)算符-減表達(dá)式-表達(dá)式雙目運(yùn)算符5<<左移變量<<表達(dá)式左到右雙目運(yùn)算符>>右移變量>>表達(dá)式雙目運(yùn)算符6>大于表達(dá)式>表達(dá)式左到右雙目運(yùn)算符>=大于等于表達(dá)式>=表達(dá)式雙目運(yùn)算符<小于表達(dá)式<表達(dá)式雙目運(yùn)算符<=小于等于表達(dá)式<=表達(dá)式雙目運(yùn)算符7==等于表達(dá)式==表達(dá)式左到右雙目運(yùn)算符!=不等于表達(dá)式!=表達(dá)式雙目運(yùn)算符8&按位與表達(dá)式&表達(dá)式左到右雙目運(yùn)算符9^按位異或表達(dá)式^表達(dá)式左到右雙目運(yùn)算符軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第5頁(yè)。10軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第5頁(yè)。|按位或表達(dá)式|表達(dá)式左到右雙目運(yùn)算符11&&邏輯與表達(dá)式&&表達(dá)式左到右雙目運(yùn)算符12||邏輯或表達(dá)式||表達(dá)式左到右雙目運(yùn)算符13?:條件運(yùn)算符表達(dá)式1?表達(dá)式2:表達(dá)式3右到左三目運(yùn)算符14=賦值運(yùn)算符變量=表達(dá)式右到左/=除后賦值變量/=表達(dá)式*=乘后賦值變量*=表達(dá)式%=取模后賦值變量%=表達(dá)式+=加后賦值變量+=表達(dá)式-=減后賦值變量-=表達(dá)式<<=左移后賦值變量<<=表達(dá)式>>=右移后賦值變量>>=表達(dá)式&=按位與后賦值變量&=表達(dá)式軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第6頁(yè)。^=軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第6頁(yè)。按位異或后賦值變量^=表達(dá)式|=按位或后賦值變量|=表達(dá)式15,逗號(hào)運(yùn)算符表達(dá)式,表達(dá)式,…左到右從左向右順序運(yùn)算5:數(shù)組定義為“inta[4];”,表達(dá)式()是錯(cuò)誤的。A.*aB.a[0]C.aD.a++參考答案:D6:執(zhí)行語(yǔ)句“k=7>>1;”后,變量k的當(dāng)前值是A.15B.31C.3D.1參考答案:C7:定義函數(shù)時(shí),缺省函數(shù)的類型聲明,則函數(shù)類型取缺省類型A.voidB.charC.floatD.int參考答案:D8:若main()函數(shù)帶參數(shù),參數(shù)個(gè)數(shù)最多是軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第7頁(yè)。A.0B.1C.2D.3軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第7頁(yè)。參考答案:C只知道有定義形式main(intargc,char*argv[]))9:若有宏定義:#defineMOD(x,y)x%y則執(zhí)行以下語(yǔ)句后的輸出結(jié)果是inta=13,b=94;printf(″%d\n″,MOD(b,a+4));A.5B.7C.9D.11參考答案:B10:下列各個(gè)錯(cuò)誤中,哪一個(gè)不屬于編譯錯(cuò)誤A.改變x原值3為5,寫作“x==5;”B.花括號(hào)不配對(duì)C.復(fù)合語(yǔ)句中的最后一條語(yǔ)句后未加分號(hào)D.變量有引用、無(wú)定義參考答案:A11:下列程序段運(yùn)行后,x的值是()a=1;b=2;x=0;if(!(--a))x--;if(!b)x=7;else++x;軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第8頁(yè)。A.0B.3C.6D.7軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第8頁(yè)。參考答案:A12:設(shè)#defineN3#defineY(n)((N+1)*n)則表達(dá)式2*(N+Y(5+1))的值是A.42B.48C.54D.出錯(cuò)參考答案:BY(5+1)傳遞過(guò)去的應(yīng)該是5+1,而不是簡(jiǎn)單的把6給替換掉13:若定義了charch[]={″abc\0def″},*p=ch;則執(zhí)行printf(″%c″,*p+4);語(yǔ)句的輸出結(jié)果是A.defB.dC.eD.0參考答案:C14:表達(dá)式!x等效于A.x==1B.x==0C.x!=1D.x!=0參考答案:B15:算術(shù)運(yùn)算符,賦值運(yùn)算符和關(guān)系運(yùn)算符的運(yùn)算優(yōu)先級(jí)按從高到低依次為軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第9頁(yè)。A.算術(shù)運(yùn)算、賦值運(yùn)算、關(guān)系運(yùn)算軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第9頁(yè)。B.算術(shù)運(yùn)算、關(guān)系運(yùn)算、賦值運(yùn)算C.關(guān)系運(yùn)算、賦值運(yùn)算、算術(shù)運(yùn)算D.關(guān)系運(yùn)算、算術(shù)運(yùn)算、賦值運(yùn)算參考答案:B16:設(shè)#defineN3#defineY(n)((N+1)*n)則表達(dá)式2*(N+Y(5+1))的值是A.42B.48C.54D.出錯(cuò)參考答案:B17:表達(dá)式strcmp(“3.14”,“3.278”)的值是一個(gè)A.非零整數(shù)B.浮點(diǎn)數(shù)C.0D.字符參考答案:A18:設(shè)struct{shorta;charb;floatc;}cs;則sizeof(cs)的值是軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第10頁(yè)。A.4B.5C.6D.7軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第10頁(yè)。參考答案:D字節(jié)對(duì)齊的話應(yīng)該是819:若變量已正確定義,表達(dá)式(j=3,j++)的值是A.3B.4C.5D.0參考答案:A20:C語(yǔ)言中運(yùn)算對(duì)象必須是整型的運(yùn)算符是A.%B./C.!D.**參考答案:A答問(wèn)題static有什么用途?(請(qǐng)至少說(shuō)明兩種)

1.限制變量的作用域

2.設(shè)置變量的存儲(chǔ)域引用與指針有什么區(qū)別?

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

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

2)不存在指向空值的引用,但是存在指向空值的指針。描述實(shí)時(shí)系統(tǒng)的基本特性

在特定時(shí)間內(nèi)完成特定的任務(wù),實(shí)時(shí)性與可靠性軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第11頁(yè)。全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別?

全局變量?jī)?chǔ)存在靜態(tài)數(shù)據(jù)庫(kù),局部變量在堆棧軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第11頁(yè)。請(qǐng)寫出下列代碼的輸出內(nèi)容

#include<stdio.h>

main()

{

inta,b,c,d;

a=10;

b=a++;

c=++a;

d=10*a++;

printf("b,c,d:%d,%d,%d",b,c,d);

return0;

}

答:10,12,120對(duì)于一個(gè)頻繁使用的短小函數(shù),在C語(yǔ)言中應(yīng)用什么實(shí)現(xiàn),在C++中應(yīng)用什么實(shí)現(xiàn)?

答:c用宏定義,c++用inline軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第12頁(yè)。用宏定義寫出swap(x,y)

#defineswap(x,y)\

x=x+y;\

y=x-y;\

x=x-y;

軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第12頁(yè)。如何定義一個(gè)有10個(gè)元素的整數(shù)型指針數(shù)組。

既然只是定義而不是初始化,那就很簡(jiǎn)單且沒(méi)有爭(zhēng)議了:int*array[10];。解釋C語(yǔ)言關(guān)鍵字extern、static的含義。這個(gè)簡(jiǎn)單的問(wèn)題很少有人能回答完全。在C語(yǔ)言中,關(guān)鍵字static有三個(gè)明顯的作用:

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

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

3)在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。解釋C語(yǔ)言關(guān)鍵字volatile、const的含義。軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第13頁(yè)。我只要一聽(tīng)到被面試者說(shuō):"const意味著常數(shù)",我就知道我正在和一個(gè)業(yè)余者打交道。去年DanSaks已經(jīng)在他的文章里完全概括了const的所有用法,因此ESP(譯者:EmbeddedSystemsProgramming)的每一位讀者應(yīng)該非常熟悉const能做什么和不能做什么.如果你從沒(méi)有讀到那篇文章,只要能說(shuō)出const意味著"只讀"就可以了。盡管這個(gè)答案不是完全的答案,但我接受它作為一個(gè)正確的答案。(如果你想知道更詳細(xì)的答案,仔細(xì)讀一下Saks的文章吧。)

如果應(yīng)試者能正確回答這個(gè)問(wèn)題,我將問(wèn)他一個(gè)附加的問(wèn)題:

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

constinta;

intconsta;

constint*a;

int*consta;

intconst*aconst;

/******/

前兩個(gè)的作用是一樣,a是一個(gè)常整型數(shù)。第三個(gè)意味著a是一個(gè)指向常整型數(shù)的指針(也就是,整型數(shù)是不可修改的,但指針可以)。第四個(gè)意思a是一個(gè)指向整型數(shù)的常指針(也就是說(shuō),指針指向的整型數(shù)是可以修改的,但指針是不可修改的)。最后一個(gè)意味著a是一個(gè)指向常整型數(shù)的常指針(也就是說(shuō),指針指向的整型數(shù)是不可修改的,同時(shí)指針也是不可修改的)。如果應(yīng)試者能正確回答這些問(wèn)題,那么他就給我留下了一個(gè)好印象。順帶軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第14頁(yè)。提一句,也許你可能會(huì)問(wèn),即使不用關(guān)鍵字const,也還是能很容易寫出功能正確的程序,那么我為什么還要如此看重關(guān)鍵字const呢?我也如下的幾下理由:

1)關(guān)鍵字const的作用是為給讀你代碼的人傳達(dá)非常有用的信息,實(shí)際上,聲明一個(gè)參數(shù)為常量是為了告訴了用戶這個(gè)參數(shù)的應(yīng)用目的。如果你曾花很多時(shí)間清理其它人留下的垃圾,你就會(huì)很快學(xué)會(huì)感謝這點(diǎn)多余的信息。(當(dāng)然,懂得用const的程序員很少會(huì)留下的垃圾讓別人來(lái)清理的。)

2)通過(guò)給優(yōu)化器一些附加的信息,使用關(guān)鍵字const也許能產(chǎn)生更緊湊的代碼。

3)合理地使用關(guān)鍵字const可以使編譯器很自然地保護(hù)那些不希望被改變的參數(shù),防止其被無(wú)意的代碼修改。簡(jiǎn)而言之,這樣可以減少bug的出現(xiàn)。

軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第13頁(yè)。軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第14頁(yè)。軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第15頁(yè)。關(guān)鍵字volatile有什么含意?并給出三個(gè)不同的例子。

一個(gè)定義為volatile的變量是說(shuō)這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。精確地說(shuō)就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個(gè)例子:

1)并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)

2)一個(gè)中斷服務(wù)子程序中會(huì)訪問(wèn)到的非自動(dòng)變量(Non-automaticvariables)

3)多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量

回答不出這個(gè)問(wèn)題的人是不會(huì)被雇傭的。我認(rèn)為這是區(qū)分C程序員和嵌入式系統(tǒng)程序員的最基本的問(wèn)題。搞嵌入式的家伙們經(jīng)常同硬件、中斷、RTOS等等打交道,所有這些都要求用到volatile變量。不懂得volatile的內(nèi)容將會(huì)帶來(lái)災(zāi)難。

假設(shè)被面試者正確地回答了這是問(wèn)題(嗯,懷疑是否會(huì)是這樣),我將稍微深究一下,看一下這家伙是不是直正懂得volatile完全的重要性。

1)一個(gè)參數(shù)既可以是const還可以是volatile嗎?解釋為什么。

2);一個(gè)指針可以是volatile嗎?解釋為什么。

3);下面的函數(shù)有什么錯(cuò)誤:

intsquare(volatileint*ptr)

{

return*ptr**ptr;

}

下面是答案:

1)是的。一個(gè)例子是只讀的狀態(tài)寄存器。它是volatile因?yàn)樗赡鼙灰庀氩坏降馗淖?。它是const因?yàn)槌绦虿粦?yīng)該試圖去修改它。

軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第16頁(yè)。2);是的。盡管這并不很常見(jiàn)。一個(gè)例子是當(dāng)一個(gè)中服務(wù)子程序修該一個(gè)指向一個(gè)buffer的指針時(shí)。

3)這段代碼有點(diǎn)變態(tài)。這段代碼的目的是用來(lái)返指針*ptr指向值的平方,但是,由于*ptr指向一個(gè)volatile型參數(shù),編譯器將產(chǎn)生類似下面的代碼:

intsquare(volatileint*ptr)

{

inta,b;

a=*ptr;

b=*ptr;

returna*b;

}

由于*ptr的值可能被意想不到地該變,因此a和b可能是不同的。結(jié)果,這段代碼可能返不是你所期望的平方值!正確的代碼如下:

longsquare(volatileint*ptr)

{

inta;

a=*ptr;

returna*a;

軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第17頁(yè)。}軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第15頁(yè)。軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第16頁(yè)。軟件工程師面試題庫(kù)及答案全文共19頁(yè),當(dāng)前為第17頁(yè)。 用變量a給出下面的定義a)一個(gè)整型數(shù)(Aninteger)b)一個(gè)指向整型數(shù)的指針(Apointertoaninteger)c)一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數(shù)(Apointertoapointertoaninteger)d)一個(gè)有10個(gè)整型數(shù)的數(shù)組(Anarrayof10integers)e)一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的(Anarrayof10pointerstointegers)f)一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針(Apointertoanarrayof10integers)g)一個(gè)指向函數(shù)的指針,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)(Apointertoafunctionthattakesanintegerasanargumen

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論