C語(yǔ)言軟件工程師筆試題大全_第1頁(yè)
C語(yǔ)言軟件工程師筆試題大全_第2頁(yè)
C語(yǔ)言軟件工程師筆試題大全_第3頁(yè)
C語(yǔ)言軟件工程師筆試題大全_第4頁(yè)
C語(yǔ)言軟件工程師筆試題大全_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

網(wǎng)絡(luò)安全應(yīng)具有以下五個(gè)方■的^點(diǎn)1

Mtt:信嵬,/器除并/權(quán)用戶、:「屯成過18?或供其村用的游性,

光整性數(shù)摳木經(jīng)統(tǒng)權(quán)不僮遭行改變的特性即信息在儲(chǔ)備應(yīng)付輸過程中保持不被修改,不餓i?耳利2大

的特性.

可用性可被授權(quán)實(shí)體用訪并按需求使用的制件.即當(dāng)需低時(shí)能否存必所需

的體思.例如河絡(luò)環(huán)境下拒留存.破壞網(wǎng)絡(luò)和仃關(guān)系加的正常匕行等都喝r對(duì)可川竹的攻擊?

可控性?對(duì)信息的K播及內(nèi)容艮仃控制健力

可*查性?顯現(xiàn)安全何逆時(shí)提供依據(jù)。f歿第一%分;域4概念及其它何谷題

I、關(guān)區(qū)字static的作用足彳|么?

這個(gè)限單的問的應(yīng)少仃人能問答先全,在C謂才中,大過字static行.個(gè)明顯的作用;

1).在國(guó)數(shù)體.一個(gè)被聲明為梆亳的史m在這一函數(shù)被調(diào)用過程中鱉持意值不變.

2).A模塊內(nèi)(似《南數(shù)體外),個(gè)拔心明為伸右的變量可以枝模塊內(nèi)所用前數(shù)拜訪,但不他林松塊外其它南改

拜訪.它是一個(gè)本地的仝局變量.

3).在模塊內(nèi).小板聲明為時(shí)倉(cāng)的隨數(shù)只可被這?穗族內(nèi)的』,,用.那就戰(zhàn).這個(gè)腑數(shù)被跟制"聲用'二口

模塊的本地范畤內(nèi)使用.(本地化敢據(jù)他代碼范疇的好處和度嬰性).

2、“引用”與指針的IX制是什么?

管、1>引用必維校初始化,指村不必.

2)引用初始化以后不作被改變.指針可以改變所垢的對(duì)僦.

3)不存住指向空依的引用,做是存在指向2值的指針.

指針通過某個(gè)招針變量指n一個(gè)對(duì)皇后,對(duì)它所指向的變量H接操作.限序中使用指計(jì).科序的w讀性差t而*用

本身就是H林便盤的別名.對(duì)引用的操作就是對(duì)打標(biāo)變8t的操作.

流操作用《和力'M值操作符=的返回值、拷貝構(gòu)造函數(shù)的夢(mèng)數(shù).認(rèn)值操作符=的歲數(shù)、其它怙形郡旱器使用引用.

3、.h頭支仲中的ifndef/defix/endif的作用?

存:防止該頭文件被聯(lián)紅季用.

k^include與sindudc”門le.h”的M別?

kStandwdMbrai1-,Uih.h,『由行基從當(dāng)前工作路較搜尋件引〃lfi】ah.

5、描述實(shí)時(shí)系統(tǒng)的票本特性

n.在特定時(shí)間內(nèi)完成特定的任務(wù),實(shí)時(shí)性與叫*性.

6.全周變量和同部變盤在內(nèi)存中是育有區(qū)別?如果行,是什么區(qū)別?

答?全局變域儲(chǔ)存在靜態(tài)數(shù)摳區(qū).局部變量在雄極中.

7、什么是平穩(wěn):叉樹?

?:左右丁樹都是平建二叉樹H左右予樹的涕收差值的絕對(duì)值不大「I.

8、堆榜海出樣是由什幺原因?qū)е碌?

S:I.沒育回收垃塌賁源2.層次太深的遂打調(diào)M

9、蟲泡持呼算法的時(shí)間復(fù)束度是什么1答;0(/2)

10,什么函數(shù)不能聲明為東南數(shù)?谷:constructor

n.隊(duì)列和極有什么區(qū)別?縱隊(duì)列先生先出.橙后進(jìn)先出

12.不能做“itchU的參數(shù)類型答,switch的參數(shù)不能為實(shí)本.

13,局制變“I能否和全局交H男名??;能,局制會(huì)桿艇全身。嬰用全局變M,蠡耍使用“:丁

局部文盤可以與全局變量同g,在由數(shù)內(nèi)引用這個(gè)變V時(shí).公用到同%的局與變量,而不會(huì)用到全局變星.對(duì)于有

些插詳器面才.在同一個(gè)的數(shù)內(nèi)可以定義匕個(gè)同片的局出變盤.比如在兩個(gè)餡坤體內(nèi)也定義一個(gè)同名的場(chǎng)部變!I.

而那個(gè)馬部變口的傳用域就在那個(gè)做壞體內(nèi)

M.如何引用?個(gè)已拄定義過的全局受染?

答、可以用引用頭文件的方*.也可以用exicrn關(guān)鍵字.如果用引用頭文件方#來引用某個(gè)在頭文件中聲明的全

喻變枇,假定你將那個(gè)變量與錨入IE么在母津明間會(huì)報(bào)惰.加梁你用cxtcm方式引用HJ.密定你犯I?同樣的飾

俁,弟么在編洋期間不會(huì)報(bào)錯(cuò),而在連接期間報(bào)播.

15、金局堂歇可不可以定義在可般多個(gè).C支件包含的頭七件中?為什么7

?、可以,在不同的C文件中以slulic形式來聲明同名全局交*.

可以在不同的C文件中聲明同g的全⑹變盤.前提足其中只能有一個(gè)C文件中對(duì)此受肽賦初值.就BI連接小會(huì)出餡.

16、但甸for(;I:)有什么問題7它是什么U慰?苦、和vhik(l)相網(wǎng),尢眼慌壞.

17,do……*hik和while?”…du/什么區(qū)別?答,十一個(gè)陸環(huán)一■再判定,后一個(gè)判定以后再林陣.

18.statm全局變flt.局卿受fit.函數(shù)。仔jfl全局受fit.同建受腦、溝數(shù)

8、全局受■(外握變*》的說明之前向冠以static就構(gòu)成了酢態(tài)的全局發(fā)■?全局變IIA身就是靜6輔各力X,

櫛£金煽堂用”[然也是仲杰儲(chǔ)缶方代.這曲多在儲(chǔ)缶方式上并無不問.這MX的區(qū)別星在」IL仲密金均受舊的作

用域是整個(gè)魂程中.”一個(gè)海程序由匕華源文件才1成時(shí),北齡£的全行交7位3個(gè)海文竹中燃是立效的,而靜£

全局變班則限制/K作川域,即只視定又談受餓的聊文付內(nèi)育收?在同源程序的其它源文件中不能快川它?HI

于靜態(tài)全周變疑的他用域后見于一個(gè)滁之件內(nèi),只能為核源文撲內(nèi)的雨數(shù)公用,因此可以避免4

起褶俁.從以上分析可以右由,杞同郊變最改變?yōu)榉Q態(tài)受網(wǎng)后是山堂了它的住法方式即改變了它的生存期,把全

局變益改變?yōu)殪o態(tài)變量后足段變了它的作用域.卬*1了它的使用胞崎

static函數(shù)與3通函數(shù)作用做不同.僅在本文件.只在當(dāng)前圖文件中使用的函數(shù)應(yīng)該說明為內(nèi)部的致(static).內(nèi)

部曲數(shù)應(yīng)該在當(dāng)前流文件中祖明和定義.對(duì)J可在當(dāng)前溫L2:件以外使用的解斂.應(yīng)談在個(gè)頭文件中凌啕.要使用

這些由政的源文件要包含這個(gè)頭文件

,tatic金屬文量與*?的全屬切育什么區(qū)H:、門“傘而宜:只初使化次,劭止在K■他乂件仙兀中被與”11.

8tMic局近交■和?《1|備交重有什&t?:static局部變盤只被初始化一次,下一次依戰(zhàn)力:結(jié)果?!,

函蚊與普■函敷壽什么區(qū)索:函數(shù)《內(nèi)存中只行一份,普迪闡數(shù)在例個(gè)嵇用用一份免收

19.程序的內(nèi)存分配

?.一個(gè)由C/C-,胡訴的出序占用的內(nèi)存分為以卜幾個(gè)部分

I.伐區(qū)<stnck)山城理褚白動(dòng)分配用擇.在放由數(shù)的參數(shù)值,同部變貴的值療,其操作方式類也于數(shù)據(jù)結(jié)構(gòu)中

的校.

2、堆區(qū)(heap)-?樣由觀序員分配開料.“汴倒不開佬.程序終止時(shí)可俺由OS回收.注毒它與數(shù)據(jù)站構(gòu)中的

堆足兩回小,分配方式倒是美似于倭衣,呵呵.

3、全局區(qū)(靜態(tài)區(qū))(static)一全局變量和靜態(tài)變fit的儲(chǔ)番地放在儂的.初皤化的全局變貴W靜態(tài)要必住

塊區(qū)域,未初妁化的全局堂旦和朱初始化的阱念亶破在相鄰的另一坎區(qū)Mi.楫序終止后由系統(tǒng)開釋.

4、文字令城區(qū)一常笊字符出就是放在這里的,程序線止匕由系統(tǒng)開釋。

5、程汴代碼區(qū)一“放的數(shù)體的一邊制代碼

例f程序

這是一個(gè)前筆寫的,非常詳細(xì)

//■ain.<-p|>

intHR;〃全局初蛤化區(qū)

char*pl;〃全局未初始化區(qū)

■riinO

(

intb:棧

chars[]="abc"://4i

char*p2;〃校

char*p3="123456*:〃123456\。在加?區(qū)?p3在戰(zhàn)上.

staticintcRi〃全局(酢態(tài))初始化M

pl=(char*)onHoc(10):

p2=(ch.r*)?alloc(20);〃分田有樂出10和20字節(jié)的區(qū)域就在奉區(qū).

8<rcpy(r>l,~123456"):〃123456M>fit在常餐區(qū),結(jié)評(píng)器可能會(huì)上它與同所向“123456”優(yōu)化成?個(gè)地》.

)

20、說明維和假的必利

捽;堆(heap)和桎由ack)的區(qū)別

<1)中訓(xùn)方式

suck:由系統(tǒng)自動(dòng)分配.例如,聲明在的做中一個(gè)總部交量inib;系統(tǒng)自動(dòng)在棧巾為b開時(shí)交向

henp:需要程序員自己中語(yǔ).并折明大小,在c中aalloc與數(shù)如plMchBr*)Halloc(10);

在C一中用new這尊符,如p2Xchar?)a”oc(10):但是注意口】、成。身是在稅中的.

(2)申請(qǐng)后系統(tǒng)的響應(yīng)

我只耍棧的由余空的大于所申請(qǐng)空間,靠銀稱為程序提供內(nèi)存,否則林報(bào)#常提示修沿出。

堆:菜汶川道掾作憲統(tǒng)行,個(gè)記錄用H.;■!.'i."1娛境收到杵序的申請(qǐng)時(shí).會(huì)謝方讓料先,不找篇

個(gè)空何人于所申請(qǐng)中間的堆站點(diǎn),熱后梅俵姑點(diǎn)從以喂勃點(diǎn)隨衣中刪除,并出該拈點(diǎn)的中M分配給年序,另外,q

1大名牧條姣.會(huì)在這貌內(nèi)存空,1中的首地址處記就本次分閩的大九這樣,代研中的小lmeifi句才AU:確的開

用本內(nèi)存空間.另外,由于找到的堆鉆出的大小不一定正好等于申請(qǐng)的人小,系統(tǒng)會(huì)門動(dòng)的:的條外的那55H4新改

入闈暇貢表中.

<3>申請(qǐng)大小的限制

棧:在Mndo?下,極是向低地址擴(kuò)快的數(shù)評(píng)浦構(gòu),是塊連接的內(nèi)存的區(qū)域?這句耳的強(qiáng)出是根膜的地址加收的

以人力hl總系統(tǒng)預(yù)先規(guī)定好的,。*1業(yè)01$下,根的人小足2M(也行的說是IM,總之足一個(gè)垢庫(kù)時(shí)就詢定的盒數(shù),,

如果中道的空間郵過梯的期余空同時(shí).將探水6T門ow.因此.碓從棧獲得的空向較小.

堆;地足向離地址獷展的敢樞結(jié)構(gòu),是不連續(xù)的內(nèi)療僅域,達(dá)是由「條燒足用精衣來儲(chǔ)苗的訊暇內(nèi)存地拽的,門然

是不迂垓的.而蛀我的老歷方向是由位地址向盆地址..堆的大小受般于運(yùn)以機(jī)系統(tǒng)中有效的虛毋內(nèi)存.削比M見.

堆於格的空間比收K鬲.也比較大.

<4)申請(qǐng)效率的比牧I

校:由系統(tǒng)門動(dòng)分配,速隙較快,但程序時(shí)是無法柱制的.

堆:品lllne分用的內(nèi)存.一擇速或比較慢,洞且春品產(chǎn)生內(nèi)存碎片,不過用起洪金方便.

用外,在W1W0IS下.好好的方式是用YirtsdAlloc分配內(nèi)存.他不是在博.也不是在快.而是在稹在進(jìn)程的地

址空間中保留一塊內(nèi)存,雖然用起來生不方便.但是速度快,也最靈話,

(5)堆和棧中的儲(chǔ)品內(nèi)靄

校:在函數(shù)謠用時(shí).勢(shì)一個(gè)進(jìn)桎的是主的數(shù)中后的卜一條指令(的較調(diào)用由句的下一條可執(zhí)行培甸)的地址,然后

足曲數(shù)的各個(gè)夢(mèng)數(shù)?在大多數(shù)的C綱洋HS中.當(dāng)數(shù)是由右在左入棧的,熱標(biāo)足由數(shù)中的局部變SI.注意靜態(tài)受量足

不入校的.

當(dāng)本次港用碑用終止后.耳部變量先出棧,然后是琴數(shù),公后棧頂指斜指向最開始存的地址,也就是卡.脩數(shù)中的卜

?第宿令.程序田設(shè)點(diǎn)近坡運(yùn)行.

堆;一樣貼住堆的頭部用一個(gè)字節(jié)存放堆的大小.堆中的具體內(nèi)容由程序員安樟.

<6)存取我率的比較

chursld^"auauauaauauauaa**;auauauaauaa是在運(yùn)懺時(shí)刻賦值的?

chnr*s2-"bbbbbbbbbbbbbbbbb";而bbbbbbbbbbb是在端ifB夕就確定的:

但是,在以后的存取中,在棧上的物加比指針?biāo)赶虻淖址?例卸堆J快.

比如,

ainclude

voidantnO

(

chara=l;

charc[]="1234567890,:

char*p="1234567890":

a=c[l];

H=l)[l]:

return;

)

對(duì)應(yīng)的匯珀代碼

10:a=c(l]:

0OI0i0678A4W-l?MJ*cl,byui>lr[vbp0Fh]

0010106A88IDItmovbyteptr(ebp4).cl

ll:a=p[l];

nOIOIOfinRBSHirm-.vedx.duor(ij?tr[ebp-l-lhj

0010l0708A1201Boval,bytcpir[cdx*l]

QO4OIO738845FCenvbyteptr(ebp4],nl

弟一科在讀取時(shí)直接就把字符卡中的元家愎手寄存黯Cl中,而第二樸則要先把指葉位讀到edx中.存根機(jī)Odx讀

取字符.明解饅了.

21、什么是依傷詳.何時(shí)秘密依幅詳?

???依墉卡乂稱為預(yù)處耳.及被叫代碼文4、的件換工作,處H七開頭的柏飄比如揖貝:include包含的文件代碣.

■Mine來定義的替換,茨H0譯等,就尼為說譯做的依缶[作的階Ia王要處譚中I如的隕編譯指—飲運(yùn)用報(bào)令

指示了作程序正大編譯前就由編評(píng)器送行的探作,可以放在杵/'I'的行何位值.

c攜洋系統(tǒng)在對(duì)程序進(jìn)h通R的境評(píng)之.說.無迸切發(fā)處理.

(:收的!11處?功*±*有以下三*11?*定義2)文件包含3>條H”評(píng)

22.關(guān)悅字cwt是什么含意?

存;“const詼味好常畋”業(yè)余M.“只證”正確的答案.

congtinia;"足一個(gè)常整型數(shù)

intconsta:“是個(gè)常整型教

constint帕;a是一個(gè)指向常整里數(shù)的加計(jì)1(也就是.整型數(shù)是不可修我的.但折計(jì)可以).

int?constM:?個(gè)指向整生效的常招舒(也就是81.指的指向的弛型效足可以住也的.?指W?是不可,改的)

intconst*?comx:a是一個(gè)指向常整里數(shù)的審指針(也就是說,指針指向的賽3!歐是不可修改的,同時(shí)指針也

是不可修改的)

I).K愛字const的作用是為給讀你代N的人傳達(dá)1?常有川的治息,實(shí)際上,聲明一個(gè)參數(shù)為常fit品為J?告訴了用

戶這個(gè)參數(shù)的桎用目的.也U你曾花很多時(shí)間消理冗它人招卜的垃W,你裁叁很快學(xué)會(huì)蜷劇這點(diǎn)余外的信£.C3

達(dá),情信用const的程序員很少會(huì)留下的垃圾計(jì)別人來消理的.)

2).通過用優(yōu)化器一些附加的信息,使用關(guān)轅字c&nsi也許能產(chǎn)牛更素湊的代用.

3).合理地使用關(guān)謎字ccnst可以使籬|譯腓取自然地保護(hù)那些小明也被也變的學(xué)斂,防止乳被無比的代眄修段.韻

而自之.這憚可以減少1?噸的顯現(xiàn)

23、關(guān)鍵字volatile向什么音點(diǎn)并恰出三個(gè)不同的例

音:?個(gè).(一“1球ilu的變小是說這變量彳他會(huì)被息密不利地改笑.iiff.修諦器就不會(huì)去假設(shè)這個(gè)蹙It的色

r.精確地說就是.優(yōu)化滯在用到這個(gè)變量射&發(fā)玨次都小心地履新讀取這個(gè)受用的值.而不足使用除存在騫存溶

里的各份.下面是volatile受成的幾個(gè)例子:

1).并行設(shè)務(wù)的硬件蓄存器(如:狀態(tài)田存瑞》

2).一個(gè)中斷RK務(wù)子程序中會(huì)拜訪到的非自動(dòng),支后(Mn-iwl<xnulicvuriables>

3).安統(tǒng)科應(yīng)用中校幾個(gè)任務(wù)共享的變M

I),一個(gè)卷數(shù)既可以是const還可以是volatile嗎?說明為什么。足的.一個(gè)例子足只讀的狀態(tài)寄存:5.它品

丫。1八”。因?yàn)樗赡馨寤氩坏降貜?qiáng)變.它是const因?yàn)樾蕴?hào)不陶速試圖去愫改它.

2).?個(gè)指計(jì)可以是v.latilc叫?說明為什么.是的?層管這并不很常見。一個(gè)何干是巧一個(gè)中服務(wù)了年序修該

一個(gè)指向一個(gè)buffer的指針時(shí).

3).下面的的數(shù)仃什么錯(cuò)誤:

intsquare(volatileint?ptr)

(return*ptr??ptr:

I

這段代碼的行個(gè)感作劇.這段代碼的目的是用來退指gi*ptr指向值的千方,但是由于*ptr指向-tvolatile

致,摘洋器將產(chǎn)生類似下面的代碼

inisquarc(volali1cini*ptr)

(intn.b:a*ptr:b-*ptr:returnn?b:

)

由IF”r的伯可能被jfiflM:到他誣變,因此aVb可能是不同的.站梁,這段代碼百法返不是你所助坐的磬方做!

正確的代碼如下;

longsquare(volati1cint*ptr)

(

inta;

a=?pir;

returnB?a;

I

24.一鐘址本的數(shù)據(jù)欖取

答?按照數(shù)據(jù)結(jié)構(gòu)類舉的不同,揩位據(jù)模型劃分為層次枚型,網(wǎng)狀梭中知關(guān)系模型.

25、靖構(gòu)與聯(lián)介行和

Bi(]).岫構(gòu)和聯(lián)合都是由多個(gè)不同的數(shù)據(jù)大型成員如成,僅在仃何國(guó)一時(shí)劃.聯(lián)臺(tái)中只存放了個(gè)被喝中的脫

員(所有皮員共用塊地址空間).而結(jié)構(gòu)的所有員用存在1小同成員的存放地址不問).

(2)M于聯(lián)合的不網(wǎng)成員就(配將會(huì)對(duì)其它成,垂寫.鼠先成行的伯就不在住了?前HT?培構(gòu)的不問成姑蹴依立

不歸響的

26,描述內(nèi)4分配方式以及它旬的區(qū)別?

S>1)從靜態(tài)儲(chǔ)備區(qū)域力?配?內(nèi)存在程序埸計(jì)的時(shí)候就C住分在好,區(qū)塊內(nèi)存在程序的整個(gè)運(yùn)"期何都存在?第

如全屬受fit,static變GL

2)在橫上創(chuàng)建,在執(zhí)行函數(shù)時(shí),訥故內(nèi)總部費(fèi)M的儲(chǔ)多取元都可以在棧上倒生.由政執(zhí)行終止時(shí)這些體力單元n

動(dòng)被開修.柱內(nèi)〃分配運(yùn)算內(nèi)置r處理題的指令生。

3)從堆上分配.為國(guó):功叔內(nèi)存外配四序在運(yùn)行的時(shí)聯(lián)用《811。。或ner申請(qǐng)I.,內(nèi)存.|?序員自己,應(yīng)

在何時(shí)用free或dele""/叫存.動(dòng)態(tài)內(nèi)春的生存或由鹿小員決定.使用非常義■語(yǔ),包阿超也展學(xué)

27,詁說出const切define相比,有何優(yōu)點(diǎn)?

?:Consl作用:泥義常侑、修飾函匕於數(shù)、假飾函放返回W三個(gè)作Hi.被Const修艷的東西福受為岸覦保護(hù),可

以ffi防遨外的支動(dòng),能提高程序的他壯性.

I)const常St行數(shù)突莢型,而宏常盤沒也斂現(xiàn)類lb蝙汗器可以MiWK避打英里安全檢仃.而對(duì)耳存只造行字為

出按,沒6類型安全檢今,井口在字衿砂排可能會(huì)產(chǎn)生點(diǎn)料不到的錯(cuò)誤,

2)芍”集成化的調(diào)試工只可以Mconsl常星通竹調(diào)試.但足不能對(duì)安常用迸行調(diào)試.

28、藺述數(shù)組與指計(jì)的區(qū)別?

答,我杷要么在靜態(tài)儲(chǔ)備區(qū)被創(chuàng)建(如全局?jǐn)?shù)由).要么在機(jī)上被創(chuàng)狀.指機(jī)可以曉時(shí)指向任總類里的內(nèi)存塊.

(D修改內(nèi)宓h的差別

chara口="hello";

alO]='(:

char*p="world";//汴1sp指向常Gt字符申

l>(0]='X’://安漆器不能發(fā)覺該信次.運(yùn)行時(shí)鋁漠

<2)用達(dá)/符sizef可以無。出斂殂的容貴(字W數(shù)〉.Siteoi(p).p為指針得利的是一個(gè)指計(jì)變量的中“效.

而不足P所舒的內(nèi)存存量?CM/C用有沒有辦法知道折忖所擔(dān)的內(nèi)存容fib除寸在申請(qǐng)內(nèi)存時(shí)記住它?注意當(dāng)數(shù)組

作為函數(shù)的參數(shù)進(jìn)行傳遞時(shí),該數(shù)組自動(dòng)退化為同類?》的指針.

chara[]="hell。world";

char*p?a:

cout?sizeof(a)?endI;//12字節(jié)

cout?sizeof(p)?endl;//1字節(jié)

運(yùn)算故祖和棺計(jì)的內(nèi)存容量

voidFunc(chara(100])

(

cout?sizeof(a)?endl;//4字節(jié)而不是100字節(jié)

I

29.分別巧出BOOL,iniJloal,抵舒類T的復(fù)量a與"零”的比較語(yǔ)句.

掙:HOOL:if(!n)orif(a)

int:if(a?0)

float:constEXPRESSIONEXP=0.000001

if(a<EXP&fia>-EXP)

pointer:if(a!-M.L1.)oriF(aMILL)

30.仙何到定段程序是HlC編譯程序還是由Ci編譯程序編譯的?

答:Sifdef__cplu*plus

cout?*c*+r;

Seise

cout?"c":

Sendif

31、論述谷船數(shù)的嚙散的優(yōu)項(xiàng)方

帝貌宏曲政

處理時(shí)間制討時(shí)ftirtEtrW

*8[類取沒有夢(mèng)tSXN向亞..形金類型

處理過杵不分圮內(nèi)存分配內(nèi)存

用序長(zhǎng)度會(huì)長(zhǎng)不變

killif.?小占運(yùn)什時(shí)間兩川和通回占川I響

32、用兩個(gè)段宏觀?個(gè)隊(duì)列的功能?要求吩出?法和思RH

省,設(shè)2個(gè)代為A.B.一開始均為空.

入隊(duì):格朗元素push入槍A;

出隊(duì):(D劃定枚B是否為空?(2)如果不為空.則將枚A中所育人家依次pop出井push制校&

(3}柑桎H的檢頂兀米]”,出:

這樣發(fā)現(xiàn)的隊(duì)列入隊(duì)和出認(rèn)的手牌及親度都汪是0(1),比上面的幾抑方法要好

33、嵌入式系統(tǒng)中外常整用我無外荷i壞,你怎么樣用「tWT死砧H呢?

籽?這個(gè)用題用幾個(gè)解決方案,我仃選的方案是;

■hile(l)

(

)

一線程序員史中愛如卜方案:

fort;;)

(

J

第三個(gè)方案是用goto

Loop;

KotoLoop:

應(yīng)試者如管出上闔的方案?這說明或者他是一個(gè)匯編諳方程序員(這也許是好事〉或看他電一個(gè)想進(jìn)入新揪城的

MSICFORTRAN程序員.

3".位煤作(Bitmanipulation)

S:聯(lián)入式系統(tǒng)總是要用戶對(duì)變艙或寄存器進(jìn)行位操作.蛉定個(gè)整??變量a.導(dǎo)兩段代碼,9,個(gè)股!1tl的bii

3.第二個(gè)消除a的bit3.在以上兩個(gè)搽作中.要保得其它便小變“

好這個(gè)H8S有種星本的反應(yīng)

I)不如道如何下F.該假面"從沒做過任何戰(zhàn)入式系統(tǒng)的工作.

2)mbitfields.Bitfields是技協(xié)到。語(yǔ)自死角的東曲?它保證你的代碼在不同旗譜遇之間是不可標(biāo)低的.同

時(shí)也保班了的你的代碼是不可事川的.我最近不幸看到Infineon為共版更雜的通信芯片3的驅(qū)動(dòng)程序,它用到J*

bitfields內(nèi)此完全時(shí)我無用.岡為我的編評(píng)器用箕它的方式來實(shí)現(xiàn)bitfields的.從遇他講:永遠(yuǎn)不要讓一個(gè)

。嵌入式的宓伙拈丈際硬件的邊.

3)用Sdefim-sWbit“asks操作.這是一?個(gè)有極瑪可移幀性的方法.是應(yīng)該破用到的方法。喊住的解決方窠如

T:

WofineBIT:!(0x1?3)

stfiticinta:

voidsetbi(.3(void)

(

a=BIT3;

)

voidclearbit3(void)

'BIT3:

)

?線人。愛為日就他消珠他血定義,個(gè)掩碼8JH定義?些說叫常數(shù),這也是可以接受的?收助望行到幾個(gè)快點(diǎn):說

明常改、=和&=、掾作.

35、拜?訪山定的內(nèi)存位置IAccessingfixe?ln<M>iy10cHiions)

捽;俄入式素捶經(jīng)常具有嬰求界岸員去開iA某特定的內(nèi)在位置的特點(diǎn).在某1凸'中.1?文諛置一葩端地址為。蟠7M

的整型登做的的為Oxtut%.編譯器是一個(gè)純棒的ANSI編洋瑞,當(dāng)代碼去完成這?任務(wù).

這一向以測(cè)試你是否知道為了拜訪一絕對(duì)地垃把一個(gè)整型數(shù)強(qiáng)制輪換(lypecust)為一指計(jì)是合法的,這一付題的

實(shí)現(xiàn)方式施若個(gè)人風(fēng)格小網(wǎng)而小同?歡型的類似代碼如下,

int*ptr:

ptr-(Im*)0xfi7a9;

?ptr=0x?a66;

A“巾obscureapproachis:

?個(gè)收的池的方法是:

?(ini*const)(0x67n9)=0xw?55:

即使你的M詠更接近第二種方案,但我建議你任面WH?使陽(yáng)笫-神方莖,

36.中斷<Interrupts>

答,中斷是嵌入式祭統(tǒng)中充要的綱成部分.這導(dǎo)致「很多編評(píng)開發(fā)商提供一抻爐展一讓標(biāo)博C支持中斷.凡代表

“玄是,產(chǎn)生了一個(gè)新的關(guān)鍵字inten-upt.下面的代碼就使用了Jniernei關(guān)說字去定義了一個(gè)中斷服務(wù)于

程序(1SR3謂部論一下這段代碼的.

interruptdnuhl?ro?it>ute_nrea(dnublrradius)

(

doublearea=PI?radius*radius:

prinlf《飛nArva=M",area);

returnarea:

1

這個(gè)融敷仃太多的錯(cuò)i吳了.以至讓人不知從何說起了:

DISK不能返回一個(gè)俏?如果你不懂這個(gè),那么你不會(huì)被您用的.

2)ISR小使傳遞專城.如果停沒有看到這一點(diǎn),你被雇用的機(jī)會(huì)等同明

3)在許U的處理器,.編譯潺中,浮點(diǎn)一樣林叢不可St入的.ft?些處理器?幽洋界篙要讓加處的寄存器人棧,仟些蚣

理制編譯器就是不答應(yīng)在1SR中做浮點(diǎn)運(yùn)算此外,TSR應(yīng)謨是短而存效聲的,在】SR中做浮直運(yùn)羯是不明智的

1)與第三點(diǎn)一林相承,MinifO經(jīng)常有承入的性能上的問題。如果你去棹了笫二和第四點(diǎn),我不會(huì)太為&你的.

不用說?如果你能得到后兩那么你的被雇用前景越來粕比明了.

37、動(dòng)態(tài)內(nèi)存分配(Dynamicnfmoryallocation)

答;取皆不像*嵌入式運(yùn)算機(jī)那么常見,泯入式系統(tǒng)還是有從城<heap>中動(dòng)態(tài)分配內(nèi)存的過程的.那么寐人式系

統(tǒng)中.動(dòng)態(tài)分旭內(nèi)存回能發(fā)生的問題是什么?

這里.我期熨應(yīng)試者能提到內(nèi)存碎片,碎片收集的何題.變8t的撲行射向等等.這個(gè)主總已經(jīng)化ESP雜志中帙廣泛

坦討論過了(主要是P.J.Plauger.他的說明遠(yuǎn)遠(yuǎn)超過我運(yùn)里能梃到的任何說明).用的問過頭粒一下這些柴志

吧!比應(yīng)試行進(jìn)入種虛華的安全總世盛,我a出這么個(gè)小xn:

卜面的代碼片段的輸出是什么,為什么?

chnr*ptr:

if((ptr-(char?)■?1loc(O))==NULL)

putsl"Gotamillpointer"):

else

puts("Gotavulidpointer*):

這是?個(gè)的問8!.趾近在世的一個(gè)網(wǎng)里不杼老把0伯傳給了就數(shù)malloc,解到了一個(gè)合法的指樸之后,我才想

到達(dá)個(gè)同時(shí).這就是上面的代碼.談代碼的輸出是“Got“validpointer-.我用這個(gè)來開蛤討論送樣的一向冏,

Cfi被面試占是否想到眸例作這樣做是正輸.得到正確的答案出然幣要.但削決問題的方法和你做訣定的苓本原理

更重要雪.

38.Typedef

答:Typodef花Tift齊中班系用以k叫個(gè)己片存在的數(shù)摳類型的同%字.也可以用預(yù)處理器做型似的?.例fcJ.

摸索一下下面的例子?

sdefinrdPSstructs*

lypvdefstruct$?IPS;

以I泗種情形的意圖就是要定又dPS和iK作為4指向結(jié)構(gòu)s指針。嘴怦方法史好呢?(如果由的詰)為什么?

達(dá)過一個(gè)II常微妙的問88,仔何人存對(duì)這個(gè)問郎《正當(dāng)?shù)脑W)戰(zhàn)應(yīng)力快拈聲的.許案是:wpMW更M.鍬/下

面的例F:

d?Spl,p3;

tPSp3,pl;

掂一個(gè)獷展為

s<ruct8?pl,|>2;

上面的代碼定義pl為個(gè)指向結(jié)構(gòu)的指.p2為?個(gè)文際的結(jié)構(gòu),這也許不是你想要的,第二個(gè)例了正確地定義了

P3和乂兩個(gè)折忖.

39、用支Ge的出下血的定義

谷?a)一個(gè)整型歐<Aninteger)

b)一個(gè)指向第型IS的指針(A(jointertoanintCKer)

c)一個(gè)指向指針的的fiitt,它一向的推計(jì)是指向一個(gè)第型收(Apointer<oopointertoaninteger)

d)--個(gè)有1。個(gè)整型數(shù)的數(shù)圖(Anarrayof10integers)

e)一個(gè)有10個(gè)指針的數(shù)組,詢指計(jì)是指向一個(gè)整里數(shù)的(Anarrayof10pointersUiinteRers?

D一個(gè)指向有10個(gè)整邕改改組的指(Apointertoanarrayof10integers)

g)一個(gè)指向函物的指針.該的數(shù)有一個(gè)空心參數(shù)并返同一個(gè)錠型數(shù)<Apaintertoafunctionthattakesnn

integerasanargumentandreturnsaninteger)

h)?個(gè)右10個(gè)指針的JMft.M指計(jì)指向,個(gè)第故?該臉故有?)整級(jí)冬破井返回,個(gè)史!??[(Anarrayoft?n

pointerstofunctionsthatlukvaninteger

argitaentandreturnaninteger)

答案是:

a)inta://Aninteger

b)int?a://Apointertoaninicner

c)int**a;//Apointertoapointertoaninteger

d)inta:10];//Anarrayof10integers

H)ini?s[I0.//Anarrayof10pointersinIntegers

Dint(?a)[10]://Apointerioanarrayof10integers

g)int(*a)(int);〃Apointertoafunctionathattakesanintegerargumentandreturnsaninteger

li)int<*a[l0])(int);//Anarrwyof10pointerstofunctionsthattakettnintegeraiKunenlnndreturn

aninteger

40.說明局他變*、余后變量將抑態(tài)變累的含義.

41.寫一個(gè)“標(biāo)準(zhǔn)”宏

?:交換兩個(gè)與救債的宏定義為;.MefineSVAHHJ八

(a>=(a)+(?>);\

(b)=(a)(b):\

(?>?(a)-(b);

就入兩個(gè)參數(shù),銅出較小的一個(gè):?d.'fineM1MA.B)((A)<(B)r(A):(B)>

衣明I年中有修少杪(忽略閔年問題)?edefinvSECONDSPERYEAR(60*60?24?365)11

"defineD0lBI£(x)x?x與ffdefineDOUBLE(力((x),(x)>

i=5?DOLW£(5)ii為30i=5?WXBI.R(5):i為50

已知一個(gè)數(shù)殂table,用一個(gè)宏定義.求出數(shù)據(jù)的元豪個(gè)故

^defineSTBL

WefineSTBL(sizpof(table)/sizeof(table[0]))

42.Ac和B.c兩個(gè)c文件中使用了兩個(gè)相同名字的static變艮編評(píng)的時(shí)帔會(huì)不會(huì)仃佝虺?這兩個(gè)static受81會(huì)

儲(chǔ)存到哪里,棧還是即誠(chéng)力其他的)?

名?static的全局交量,衣明過個(gè)變量?jī)H在本校塊中若京義.不會(huì)制啕其他模塊。

他們部放八數(shù)據(jù)區(qū).但是坡彳出對(duì)他的的命N是不同的.

如果師使變就在年他怏塊也向同義的話,需收使用cxiurn美展字.

43、個(gè)單向碇表.小知道頭”力.?個(gè)指計(jì)指向具卬的個(gè)E點(diǎn).“如何刮除這個(gè)折忖指向的口點(diǎn)?

8<利這個(gè)IMI伸向的next節(jié)以伯copy到本節(jié)點(diǎn),格next指向R?L>ncxi.4地后制除原rwx,指向的V心.

V,.部分:程序代碼評(píng)判五者找錯(cuò)

1、卜面的代碼0出是什么,為什么?

voidtoo(void)

unsignedini”二6;

intI)~20:

(a?b>6)?puts(">6*):puts(-<:6");

)

這個(gè)問也測(cè)R你是否懂得C語(yǔ)三中的乘數(shù)自動(dòng)轉(zhuǎn)桃版則,投發(fā)覺仃些開發(fā)才脩得極少這些東西,不管如何.這無行

;;傳型回電的;?臬是勵(lì)出班D6”.原因是當(dāng)衣達(dá)式中存在行苻號(hào)類由和類T時(shí)所有的推作數(shù)部門動(dòng)耳換為

無符號(hào)類型.因此20變成j?一個(gè)聾常大的正鍍數(shù),所以博表達(dá)式運(yùn)。出的結(jié)果大于6.這一點(diǎn)對(duì)于微當(dāng)嫉繁川到

無符號(hào)數(shù)總類型的嵌入式質(zhì)拉束過是下常羽要的.娟果你答箱/這,問物,你也就利了叫不到這憐工作的邊隙.

2、評(píng)判下面的代碼片斷;

unsiKnodinizero=0;

unsignedintcoapzerc-OxH-H1':

/?I'scomp1eaenxofzero*/

時(shí)干,個(gè)intK不是16位的處理器力說.上面的代碼是不正曜的.它編4如N:

unsiwivdinivuopxero='0;

H一問期山正能報(bào)還出應(yīng)試存是行懂得處理片字K的屯贄件.在我的體會(huì)里.好的代入式行扉員非常準(zhǔn)媽地明白旅

件的斕甘加它的局眼,然而PC機(jī)程序在杜紀(jì)硬件作為一個(gè)無法遇佻的想惱.

3、C語(yǔ)言網(wǎng)宣:些令人覆動(dòng)的抬構(gòu),下面的結(jié)構(gòu)是介法的嗎,如果是它鈾些什么?

inta=5,b=7,c;

c-n++"b;

這個(gè)問時(shí)然做為這個(gè)刈驗(yàn)的一個(gè)愉快的結(jié)尾.不管你相不相侑,上面的例子是完全合手語(yǔ)法的.內(nèi)四是蛇譯器如何

處理它?水平不高的編譯作者實(shí)際上會(huì)爭(zhēng)辯這個(gè)何的.根據(jù)最處理嵌*1.編建55雙力能處理盡可能所右合法的用法.

因此,上面的代碼被處理此:

c二?b;

因此,這段代碼排行后?=6.b=7.c=12.

如果你如道答案.或猜出正債答案,做得好.如果你不知道谷關(guān),我也不把這個(gè)當(dāng)作問題.爬發(fā)覺這個(gè)河題的取夫

好處拈這骷一個(gè)關(guān)于代碼峭格,代螞的可遣性.代碼的可修改性的好的話也.

4、設(shè)有以下說明和定義,

typedefunion{longi:intk[5];charc:"DATE:

structdata1intcat;DATEcow;doubledog;Ft<K>;

HATfmax;

則謂旬print"rd”.siwof(structdMe〉?sizcof(max)):的執(zhí)行結(jié)果是?

._:52.DATE是一個(gè)union.交量公用空間.里面酸大的變量類型是ini[5],占用20個(gè)字節(jié).所以

大小是20

daw/£-^struct,勾個(gè)交量分開占用空H.依次為in”+DATE20?double=32.

所以結(jié)果是20?3252.

當(dāng)臥…在某些16位褊犍器下,im可能是2字節(jié).嘉么結(jié)果是int2?DA1EIO?doubles_:■

6、請(qǐng)寫出F列代碼的皆出內(nèi)容—;

0includec=**a:

■ainOd=10*a??;

printf(ab>c,di%d.Xd.Hd",b.c,d):

inta,b,c,d;return0;

a=IO:

)char*dest=(chdT?)rmlloc(len'l):/5Mt

答:10.12.120個(gè)空間

6.寫物卜列代碼的愉出內(nèi)容char*d=desQ:

aincludechar*stsrcCenT:;〃指向irtR一個(gè)字布

iniinc(inta)t?hiie(len-20)

(-;

returna);*d二0;〃尾部)細(xì)\0

1printf(**%s\n".dest):

ini?ulti(lm?a,int?b,lm*<)frwfdesi);//使用完.應(yīng)當(dāng)開樣空時(shí).El免55成內(nèi)存

(jl-露

return(*c*ulb);return0;

11

typedefint(FWClXintin);方法2i

lypedofint(FUNCZ)(int*.int?.ini*):Sinclude

voidshov(RJNC2tun.intarcl,int*arx2)^include

(iMiinO

INCO^inc:(

initemp-p(<???!);charKlr[]-**h<?llo,rorld*';

fun3tnmp.larcl.arg2):intIm-strlpn(str):

printf("%d\n",?arfi2);char-t;

)for(inti=0:i

Kiin。(

(t=str[i];

mla;str[i]=strrien-i-lj;str[len-i-ll=t;

$how(rnulti,10,ft<i):1

return0:prin【f("%s”,sir);

)return0;

noI

7、話找出上面代碼中的所以鋁隈8,請(qǐng)回下面程中有什么精讀?

說明:以下代碼足把一個(gè)字符中循序,如-dbcd-minta[60][250][1000],i,j,k;

后變?yōu)?dcba-for(k-0;ky000;…)

l、SincludestriIIK-h”ror(j=0:j<25n:j-H-)

2、mnin()ror《iR:i<60;if

3、\atl][j][k]=O:

4、char*src"hello,wor1d-:答案?把Wi環(huán)港句內(nèi)外換一下

5、char*dest=!tL'IJ.:9、請(qǐng)向F面程序會(huì)顯現(xiàn)什么情形?

B、intlen=strlen(src);?adefineMHK一CB500

7、dost=(char*)ma1loc(lcn);void1jiiQueryCSriKi(StructMSgCB*|*sg)

8、char*driest:(

9、char*K=src[lpn];unsignedcharucGidNg

10、while(len-!=0)

11、d—s~;for(uiXwlXu?i-0;utCudNwKWAXCB;VCCWW_Y?+)

12、printff-%s".dost);(

13、return0;

bk)1

的答哀;死端環(huán)

方法I:10、以卜3個(gè)有什么區(qū)別

mtaainOIchar*constp://ttHftfif.P的依不可以他改

charesrc="he】1。,world";有向方景的彷鼾.帶向的常看值不

intIon=slrlcn(src);

□J以改&a+l不是而堆址H?泰依會(huì)認(rèn)萬(wàn)加?個(gè)a敷祀的偏杵.

consIchar?p:/,和charconst*p虻儲(chǔ)悻/一個(gè)K[出的大小(4例是5個(gè)佃1》

il.二出下面的結(jié)果int?ptr=(mt*乂必?1);則plr實(shí)際是NH[5]),也就

charstrl(]="ubc";是a*5

chnrstr2(]-"abc";母同如卜:&HJS故*若HI.式贄型為ini(*)⑸:而絹

constcharstr3[]-"ubc";什加I耍根據(jù)指計(jì)類學(xué)加上一定的值.

constcharstr4[]-"abc”;不網(wǎng)莢型的指件+1之后增加的大小不內(nèi)?a是長(zhǎng)魔為5

constchar?strS?-abc-:的intV(也指纖,所以耍加5*sixeor《int),所以ptr

constchar?sttfi-"abc”:實(shí)際是H5J.也是卬1與(4公1)類M是不一?樸的(這道

char?str7,**abc*:10*9).所以“r【TRiJJCAsiaool

chnr*str8"abc”;a,fta的地址是一徉的.但悲思小毋.a是致祉。地址.

cou?<C(str!八slr2)??>dl:也就是a[。]的地址.&H是對(duì)寶(ttfi)首地址,cl兄

coin?(81r3-sit4)?endl;數(shù)班【;一元素的地址,即31],*1是F一個(gè)對(duì)象的地

cout<C(str5-str6)?endI:M.Bla[5].

cout?(str7str8)?endI;14、請(qǐng)問以下代碼仃什么問越:

結(jié)果足,0011intmrtiriO

解吞;strl,sir2,sLr3.sir4是數(shù)ffl變“,它們行程自(

的內(nèi)存空間tchara;

向str5.str6.str7,strH是指計(jì),它力指向相同的常量char?str^Jta:

區(qū)域.strcpy(str,"hell。");

12、以卜代碼中的曲個(gè)sizef用法有間BJ嗎?printf(str):

voidVppor€a?(charstr[]>//將sii■中的小耳reiurn0;

字母的操底大寫字母1

(沒育為sir分配內(nèi)存空間.將會(huì)發(fā)生非自

for(size.ti=0;i間區(qū)出在招一個(gè)字號(hào)出〃耨進(jìn)■個(gè)字符受修箱針?biāo)?/p>

if<'a'<=str[i]&4tsirtiK^x')地址.雖然"J以正編輸出豺果.他因?yàn)樗邕M(jìn)行內(nèi)在設(shè)

str[i]-WA');與而導(dǎo)致程序朝潰?

1char*s=*AAA";

charRtr[J="aRck";printW,s);

cout?'l!?字符K或?yàn)椋??sfOl-'B,:

sixeof(str)/sizeor(str[0])?ondl;printf<"%s".s);

UpperCase(str);有什么錯(cuò)?

cout?str?endl;"AM*是字符申常V.s是指計(jì).指向這個(gè)字符串常量,

棄;南數(shù)內(nèi)的sizeof有同黝,根據(jù)語(yǔ)法.sizeoftBI用所以聲叨6的時(shí)慍截百問颼,

于教組.〃能測(cè)出靜態(tài)數(shù)組的大小,無法檢JW動(dòng)態(tài)分陀cosntchar?”"AAT:然后又因?yàn)槭浅YF.所以對(duì)足8[0:

的或外算數(shù)配大小-函數(shù)外的str是?個(gè)砂態(tài)定義的數(shù)的賊值操作是不合法的.

扭,因比其大小為6,函數(shù)內(nèi)!i布向15,有以下表達(dá)式:

字符串的指針.沒方肝何額外的。數(shù)川相關(guān)的信息.因inta=218;b=d;inlconstc=2J;cxxt?tint*d=ta;

此sizeot作用于匕只將其當(dāng)指針首.一個(gè)指計(jì)為4個(gè)int?conste-&b:intconst?fconst-4a:

字節(jié),因此返PH.請(qǐng)何卜列衣達(dá)式哪線會(huì)被癡降特禁止?為什么?

13、寫出輸出結(jié)果?c=32:d=4b;?i1-13:e=3l:c=fiji:f=Ox321f

sain。*c這是個(gè)什么東茱,禁止

(*

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論