版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
IT面試筆試題全集一史上最全一C++篇ーRain系列
南京TQ公司面意題1、簡(jiǎn)單描述包和dll異同答:DLL(動(dòng)態(tài)鏈接庫(kù))是經(jīng)過(guò)編譯的代碼模塊,它和可執(zhí)行文件共同工作,為應(yīng)用程序提供功能。程序包是用于C++Builder應(yīng)用程序、IDE或是二者同時(shí)使用的特殊DLL。有兩種程序包:運(yùn)行時(shí)程序包和設(shè)計(jì)時(shí)程序包。運(yùn)行時(shí)程序包提供程序執(zhí)行時(shí)的功能,設(shè)計(jì)時(shí)程序包擴(kuò)展了IDE的功能。何時(shí)使用程序包和DLL對(duì)于大多數(shù)C++Builder應(yīng)用程序,程序包提供了更大的靈活性,也比DLL更容易創(chuàng)建。然而,在幾種情況下,DLL比程序包更適合工程的需要:程序代碼模塊從非C++Builder應(yīng)用程序調(diào)用。要擴(kuò)充Web服務(wù)器的功能。要?jiǎng)?chuàng)建給第三方開(kāi)發(fā)人員使用的代碼模塊。工程是OLE容器。2、簡(jiǎn)述parent和owner的區(qū)別答:Parent屬性是指構(gòu)件的包容器,構(gòu)件只能在此范圍內(nèi)顯示和移動(dòng)。舉例子如下:(1)在Forml的窗體上,放ー個(gè)Panell,并將Panel1拉大,(2)在Panel1上放一Button1;(3)在Forml上放一Button2?,F(xiàn)在如果移動(dòng)Panell,則Button1隨著Panel!移動(dòng),這是因?yàn)锽utton!的Parent是Panel1〇現(xiàn)在將Button2移到Panel1上,再次移動(dòng)Panel1,Button2并不跟著移動(dòng),這是因?yàn)锽utton2的Parent是Forml。除在窗體設(shè)計(jì)中,應(yīng)注意構(gòu)件的Parent是誰(shuí)外,在動(dòng)態(tài)創(chuàng)建構(gòu)件時(shí),也應(yīng)指出構(gòu)件的Parent,如在上例中繼續(xù)操作:1)ProcedureTforml,Button2click(Sender:Tobjet);2)VarButton:Tbutton;BeginButton:Tbutton.cerate(self);Button.parent=panell;Button.lleft=O;Button.top=0;Button.caption:=#8217;OK#8217;;End;當(dāng)按Button2時(shí),將在Panel1上創(chuàng)建一個(gè)Button,而如果把第6句改為Button.parent:=self:按Button2時(shí),將在Forml上創(chuàng)建一個(gè)Button了。如果將第6句刪除,按Button2時(shí),什么都不會(huì)發(fā)生,這是因?yàn)閯?chuàng)建方法無(wú)法知道應(yīng)在哪里顯示構(gòu)件。Owner屬性是指構(gòu)件的所有者,它負(fù)責(zé)構(gòu)件的創(chuàng)建和釋放。如在上例中,系統(tǒng)默認(rèn)窗體上所有構(gòu)件的所有者是窗體,而窗體的所有者是Application。順便指出,create方法應(yīng)帶有表示構(gòu)件所有者的參數(shù),如在上例中,構(gòu)件所有者是窗體,即selfoParent屬性和Owner屬性是運(yùn)行階段的屬性,只能在運(yùn)行階段,通過(guò)代碼設(shè)置。3、簡(jiǎn)述delphi是如何封裝windows消息機(jī)制答:Delphi的消息處理流程TApplication.OnMessage只在應(yīng)用程序的消息隊(duì)列接收到ー個(gè)消息時(shí)才被觸發(fā)。ー般應(yīng)用程序接收到的消息是與窗口管理有關(guān)的消息(例如WM_PA1NT和WM_SIZE),或由PostMessage。、PostAppMessage?;駼roadcastSystemMessage。等API函數(shù)發(fā)送出的消息。但是,由于Windows或SendMessage。有可能會(huì)繞過(guò)消息隊(duì)列直接將消息發(fā)送給窗口過(guò)程。當(dāng)發(fā)生這種情況時(shí),TApplication.OnMessage就不會(huì)被觸發(fā)。VCL的消息系統(tǒng):VCL定義了消息分發(fā)系統(tǒng),該系統(tǒng)將所有的Windows消息傳給相應(yīng)的對(duì)象,由各對(duì)象的消息分發(fā)系統(tǒng)進(jìn)行處理。VCL對(duì)象用于接受消息的方法叫做MainWndProc()o通過(guò)MainWndPorc??梢詫?duì)消息進(jìn)行任何的處理。不過(guò),一般情況下很少直接調(diào)用MainWndProc。來(lái)處理消息,除非不想讓消息通過(guò)VCL的消息系統(tǒng)分發(fā)。從MainWndProc。反冋后,消息被傳遞給對(duì)象的WndProc()的方法,這就是該對(duì)象的窗體過(guò)程,然后進(jìn)入VCL的分發(fā)機(jī)構(gòu)。分發(fā)機(jī)構(gòu)使用Disptch()方法把消息分發(fā)給一個(gè)消息句柄。消息到達(dá)該消息的處理句柄(Handler)后,經(jīng)過(guò)該句柄的處理,這個(gè)消息處理過(guò)程就結(jié)束了。事件MainWndProcWndProc-Dispatch-Handle4、簡(jiǎn)單介紹ー下delphi模式下三層開(kāi)發(fā)答:RemoteDataModule服務(wù)器數(shù)據(jù)庫(kù)Query組件DataSetProvider組件客戶端應(yīng)用程序DCOM組件ClientDataSet組件它不通過(guò)DataSetProvider組件來(lái)傳遞數(shù)據(jù),而是通過(guò)RemoteDataModule服務(wù)器所提供的Interface來(lái)進(jìn)行數(shù)據(jù)的傳遞。這樣就使得應(yīng)用程序完全與數(shù)據(jù)庫(kù)服務(wù)器沒(méi)有任何關(guān)系,對(duì)整個(gè)系統(tǒng)的升級(jí)與維護(hù)都帶來(lái)極大的好處。對(duì)于集合數(shù)據(jù),由于Interface的返回值可以是OLEVarient類型,因此我們可以創(chuàng)建ClientDataSet來(lái)進(jìn)行集合數(shù)據(jù)的傳遞。5、談ー談你對(duì)vclframework的理解答:VCLFramework實(shí)現(xiàn)了Windows消息機(jī)制的完美封裝。Dispatch分發(fā)消息分為兩種情形:.消息被dispatch在虛擬方發(fā)表中找到并調(diào)用;.如果找不到的話,就調(diào)用TObject的defaultHandle虛擬方法,當(dāng)然也可以改寫這個(gè)默認(rèn)調(diào)用方法,因?yàn)樗暶鞯臅r(shí)候是Virtual的。6、簡(jiǎn)單談一下你對(duì)delphi接口機(jī)制的理解答:不接口的引用計(jì)數(shù)管理接口指針總是被初始化為nil接口指針賦值為對(duì)象接口指針賦值為接口指針接口引用計(jì)數(shù)使用規(guī)則小結(jié)接口對(duì)象的編譯器實(shí)現(xiàn)接口對(duì)象的內(nèi)存空間接口跳轉(zhuǎn)表對(duì)象內(nèi)存空間中接口跳轉(zhuǎn)指針的初始化implements的實(shí)現(xiàn)以接口成員變量實(shí)現(xiàn)implements以對(duì)象成員變量實(shí)現(xiàn)implements7、ASP的幾大內(nèi)置對(duì)象。答:內(nèi)置對(duì)象:Session,Server,Response,Request,ObjectContent,Application8、談?wù)勀阋郧八鲰?xiàng)目對(duì)文件和圖片的上傳和顯示所用的方法。答:上傳控件9、談你對(duì)ASP的理解。答:不會(huì),沒(méi)理解10、 web開(kāi)發(fā)客戶端程序和服務(wù)器端程序的區(qū)別答:只需要開(kāi)發(fā)服務(wù)器端啊,客戶端只要有個(gè)瀏覽器就行了C/C++筆試題ー追雨制作C/C++:.C與C++的異同,優(yōu)劣;.C,C++,VC,BC,TC的區(qū)別;.C++中y...catch關(guān)鍵字的用法與優(yōu)點(diǎn);.枚舉的用法,以及它與宏的區(qū)別;.const的用法,以及聲明const變量與宏的區(qū)別;const的用法有四種:區(qū)別;const常量有數(shù)據(jù)類型,而宏常量沒(méi)有數(shù)據(jù)類型。編譯器可以對(duì)前者進(jìn)行類型安全檢査,而對(duì)后者只能進(jìn)行字符替換,沒(méi)有類型安全檢査。而且字符替換可能會(huì)帶來(lái)料想不到的邊界效應(yīng)。有些集成化工具可以對(duì)const常量進(jìn)行調(diào)試,但不能對(duì)宏量進(jìn)行調(diào)試。.C++中引用與指針的區(qū)別;答;1引用實(shí)際上是所引用的對(duì)象或變量的別名,而指針是包含所指向?qū)ο蠡蜃兞康牡刂返淖兞俊?引用在定義時(shí)必須初始化,而指針在定義時(shí)不初始化。3不可以有努NULL的引用,而可以有指向NULL的指針。4引用在初始化后不可以改變引用關(guān)系,而指針可以隨時(shí)指向其他對(duì)象(非const指針)。.C++中virtual與inline的含義分別是什么?答;在基類成員函數(shù)的聲明前加上virtual關(guān)鍵字,意味著將該成員函數(shù)聲明為虛函數(shù)。inline與函數(shù)的定義體放在ー起,使該函數(shù)稱為內(nèi)聯(lián)。inline是一種用于實(shí)現(xiàn)的關(guān)鍵字,而不是用于聲明的關(guān)鍵字。虛函數(shù)的特點(diǎn);如果希望派生類能夠重新定義基類的方法,則在基類中將該方法定義為虛方法,這樣可以啟用動(dòng)態(tài)聯(lián)編。內(nèi)聯(lián)函數(shù)的特點(diǎn);使用內(nèi)聯(lián)函數(shù)的目的是為了提高函數(shù)的運(yùn)行效率。內(nèi)聯(lián)函數(shù)體的代碼不能過(guò)長(zhǎng),因?yàn)閮?nèi)聯(lián)函數(shù)省去調(diào)用函數(shù)的時(shí)間是以代碼膨脹為代價(jià)的。內(nèi)聯(lián)函數(shù)不能包含循環(huán)語(yǔ)句,因?yàn)閳?zhí)行循環(huán)語(yǔ)句要比調(diào)用函數(shù)的開(kāi)銷大。ー個(gè)函數(shù)能否即是虛函數(shù)又是內(nèi)聯(lián)函數(shù)?.以下關(guān)鍵字的含義與用法:extern,externstatic,explicit,register,#undef,#ifndef.什么是函數(shù)重載與覆蓋?為什么C不支持函數(shù)重載?為什么C++能支持函數(shù)重載?.VC中,編譯工具條內(nèi)的Debug與Release選項(xiàng)是什么含義?.編寫my_memcpy函數(shù),實(shí)現(xiàn)與庫(kù)函數(shù)memcpy類似的功能,不能使用任何庫(kù)函數(shù);void*mymemcpy(void*pvTo,constchar*pvFrom,size_tsize)(assert((dest!=NULL)amp;amp;(src!=NULL));byte*psTo=(byte*)pvTo;byte*psFrom=(byte*)pvFrom;while(size>0)(*psTo++=*psFrom++;)returnpvTo;).編寫my-scpy函數(shù),實(shí)現(xiàn)與庫(kù)函數(shù)scpy類似的功能,不能使用任何庫(kù)函數(shù);答:char*my_scpy(char*sdest,constchar*ssrc)assert(sdest!=NULL)amp;amp;(ssrc!=NULL))char*address=sdest;while((*sdest+4-=*ssrc++)!=NULL)returnaddress;).編寫gbk_slen函數(shù),計(jì)算含有漢字的字符串的長(zhǎng)度,漢字作為ー個(gè)字符處理;已知:漢字編碼為雙字節(jié),其中首字節(jié)<0,尾字節(jié)在〇?63以外;(如果一個(gè)字節(jié)是ー128?127).函數(shù)assert的用法?答:斷言assert是僅在debug版本起作用的宏,用于檢查“不應(yīng)該“發(fā)生的情況。程序員可以把a(bǔ)ssert看成一個(gè)在任何系統(tǒng)狀態(tài)下都可以安全使用的無(wú)害測(cè)試手段。.為什么在頭文件的最前面都會(huì)看到這樣的代碼:#ifndef_STDIO_H_#define_STDIO_H_.為什么數(shù)組名作為參數(shù),會(huì)改變數(shù)組的內(nèi)容,而其它類型如int卻不會(huì)改變變量的值?答:當(dāng)數(shù)組名作為參數(shù)時(shí),傳遞的實(shí)際上是地址。而其他類型如int作為參數(shù)時(shí),由于函數(shù)參數(shù)值實(shí)質(zhì)上是實(shí)參的一份拷貝,被調(diào)函數(shù)內(nèi)部對(duì)形參的改變并不影響實(shí)參的值。.實(shí)現(xiàn)雙向鏈表刪除ー個(gè)節(jié)點(diǎn)P,在節(jié)點(diǎn)P后插入一個(gè)節(jié)點(diǎn),寫出這兩個(gè)函數(shù)。.寫ー個(gè)函數(shù),將其中的\t都轉(zhuǎn)換成4個(gè)空格。.Windows程序的入口是哪里?寫出Windows消息機(jī)制的流程。.如何定義和實(shí)現(xiàn)ー個(gè)類的成員函數(shù)為回調(diào)函數(shù)?.C++里面是不是所有的動(dòng)作都是main()引起的?如果不是,請(qǐng)舉例。.C++里面如何聲明8睦バ(^£“01(1)函數(shù)為じ程序中的庫(kù)函數(shù)?.下列哪兩個(gè)是等同的intb;Aconstint*a=amp;b;Bconst*inta=amp;b;Cconstint*consta=amp;b;Dintconst*consta=amp;b;.內(nèi)聯(lián)函數(shù)在編譯時(shí)是否做參數(shù)類型檢查?voidg(baseamp;b){b.play;)voidmain(){sons;g(s);return;)3、WinMainwhile((bRet=GetMessage(amp;msg,NULL,0,0))!=0)if(bRet==-1)//handletheerrorandpossiblyexitelseTranslateMessage(amp;msg);DispatchMessage(amp;msg);MSRAInterviewWrittenExam(December2003,Time:2.5Hours)!寫出下列算法的時(shí)間復(fù)雜度。(1)冒泡排序;(2)選擇排序:⑶插入排序;(4)快速排序;(5)堆排序;(6)歸并排序;2寫出下列程序在X86上的運(yùn)行結(jié)果。suetmybitfieldsunsignedshorta:4;unsignedshortb:5;unsignedshortc:7;}testvoidmain(void)inti;test.a=2;test.b=3;test.c=0;i=*((short*)amplest);printf(%d\n,i);)3寫出下列程序的運(yùn)行結(jié)果。unsignedinti=3;cout<<i*-1;4寫出下列程序所有可能的運(yùn)行結(jié)果。inta;intb;intc;voidF1()b=a*2;a=b;voidF2()c=a+l;a=c;)main()(a=5;//StartF1,F2inparallelF1();F2();printf(a=%d\n,a);)C++算法面試題ー追雨制作算法:.什么是NPC,NP-Hard?.起泡排序的時(shí)間復(fù)雜度是多少?說(shuō)出至少ー個(gè)比它更快的算法;排序的極限時(shí)間復(fù)雜度是多少?.有一個(gè)鏈表,如何判斷它是ー個(gè)循環(huán)鏈表?如果鏈表是單向的呢?如果出現(xiàn)循環(huán)的點(diǎn)可能在任意位置呢?如果緩存空間是有限的,比如是ー個(gè)常數(shù)呢?如果只能使用2個(gè)緩存呢?.有一個(gè)文件,保存了若干個(gè)整數(shù),如何以平均的概率隨機(jī)得到其中的ー個(gè)整數(shù)?如果整數(shù)的個(gè)數(shù)是未知的呢?如果整數(shù)是以字符串形式存放,如:(即如何得到隨機(jī)的一個(gè)字符串)123<enter>-456<enter>如果只允許便歷文件一次呢?.用兩組數(shù)據(jù),都在內(nèi)存中,對(duì)它們排序分別需要1和2分鐘;那么使用兩個(gè)線程一起排序,大概需要多少時(shí)間?上海貝爾的面試題43分即可進(jìn)入復(fù)試ー追雨制作ー、請(qǐng)?zhí)顚態(tài)OOL,float,指針變量與“零值”比較的if語(yǔ)句。(10分)提示:這里“零值”可以是0,0.0,FALSE或者“空指針”。例如int變量n與“零值”比較的if語(yǔ)句為:if(n==0)if(n!=0)以此類推。請(qǐng)寫出BOOLflag與“零值”比較的if語(yǔ)句:請(qǐng)寫出floatx與“零值”比較的if語(yǔ)句:請(qǐng)寫出char*p與“零值”比較的if語(yǔ)句:二、以卜為WindowsNT卜的32位C++程序,請(qǐng)計(jì)算sizeof的值(1。分)chars[]=uHelloM;char*p=s;intn=10;請(qǐng)計(jì)算sizeof(s)=sizeof(p)=sizeof(n)=voidFunc(chars[100])(請(qǐng)計(jì)算sizeof(s)=)void*p=malloc(100);請(qǐng)計(jì)算sizeof(p)=、簡(jiǎn)答題(25分)1、頭文件中的ifndef/define/endif干什么用?2、#include<filename.h>和#include4lfilename.h,,有什么區(qū)別?3、const有什么用途?(請(qǐng)至少說(shuō)明兩種)4、在C++程序中調(diào)用被C編譯器編譯后的函數(shù),為什么要加extern"ビ聲明?5、請(qǐng)簡(jiǎn)述以下兩個(gè)for循環(huán)的優(yōu)缺點(diǎn)〃第一個(gè)for(i=0;i<N;i++)(if(condition)DoSomethingO;elseDoOtherthingO;}〃第二個(gè)if(condition)(for(i=0;i<N;i++)DoSomethingO;)else(for(i=0;i<N;i++)DoOtherthingO;優(yōu)點(diǎn):N次中,每次都要對(duì)condition進(jìn)行判斷缺點(diǎn):優(yōu)點(diǎn):一次判斷condition后,對(duì)something或Otherthing執(zhí)行N次缺點(diǎn):四、有關(guān)內(nèi)存的思考題(20分)voidGetMemory(char*p)p=(char*)malloc(l00);)voidTest(void)(char*s=NULL;GetMemory(s);scpy(s,#8220;helloworld);printf(s);)請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?char*GetMemory(void){charp[]=#8220;helloworldreturnp;)voidTest(void){char*s=NULL;s=GetMemoryO;printf(s);)請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?VoidGetMemory2(char**p,intnum)*p=(char*)malloc(num);)voidTest(void)(char*s=NULL;GetMemory(amp;s,100);scpy(s,#8220;hello);printf(s);)請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?voidTest(void){char*s=(char*)malloc(lOO);scpy(s,"hello");free(s);if(s!=NULL)(scpy(s,"world");printf(s);))請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?五、編寫scpy函數(shù)(1。分)已知scpy函數(shù)的原型是char*scpy(char*sDest,constchar*sSrc);其中sDest是目的字符串,sSrc是源字符串。(1)不調(diào)用C++/C的字符串庫(kù)函數(shù),請(qǐng)編寫函數(shù)scpychar*scpy(char*sDest,constchar*sSrc){intn=0;while(sSrc[n]!=NULL){n++:)*srtDest=newchar|n];for(inti=0;ivn;i++){sDest=sSrc[i];i++;)return*sDest;)(2)scpy能把sSrc的內(nèi)容復(fù)制到sDest?為什么還要char?類型的返回值?因?yàn)樵摵瘮?shù)的還可以把復(fù)制的字符串首地址指針給其他的指針,而且這種需要也是有用的。六、編寫類Sing的構(gòu)造函數(shù)、析構(gòu)函數(shù)和賦值函數(shù)(25分)已知類Sing的原型為:classSingpublic:Sing(constchar*s=NULL);//普通構(gòu)造函數(shù)Sing(constSingamp;other);〃拷貝構(gòu)造函數(shù)~Sing(void);〃析構(gòu)函數(shù)Singamp;operate=(constSingamp;other);/Z賦值函數(shù)private:char*m_data;/Z用于保存字符串);請(qǐng)編寫Sing的上述4個(gè)函數(shù)?!ù鸢敢徊⒔o出一、請(qǐng)?zhí)顚態(tài)OOL,float,指針變量與“零值”比較的if語(yǔ)句。(10分)請(qǐng)寫出BOOLflag與“零值”比較的if語(yǔ)句。(3分)標(biāo)準(zhǔn)答案:if(flag)if(!flag)如下寫法均屬不良風(fēng)格,不得分。if(flag==TRUE)if(flag==1)if(flag==FALSE)if(flag==0)請(qǐng)寫出floatx與“零值”比較的if語(yǔ)句。(4分)標(biāo)準(zhǔn)答案示例:constfloatEPSINON=0.00001;if((x>=EPSINON)amp;amp;(x<=EPSINON)不可將浮點(diǎn)變量用“==”或"!ゴ與數(shù)字比較,應(yīng)該設(shè)法轉(zhuǎn)化成“>=”或“<=”此類形式。如下是錯(cuò)誤的寫法,不得分。if(x==0.0)if(x!=0.0)請(qǐng)寫出char*p與“零值”比較的if語(yǔ)句。(3分)標(biāo)準(zhǔn)答案:if(p==NULL)if(p!=NULL)如下寫法均屬不良風(fēng)格,不得分。if(p==0)if(p!=0)if(p)if(!)二、以下為WindowsNT下的32位C++程序,請(qǐng)計(jì)算sizeof的值(10分)chars[]=“Hello”;char*p=s;intn=10;請(qǐng)計(jì)算sizeof(s)=6(2分)sizeof(p)=4(2分)sizeof(n)=4(2分)voidFunc(chars[100])請(qǐng)計(jì)算sizeof(s)=4(2分))void*p=malloc(100);請(qǐng)計(jì)算sizeof(p)=4(2分)三、簡(jiǎn)答題(25分)1、頭文件中的ifndef/define/endif干什么用?(5分)答:防止該頭文件被重復(fù)引用。2、Winclude<filename.h>和#includellfilename.h,,有什么區(qū)別?(5分)答:對(duì)于#include<filename.h>,編譯器從標(biāo)準(zhǔn)庫(kù)路徑開(kāi)始搜索filename.h對(duì)于#include"Alename.h”,編譯器從用戶的工作路徑開(kāi)始搜索filename.h3、const有什么用途?(請(qǐng)至少說(shuō)明兩種)(5分)答:(1)可以定義const常量(2)const可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被const修飾的東西都受到強(qiáng)制保護(hù),可以預(yù)防意外的變動(dòng),能提高程序的健壯性。4、在C++程序中調(diào)用被C編譯器編譯后的函數(shù),為什么要加extern“C”?(5分)答:C++語(yǔ)言支持函數(shù)重載,C語(yǔ)言不支持函數(shù)重載。函數(shù)被C++編譯后在庫(kù)中的名字與C語(yǔ)言的不同。假設(shè)某個(gè)函數(shù)的原型為:voidfoo(intx,inty);該函數(shù)被C編譯器編譯后在庫(kù)中的名字為ーf。。,而C++編譯器則會(huì)產(chǎn)生像_foo_int_int之類的名字。C++提供了C連接交換指定符號(hào)extern“C”來(lái)解決名字匹配問(wèn)題。5、請(qǐng)簡(jiǎn)述以下兩個(gè)for循環(huán)的優(yōu)缺點(diǎn)(5分)for(i=0;i<N;i++)if(condition)DoSomethingO;elseDoOtherthingO;}if(condition)(for(i=0;i<N;i++)DoSomethingO;)else{for(i=0;i<N;i++)DoOtherthingO;)優(yōu)點(diǎn):程序簡(jiǎn)潔缺點(diǎn):多執(zhí)行了N-1次邏輯判斷,并且打斷了循環(huán)“流水線”作業(yè),使得編譯器不能對(duì)循環(huán)進(jìn)行優(yōu)化處理,降低了效率。優(yōu)點(diǎn):循環(huán)的效率高缺點(diǎn):程序不簡(jiǎn)潔四、有關(guān)內(nèi)存的思考題(每小題5分,共20分)voidGetMemory(char*p)(p=(char*)malloc(100);)voidTest(void)char*s=NULL;GetMemory(s);scpy(s,#8220;helloworld);printf(s);)請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?答:程序崩潰。因?yàn)镚etMemory并不能傳遞動(dòng)態(tài)內(nèi)存,Test函數(shù)中的s一直都是NULLoscpy(s,#8220;helloworld);將使程序崩潰。char*GetMemory(void)(charp[]=#8220;helloworldreturnp;)voidTest(void)(char*s=NULL;s=GetMemoryO;printf(s);)請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?答:可能是亂碼。因?yàn)镚etMemory返回的是指向“棧內(nèi)存”的指針,該指針的地址不是NULL,但其原現(xiàn)的內(nèi)容已經(jīng)被清除,新內(nèi)容不可知。voidGetMemory2(char**p,intnum){*p=(char*)malloc(num);)voidTest(void){char*s=NULL;GetMemory(amp;s,100);scpy(s,#8220;hello);printf(s);)請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?答:(1)能夠輸出hello(2)內(nèi)存泄漏voidTest(void)char*s=(char*)malloc(lOO);scpy(s,"hello”);free(s);if(s!=NULL)(scpy(s,"world");printf(s);))請(qǐng)問(wèn)運(yùn)行Test函數(shù)會(huì)有什么樣的結(jié)果?答:篡改動(dòng)態(tài)內(nèi)存區(qū)的內(nèi)容,后果難以預(yù)料,非常危險(xiǎn)。因?yàn)閒ree(s);之后,s成為野指針,if(s!=NULL)語(yǔ)句不起作用。27費(fèi)波那其數(shù)列,1,1,2,3,5……編寫程序求第十項(xiàng)。可以用遞歸,也可以用其他方法,但要說(shuō)明你選擇的理由。#include#include<cslib>intPheponatch(int);intPheponatch2(int);intmain()(printf(The10this%d,Pheponatch2(20));system(pause);return0;)〃遞歸算法intPheponatch(intN){if(N==1IIN==2)return1;elsereturnPheponatch(N-1)+Pheponatch(N-2);)〃非遞歸算法intPheponatch2(intN)(intx=1,y=1,temp;inti=2;while(ue)(temp=y;y=x+y;x=temp;i++;if(i==N)break;)returny;)25.完成下列程序???.****#8230;*#8230;*#8230;*#8230;#8230;.*#8230;.*#8230;.*#8230;.*#8230;.*#8230;..*#8230;..*#8230;..*#8230;..*#8230;..*#8230;..#8230;#8230;*#8230;#8230;*#8230;#8230;*#8230;#8230;*#8230;#8230;*#8230;#8230;*#8230;#8230;*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.*#8230;#8230;.#include#defineN8intmain()inti;intj;intk;return0;)#include#include<ioseam.h>#defineN8intmain(){inti;intj;intk;for(i=N;i>=l;i)for(j=。;j<N-i+l;j++)cout<<*for(k=1;kvN?i+l;k++)cout<<cout\n)return0;#8220;28下列程序運(yùn)行時(shí)會(huì)崩潰,請(qǐng)找出錯(cuò)誤并改正,并且說(shuō)明原因。//voidappend(intN);〃指針沒(méi)有初始化://NewNode->left=NULL;//NewNode->right=NULL;includeinclude<malloc.h>typedefsuetTNode{TNode*left;TNode*right;intvalue;}TNode;TNode*root=NULL;voidappend(intN);intmain()(append(63);append(45);append(32);append(77);append(96);append(21);append(17);//Again,數(shù)字任意給出return0;)voidappend(intN)TNode*NewNode=(TNode*)malloc(sizeof(TNode));NewNode->vaIue=N;NewNode->left=NULL;NewNode->right=NULL;if(root==NULL)(root=NewNode;return;)else(TNode*temp;temp=root;while((N>=temp->valueamp;amp;temp->left!=NULL)II(Nright!=NULL))(while(N>=temp->valueamp;amp;temp->left!=NULL)temp=temp->left;while(Nright!=NULL)temp=temp->right;)if(N>=temp->value)temp->left=NewNode;elsetemp->right=NewNode;return;))C++面試題集(5)ー追雨制作62:8086是多少位的系統(tǒng)?在數(shù)據(jù)總線上是怎么實(shí)現(xiàn)的?<<IBM?.怎樣用最快的方法判斷鏈表是否有環(huán)?.C++中引用和指針有什么不同?指針加上什么限制等于引用?答:1引用被創(chuàng)建的時(shí)候必須被初始化,而指針不是必需的。2引用在創(chuàng)建后就不能改變引用的關(guān)系,而指針在初始化后可以隨時(shí)指向其它的變量或?qū)ο蟆?沒(méi)有NULL引用,引用必須與合法的存儲(chǔ)單元關(guān)聯(lián),而指針可以是NULL。.做的項(xiàng)目,遇到的困難,怎樣解決?.操作符重載classCMyObject:pulicCObject(Public:CMyObjectO;CMyObjectamp;operator=(constCMyObjectamp;my);private:CSingsName;intnld:);請(qǐng)重載賦值操作符.鏈表SuetsuctList(intvalue;suctList*pHead;)SuetLinkedList*pMyList;請(qǐng)編寫刪除鏈表的頭、尾和第n個(gè)節(jié)點(diǎn)的程序.用SocketAPI制作一個(gè)聊天程序,通訊協(xié)議使用tcp/ip。要求有簡(jiǎn)單界面即可,支持多人聊天。.如果有過(guò)工作經(jīng)驗(yàn),請(qǐng)說(shuō)明在先前公司的工作以及離職原因(如無(wú),請(qǐng)說(shuō)明畢業(yè)后的個(gè)人展望)***73對(duì)于C++中類(class)與結(jié)構(gòu)(suet)的描述正確的為:A,類中的成員默認(rèn)是private的,當(dāng)是可以聲明為public,private和protected,結(jié)構(gòu)中定義的成員默認(rèn)的都是public;B,結(jié)構(gòu)中不允許定義成員函數(shù),當(dāng)是類中可以定義成員函數(shù);C,結(jié)構(gòu)實(shí)例使用malloc。動(dòng)態(tài)創(chuàng)建,類對(duì)象使用new操作符動(dòng)態(tài)分配內(nèi)存;D,結(jié)構(gòu)和類對(duì)象都必須使用new創(chuàng)建;E,結(jié)構(gòu)中不可以定義虛函數(shù),當(dāng)是類中可以定義虛函數(shù).F,結(jié)構(gòu)不可以存在繼承關(guān)系,當(dāng)是類可以存在繼承關(guān)系.答:A,D,F74,兩個(gè)互相獨(dú)立的類:ClassA和ClassB,都各自定義了非靜態(tài)的公有成員函數(shù)PublicFunc。和非靜態(tài)的私有"成員函數(shù)PrivateFunc();現(xiàn)在要在ClassA中增加定義ー個(gè)成員函數(shù)ClassA::AdditionalPunction(ClassAa,ClassBb);則可以在AdditionalPunction(ClassAx,ClassBy)的實(shí)現(xiàn)部分(函數(shù)功能體內(nèi)部)出現(xiàn)的合法的表達(dá)是最全的是:A,x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc();B,x.PrivateFunc();x.PublicFunc();y.PublicFunc();C,xPrivateFunc();y.PrivateFunc();y.PublicFunc();D,xPublicFunc();y.PublicFunc();答:B75,C++程序下列說(shuō)法正確的有:A,對(duì)調(diào)用的虛函數(shù)和模板類都進(jìn)行遲后編譯.B,基類與子類中函數(shù)如果要構(gòu)成虛函數(shù),除了要求在基類中用virtual聲名,而且必須名字相同且參數(shù)類型相同返回類型相同C,重載的類成員函數(shù)都必須要:或者返回類型不同,或者參數(shù)數(shù)目不同,或者參數(shù)序列的類型不同.D,靜態(tài)成員函數(shù)和內(nèi)聯(lián)函數(shù)不能是虛函數(shù),友員函數(shù)和構(gòu)造函數(shù)也不能是虛函數(shù),但是析構(gòu)函數(shù)可以是虛函數(shù).答:A***76,C++中的類與結(jié)構(gòu)的區(qū)別?77,構(gòu)造函數(shù)和析構(gòu)函數(shù)是否可以被重載,為什么?答:構(gòu)造函數(shù)可以被重載,析構(gòu)函數(shù)不可以被重載。因?yàn)闃?gòu)造函數(shù)可以有多個(gè)且可以帶參數(shù),而析構(gòu)函數(shù)只能有一個(gè),且不能帶參數(shù)。78,ー個(gè)類的構(gòu)造函數(shù)和析構(gòu)函數(shù)什么時(shí)候被調(diào)用,是否需要手工調(diào)用?答:構(gòu)造函數(shù)在創(chuàng)建類對(duì)象的時(shí)候被自動(dòng)調(diào)用,析構(gòu)函數(shù)在類對(duì)象生命期結(jié)朿時(shí),由系統(tǒng)自動(dòng)調(diào)用。1#include"filename.h”和#include<H]ename.h>的區(qū)別?答:/include“filename.h”表明該文件是用戶提供的頭文件,査找該文件時(shí)從當(dāng)前文件目錄開(kāi)始;#include<filename.h>表明這個(gè)文件是ー個(gè)工程或標(biāo)準(zhǔn)頭文件,查找過(guò)程會(huì)檢查預(yù)定義的目錄。2頭文件的作用是什么?答:ー、通過(guò)頭文件來(lái)調(diào)用庫(kù)功能。在很多場(chǎng)合,源代碼不便(或不準(zhǔn))向用戶公布,只要向用戶提供頭文件和二進(jìn)制的庫(kù)即可。用戶只需要按照頭文件中的接口聲明來(lái)調(diào)用庫(kù)功能,而不必關(guān)心接口怎么實(shí)現(xiàn)的。編譯器會(huì)從庫(kù)中提取相應(yīng)的代碼。二、頭文件能加強(qiáng)類型安全檢査。如果某個(gè)接口被實(shí)現(xiàn)或被使用時(shí),其方式與頭文件中的聲明不一致,編譯器就會(huì)指出錯(cuò)誤,這ー簡(jiǎn)單的規(guī)則能大大減輕程序員調(diào)試、改錯(cuò)的負(fù)擔(dān)。3C++函數(shù)中值的傳遞方式有哪幾種?答:C++函數(shù)的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞。4內(nèi)存的分配方式的分配方式有幾種?答:ー、從靜態(tài)存儲(chǔ)區(qū)域分配。內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在。例如全局變量。二、在棧上創(chuàng)建。在執(zhí)行函數(shù)時(shí),函數(shù)內(nèi)局部變量的存儲(chǔ)單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲(chǔ)單元自動(dòng)被釋放。棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。三、從堆上分配,亦稱動(dòng)態(tài)內(nèi)存分配。程序在運(yùn)行的時(shí)候用malloc或new申請(qǐng)任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時(shí)用ft*ee或delete釋放內(nèi)存。動(dòng)態(tài)內(nèi)存的生存期由我們決定,使用非常靈活,但問(wèn)題也最多。5實(shí)現(xiàn)雙向鏈表刪除ー個(gè)節(jié)點(diǎn)P,在節(jié)點(diǎn)P后插入一個(gè)節(jié)點(diǎn),寫出這兩個(gè)函數(shù);答:雙向鏈表刪除ー個(gè)節(jié)點(diǎn)Ptemplate<classtype>voidlist::delnode(intp)intk=1;listnode*p,*t;p=first;while(p->next!=NULLamp;amp;k!=p)p=p->next;k++;)t=p->next;cout你已經(jīng)將數(shù)據(jù)項(xiàng)#8220;<<t->data<<刪除<endl;p->next=p->next->next;lengthdeletet;)在節(jié)點(diǎn)P后插入一個(gè)節(jié)點(diǎn):template<classtype>boollist::insert(typet,intp)listnode*p;p=first;intk=l;while(p!=NULLamp;amp;k<p)p=p->next;k++;)if(p==NULLamp;amp;k!=p)returnfalse;else(listnode*tp;tp=newlistnodetp->data=t;tp->next=p->next;p->next=tp;length++;returnue;))C++面試題集(4)追雨制作.以下代碼有什么問(wèn)題?[STL易]typedefvectorIntArray;IntArrayarray;array.push_back(1);array.push_back(2);array.push_back(2);array.push_back(3);〃刪除array數(shù)組中所有的2for(IntArray:iteratoritor=array.begin();itor!=array.end();++itor)if(2==*itor)array.erase(itor);).寫ー個(gè)函數(shù),完成內(nèi)存之間的拷貝。[考慮問(wèn)題是否全面]答:void*mymemcpy(void*dest,constvoid*src,size_tcount)char*pdest=static_cast<char*>(dest);constchar*psrc=static_cast<constchar*>(src);iRpdest>psrcamp;amp;pdest<psrc+cout)能考慮到這種情況就行了(for(size_ti=count-l;i!=-l;i)pdest[i]=psrc[i];)else(for(size_ti=0;i<count;++i)pdest[i]=psrc[i];returndest;)intmain(void)(chars[]=#8220;0123456789#8243;;mymemcpy(s+1,s+0,9);cout<endl;system(#8220;Pause);return0;54線程與進(jìn)程的區(qū)別55:請(qǐng)你分別劃劃OSI的七層網(wǎng)絡(luò)結(jié)構(gòu)圖,和TCP/IP的五層結(jié)構(gòu)圖?56:請(qǐng)你詳細(xì)的解釋一下IP協(xié)議的定義,在哪個(gè)層上面,主要有什么作用?TCP與UDP呢?IP協(xié)議是網(wǎng)絡(luò)層的協(xié)議,它實(shí)現(xiàn)了Internet中自動(dòng)路由的功能,即尋徑的功能,TCP協(xié)議是ー個(gè)傳輸性的協(xié)議它向下屏蔽了1P協(xié)議不可靠傳輸?shù)奶匦?向上提供ー個(gè)可靠的點(diǎn)到點(diǎn)的傳輸,UDP提供的是ー種無(wú)連接的服務(wù),主要考慮到很多應(yīng)用不需要可靠的連接,但需要快速的傳輸57;請(qǐng)問(wèn)交換機(jī)和路由器分別的實(shí)現(xiàn)原理是什么?分別在哪個(gè)層次上面實(shí)現(xiàn)的?交換機(jī)用在局域網(wǎng)中,交換機(jī)通過(guò)紀(jì)錄局域網(wǎng)內(nèi)各節(jié)點(diǎn)機(jī)器的MAC地質(zhì)(物理地址)就可以實(shí)現(xiàn)傳遞報(bào)文,無(wú)需看報(bào)文中的IP地質(zhì)。路由器識(shí)別不同網(wǎng)絡(luò)的方法是通過(guò)識(shí)別不同網(wǎng)絡(luò)的網(wǎng)絡(luò)1D號(hào)(1P地址的高端部分)進(jìn)行的,所以為了保證路由成功,每個(gè)網(wǎng)絡(luò)都必須有一個(gè)唯一的網(wǎng)絡(luò)編號(hào)。路由器通過(guò)察看報(bào)文中IP地址,來(lái)決定路徑,向那個(gè)子網(wǎng)(下ー跳)路由,也就是說(shuō)交換機(jī)工作在數(shù)據(jù)鏈路層看MAC地址,路由器工作在網(wǎng)際層看1P地質(zhì)但是由于現(xiàn)在網(wǎng)絡(luò)設(shè)備的發(fā)展,很多設(shè)備既有交換機(jī)的功能有由路由器的功能(交換試路由器)使得兩者界限越來(lái)越模糊。58:請(qǐng)問(wèn)C++的類和C里面的suet有什么區(qū)別?59:請(qǐng)講ー講析構(gòu)函數(shù)和虛函數(shù)的用法和作用?60:全局變量和局部變量有什么區(qū)別?實(shí)怎么實(shí)現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的?全局變量是整個(gè)程序都可訪問(wèn)的變量,誰(shuí)都可以訪問(wèn),生存期在整個(gè)程序從運(yùn)行到結(jié)束(在程序結(jié)束時(shí)所占內(nèi)存釋放),而局部變量存在于模塊(子程序,函數(shù))中,只有所在模塊可以訪問(wèn),其他模塊不可直接訪問(wèn),模塊結(jié)束(函數(shù)調(diào)用完畢),局部變量消失,所占據(jù)的內(nèi)存釋放。全局變量分配在全局?jǐn)?shù)據(jù)段并且在程序開(kāi)始運(yùn)行的時(shí)候被加載.局部變量則分配在堆棧里面。61:一些寄存器的題目,主要是尋址和內(nèi)存管理等ー些知識(shí)。2、交換機(jī)用在局域網(wǎng)中,交換機(jī)通過(guò)紀(jì)錄局域網(wǎng)內(nèi)各節(jié)點(diǎn)機(jī)器的MAC地質(zhì)(物理地址)就可以實(shí)現(xiàn)傳遞報(bào)文,無(wú)需看報(bào)文中的IP地質(zhì)。路由器識(shí)別不同網(wǎng)絡(luò)的方法是通過(guò)識(shí)別不同網(wǎng)絡(luò)的網(wǎng)絡(luò)ID號(hào)(IP地址的高端部分)進(jìn)行的,所以為了保證路由成功,每個(gè)網(wǎng)絡(luò)都必須有一個(gè)唯一的網(wǎng)絡(luò)編號(hào)。路由器通過(guò)察看報(bào)文中IP地址,來(lái)決定路徑,向那個(gè)子網(wǎng)(下ー跳)路由,也就是說(shuō)交換機(jī)工作在數(shù)據(jù)鏈路層看MAC地址,路由器工作在網(wǎng)際層看IP地質(zhì)但是由于現(xiàn)在網(wǎng)絡(luò)設(shè)備的發(fā)展,很多設(shè)備既有交換機(jī)的功能有由路由器的功能(交換試路由器)使得兩者界限越來(lái)越模糊。3、IP協(xié)議是網(wǎng)絡(luò)層的協(xié)議,它實(shí)現(xiàn)了Internet中自動(dòng)路由的功能,即尋徑的功能,TCP協(xié)議是ー個(gè)傳輸性的協(xié)議它向下屏蔽了IP協(xié)議不可靠傳輸?shù)奶匦?向上提供ー個(gè)可靠的點(diǎn)到點(diǎn)的傳輸,UDP提供的是ー種無(wú)連接的服務(wù),主要考慮到很多應(yīng)用不需要可靠的連接,但需要快速的傳輸4、Testb();〃定義了一個(gè)函數(shù)C++面試題集(3)ー追雨制作39.解釋局部變量、全局變量和靜態(tài)變量的含義。.解釋堆和棧的區(qū)別。棧區(qū)(stack)一由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。堆:一般由程序員分配釋放,若程序員不釋放,程序結(jié)朿時(shí)可能由os冋收。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表..論述含參數(shù)的宏與函數(shù)的優(yōu)缺點(diǎn)。.以下三條輸出語(yǔ)句分別輸出什么?[C易]charsl[]=#8220;abcchars2[]=#8220;abcconstchars3[]=#8220;abcconstchars4[]二#8220;abcconstchar*s5=#8220;abcconstchar*s6=#8220;abccout<boolalpha<(sl==s2)<vendl;〃輸出什么?cout<boolalpha<(s3==s4)vendl;〃輸出什么?cout<<boolalpha<<(s5==s6)<vendl;〃輸出什么?.非C++內(nèi)建型別A和B,在哪幾種情況下B能隱式轉(zhuǎn)化為A?[C++中等]答:classB:publicA{ }//B公有繼承自A,可以是間接繼承的classB{operatorA();}//B實(shí)現(xiàn)了隱式轉(zhuǎn)化為A的轉(zhuǎn)化classA{A(constBamp;);}〃A實(shí)現(xiàn)了non-explicit的參數(shù)為B(可以有其他帶默認(rèn)值的參數(shù))構(gòu)造函數(shù)Aamp;operator=(constAamp;);〃賦值操作,雖不是正宗的隱式類型轉(zhuǎn)換,但也可以勉強(qiáng)算ー個(gè).以下代碼中的兩個(gè)sizeof用法有問(wèn)題嗎?[C易]voidUpperCase(chars[])〃將s中的小寫字母轉(zhuǎn)換成大寫字母for(size_ti=0;i<sizeof(s)/sizeof(s[〇]);++i)if(#8216;a#8217;<=s[i]amp;amp;s[i]<=#8217;z#8217;)s[i]-=(#8217;a'-#8217;A#8217;);)chars[]=#8220;aBcDecout<<#8220;s字符長(zhǎng)度為:sizeof(s)/sizeof(s[0])<endl;UpperCase(s);coutendl;45.以下代碼有什么問(wèn)題?[C難]voidchar2Hex(charc)〃將字符以16進(jìn)制表示charch=c/0#2I5;10+#8216;0#8242;;if(ch>#8216;9#8242;)ch+=(#8217;Aし#8217;9#8242;-l);charcl=c%0#215;10+#8216;0#8242;;if(cl>#8216;9#8242;)cl+=(#8217;A'-#8217;9#8242;-1);cout<<ch<<cl<<#8216;#8216;;chars[]=#8220;1love中國(guó)for(size_ti=0;i<slen(s);++i)char2Hex(s[i]);cout<<endl;46.以下代碼有什么問(wèn)題?[C++易]suetTestTest(int){}Test(){}voidfun(){});voidmain(void)Testa(l);a.fun();Testb();b.fun();)***Testb();〃定義了一個(gè)函數(shù)47.以下代碼有什么問(wèn)題?[C++易]cout<<(ue?l:1#8243;)<<endl;8.以下代碼能夠編譯通過(guò)嗎,為什么?[C++易]unsignedintconstsizel=2;charsl[sizel];unsignedinttemp=0;cin?temp;unsignedintconstsize2=temp;chars2[size2];48.以下代碼中的輸出語(yǔ)句輸出。嗎,為什么?[C++易]suetCLS(intm_i;CLS(inti):m_i(i){}CLS()CLS(O);));CLSobj;cout<<obj.m_i<<endl;.C++中的空類,默認(rèn)產(chǎn)生哪些類成員函數(shù)?[C++易]答:classEmpty(public:Empty();/Z缺省構(gòu)造函數(shù)Empty(constEmptyamp;);〃拷貝構(gòu)造函數(shù)~Empty();/Z析構(gòu)函數(shù)Emptyamp;operator=(constEmptyamp;);〃賦值運(yùn)算符Empty*operatoramp;();/Z取址運(yùn)算符constEmpty*operatoramp;()const;/Z取址運(yùn)算符const);.以下兩條輸出語(yǔ)句分別輸出什么?[C++難]floata=l.Of;cout<<(int)a<<endl;cout<<(intamp;)a<<endl;cout<<boolalpha<<((int)a==(intamp;)a)<vendl;〃輸出什么?floatb=O.Of;cout<<(int)b<endl;cout<<(intamp;)b<endl;cout<boolalpha<((int)b==(intamp;)b)vendl;〃輸出什么?51.以下反向遍歷array數(shù)組的方法有什么錯(cuò)誤?[STL易]vectorarray;array.push_back(1);array.push_back(2);array.push_back(3);for(vector::size_typei=array.size()-l;i>=0;i)〃反向遍歷array數(shù)組cout<<array[i]<<endl;)C++面試題集(2)ー追雨制作11下列哪兩個(gè)是等同的intb;Aconstint*a=amp;b;Bconst*inta=amp;b;Cconstint*consta=amp;b;Dintconst*consta=amp;b;12內(nèi)聯(lián)函數(shù)在編譯時(shí)是否做參數(shù)類型檢査13三個(gè)float:a,b,c問(wèn)值(a+b)+c==(b+a)+c(a+b)+c==(a+c)+b14把一個(gè)鏈表反向填空voidreverse(test*head){test*pe=head;test*ps=head->next;while(ps){pe->next=ps->next;ps->next=head;head=ps;ps=pe->next;))15設(shè)一?個(gè)重采樣系統(tǒng),說(shuō)明如何anti-alias16某個(gè)程序在ー個(gè)嵌入式系統(tǒng)(200M的CPU,50M的SDRAM)中已經(jīng)最化了,換到另ー個(gè)系統(tǒng)(300M的CPU,50M的SDRAM)中運(yùn)行,還需要優(yōu)化嗎?17.下面哪種排序法對(duì)12354最快aquicksortb.bublesortc.mergesortは哪種結(jié)構(gòu),平均來(lái)講,獲取ー個(gè)值最快binaryeehashtablestack19請(qǐng)問(wèn)C++的類和C里面的suet有什么區(qū)別?答:C++的類的成員默認(rèn)情況下是私有的,C的suet的成員默認(rèn)情況下是公共的.20請(qǐng)講ー講析構(gòu)函數(shù)和虛函數(shù)的用法和作用?答:析構(gòu)函數(shù)的作用是當(dāng)對(duì)象生命期結(jié)束時(shí)釋放對(duì)象所占用的資源。析構(gòu)函數(shù)用法:析構(gòu)函數(shù)是特殊的類成員函數(shù)它的名字和類名相同,沒(méi)有返回值,沒(méi)有參數(shù)不能隨意調(diào)用也沒(méi)有重載。只是在類對(duì)象生命期結(jié)朿時(shí)有系統(tǒng)自動(dòng)調(diào)用。虛函數(shù)用在繼承中,當(dāng)在派生類中需要重新定義基類的函數(shù)時(shí)需要在基類中將該函數(shù)聲明為虛函數(shù),作用為使程序支持動(dòng)態(tài)聯(lián)遍。21全局變量和局部變量有什么區(qū)別?是怎么實(shí)現(xiàn)的?操作系統(tǒng)和編譯器是怎么知道的?答:ー些變量整個(gè)程序中都是可見(jiàn)的,它們稱為全局變量,ー些變量在函數(shù)內(nèi)部定義且只在函數(shù)中可知,則稱為局部變量。全局變量由編譯器建立且存放在內(nèi)存的全局?jǐn)?shù)據(jù)區(qū),局部變量存放在棧區(qū)22ー些寄存器的題目,主要是尋址和內(nèi)存管理等ー些知識(shí)。238086是多少尉的系統(tǒng)?在數(shù)據(jù)總線上是怎么實(shí)現(xiàn)的?24多態(tài)。overload和override的區(qū)別。答:重載在相同范圍(同一個(gè)類中),函數(shù)名字相同,參數(shù)不同,virtual關(guān)鍵字可有可無(wú)。覆蓋是指派生類函數(shù)覆蓋基類函數(shù),不同的范圍,函數(shù)名字相同,參數(shù)相同,基類函數(shù)必須有virtual關(guān)鍵字。C++面試題集(1)_追雨制作1#include"filename.h”和#include<filename.h>的區(qū)別?答:對(duì)于#include<filename.h>編譯器從標(biāo)準(zhǔn)庫(kù)開(kāi)始搜索filename.h對(duì)于#include“filename.h”編譯器從用戶工作路徑開(kāi)始搜索filename.h2頭文件的作用是什么?答:ー、通過(guò)頭文件來(lái)調(diào)用庫(kù)功能。在很多場(chǎng)合,源代碼不便(或不準(zhǔn))向用戶公布,只要向用戶提供頭文件和二進(jìn)制的庫(kù)即可。用戶只需要按照頭文件中的接口聲明來(lái)調(diào)用庫(kù)功能,而不必關(guān)心接口怎么實(shí)現(xiàn)的。編譯器會(huì)從庫(kù)中提取相應(yīng)的代碼。二、頭文件能加強(qiáng)類型安全檢査。如果某個(gè)接口被實(shí)現(xiàn)或被使用時(shí),其方式與頭文件中的聲明不一致,編譯器就會(huì)指出錯(cuò)誤,這ー簡(jiǎn)單的規(guī)則能大大減輕程序員調(diào)試、改錯(cuò)的負(fù)擔(dān)。3C++函數(shù)中值的傳遞方式有哪幾種?答:C++函數(shù)的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞。4內(nèi)存的分配方式的分配方式有幾種?答:ー、從靜態(tài)存儲(chǔ)區(qū)域分配。內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在。例如全局變量。二、在棧上創(chuàng)建。在執(zhí)行函數(shù)時(shí),函數(shù)內(nèi)局部變量的存儲(chǔ)單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲(chǔ)單元自動(dòng)被釋放。棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。三、從堆上分配,亦稱動(dòng)態(tài)內(nèi)存分配。程序在運(yùn)行的時(shí)候用malloc或new申請(qǐng)任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時(shí)用fi'ee或delete釋放內(nèi)存。動(dòng)態(tài)內(nèi)存的生存期由我們決定,使用非常靈活,但問(wèn)題也最多。5實(shí)現(xiàn)雙向鏈表刪除ー個(gè)節(jié)點(diǎn)P,在節(jié)點(diǎn)P后插入一個(gè)節(jié)點(diǎn),寫出這兩個(gè)函數(shù);答:雙向鏈表刪除ー個(gè)節(jié)點(diǎn)Ptemplate<classtype>voidlist::delnode(intp)(intk=l;listnodep,*t;p=first;while(p->next!=NULLamp;amp;k!=p)p=p->next;k++;)t=p->next;cout<<你已經(jīng)將數(shù)據(jù)項(xiàng)#8220;<<t->data<<刪除<<endl;p->next=p->next->next;lengthdeletet;)在節(jié)點(diǎn)P后插入一個(gè)節(jié)點(diǎn):template<classtypoboollist::insert(typet,intp)listnode*p;p=first;intk=l;while(p!=NULLamp;amp;k<p)(p=p->next;k++;)if(p==NULLamp;amp;k!=p)returnfalse;elselistnode*tp;tp=newlistnodetp->data=t;tp->next=p->next;p->next=tp;length++;returnue;)6寫ー個(gè)函數(shù),將其中的\t都轉(zhuǎn)換成4個(gè)空格。voidchange(char*ps)while(*ps++!=#8216;\0#8242;)if(*ps==#8216;\t#8217;))}7Windows程序的入口是哪里?寫出Windows消息機(jī)制的流程.8如何定義和實(shí)現(xiàn)ー個(gè)類的成員函數(shù)為回調(diào)函數(shù)?9C++里面是不是所有的動(dòng)作都是main()引起的?如果不是,請(qǐng)舉例.答:在運(yùn)行C++程序時(shí),通常從main()函數(shù)開(kāi)始執(zhí)行。因此如果沒(méi)有main。,程序?qū)⒉煌暾?編譯器將指出未定義main。函數(shù)。例外情況:如,在windows編程中,可以編寫ー個(gè)動(dòng)態(tài)連接庫(kù)(dll)模塊,這是其他windows程序可以使用的代碼。由于DLL模塊不是獨(dú)立的程序,因此不需要main。.用于專用環(huán)境的程序如機(jī)器人中的控制器芯片可能不需要main。.但常規(guī)的獨(dú)立程序都需要main().10C++里面如何聲明constvoidf(void)函數(shù)為C程序中的庫(kù)函數(shù)?摩托羅拉部分C++面試題ー追雨制作1.介紹一下STL,詳細(xì)說(shuō)明STL如何實(shí)現(xiàn)vector。.如果用VC開(kāi)發(fā)程序,常見(jiàn)這么幾個(gè)錯(cuò)誤,C200l,c2005,c2011,這些錯(cuò)誤的原因是什么。.繼承和委派有什么分別,在決定使用繼承或者委派的時(shí)候需要考慮什么。.指針和引用有什么分別;如果傳引用比傳指針安全,為什么?如果我使用常量指針難道不行嗎?.參數(shù)傳遞有幾種方式;實(shí)現(xiàn)多態(tài)參數(shù)傳遞采用什么方式,如果沒(méi)有使用某種方式原因是什么;.結(jié)合一個(gè)項(xiàng)目說(shuō)明你怎樣應(yīng)用設(shè)計(jì)模式的理念。.介紹一下你對(duì)設(shè)計(jì)模式的理解。(這個(gè)過(guò)程中有很多很細(xì)節(jié)的問(wèn)題隨機(jī)問(wèn)的).C++和C定義結(jié)構(gòu)的分別是什么。.構(gòu)造函數(shù)可否是虛汗數(shù),為什么?析構(gòu)函數(shù)呢,可否是純虛的呢?10,拷貝構(gòu)造函數(shù)相關(guān)問(wèn)題,深拷貝,淺拷貝,臨時(shí)對(duì)象等。.結(jié)合1個(gè)你認(rèn)為比較能體現(xiàn)OOP思想的項(xiàng)目,用UML來(lái)描述。(最好這個(gè)項(xiàng)目繼承,多態(tài),虛函數(shù)都有體現(xiàn))這個(gè)問(wèn)題大概會(huì)占面試時(shí)間的一半,并且會(huì)問(wèn)很多問(wèn)題,ー不小心可能會(huì)被問(wèn)?。?。12〇基類的有1個(gè)虛函數(shù),子類還需要申明為virtual嗎?為什么。.C也可以通過(guò)精心封裝某些函數(shù)功能實(shí)現(xiàn)重用,那C++的類有什么優(yōu)點(diǎn)嗎,難道僅僅是為實(shí)現(xiàn)重用。.C++特點(diǎn)是什么,如何實(shí)現(xiàn)多態(tài)?畫(huà)出基類和子類在內(nèi)存中的相互關(guān)系。.為什么要引入抽象基類和純虛函數(shù)?.介紹一下模板和包容器。如何實(shí)現(xiàn)?(也許會(huì)讓你當(dāng)場(chǎng)舉例實(shí)現(xiàn)).你如何理解MVC。簡(jiǎn)單舉例來(lái)說(shuō)明其應(yīng)用。18,多重繼承如何消除向上繼承的二義性。大體記得就是這些,想起來(lái)會(huì)繼續(xù)補(bǔ)充。.什么是中斷?中斷發(fā)生時(shí)CPU做什么工作?.CPU在上電后,進(jìn)入操作系統(tǒng)的main。之前必須做什么工作?.簡(jiǎn)述ISOOSI的物理層Layerl,鏈路層Layer2,網(wǎng)絡(luò)層Layer3的任務(wù)。.有線電話和無(wú)線電話有何區(qū)別?無(wú)線電話特別需要注意的是什么?.軟件開(kāi)發(fā)五個(gè)主要step是什么?.你在開(kāi)發(fā)軟件的時(shí)候,這5個(gè)step分別占用的時(shí)間百分比是多少?.makefile文件的作用是什么?.UNIX顯示文件夾中,文件名的命令是什么?能使文件內(nèi)容顯示在屏幕的命令是什么?.(選做)手機(jī)用戶在從一個(gè)基站漫游到另一個(gè)基站的過(guò)程中,都會(huì)發(fā)生什么?DifferentbetweenC++pointersandreferences?ー追雨制作Becauseareferencemustrefertoanobject,C++requiresthatreferencesbeinitialized.Noticethatthereisnosuchthingasanullreference.Anotherimportantdifferencebetweenpointersandreferencesisthatpointersmaybereassignedtorefertodifferentobjects.Areference,however,alwaysreferstotheobjectwithwhichitisinitializedIngeneral,youshoulduseapointerwheneveryouneedtotakeintoaccountthepossibilitythatthere#8217;snothingtoreferto(inwhichcaseyoucansetthepointertonull)orwheneveryouneedtobeabletorefertodifferentthingsatdifferenttimes(inwhichcaseyoucanchangewherethepointerpoints).Youshoulduseareferencewheneveryouknowtherewillalwaysbeanobjecttorefertoandyoualsoknowthatonceyou8217;rereferringtothatobject,you8217;1!neverwanttorefertoanythingelseOtheroccassions:you8217;11almostalwayswantoperator!]toreturnareference.GenericC++interivewquestionsー追雨制作Somestatements:Resultofdeletinganarrayofderivedclassobjectsthroughabaseclasspointerisundefined.Avoiddefaultconsuctors,insteadusector(s)withdefaultvalueforinputparameter(s).Q:C++*_castexplanation?A:const:constmemberfunctions(getterfunction),constpointers,constvariables(datamemberorobject)ie:constchar*constm_出#8230;)const{}const_cast<>operatorwillcastin/outbetweenconstandnon-consttime,butbeawareofread-onlymemoryaccessproblemwhencastfromconsttonon-cast,sinceconsttypevariablemayhavebeenallocatedinreadonlymemorysection!dynamic_cast,const_cast,typeidLink:/doc/tutorial/tut5-4.htmldynamic_cast,isusedtoperformsafecastsdownoracrossaninheritancehierarchy.Thatis,youusedynamic_casttocastpointersorreferencestobaseclassobjectsintopointersorreferencestoderivedorsiblingbaseclassobjectsinsuchawaythatyoucandeterminewhetherthecastssucceeded.1Failedcastsareindicatedbyanullpointer(whencastingpointers)oranexception(whencastingreferences).i.e:classWidget{8230;};classSpecialWidget:publicWidget{8230;};voidupdate(SpecialWidget*psw);Widget*pw;8230;update(dynamic_cast<SpecialWidget*>(pw));//fine,passestoupdateapointerIItotheSpecialWidgetpwpointsto//ifpwreallypointstoone,//otherwisepassesthenullpointerexplicitkeyword:/tip_023.htmi.e.:classA{public:explicitA(int););voidf(A){}voidg()(Aal=A(37);Aa2=A(47);Aa3(57);al=A(67);f(A(77));//}Q:Whatisthedifferencebetweenacopyconsuctorandanoverloadedassignmentoperator?A:Acopyconsuctorconsuctsanewobjectbyusingthecontentoftheargumentobject.Anoverloadedassignmentoperatorassignsthecontentsofanexistingobjecttoanotherexistingobjectofthesameclass.Q:Whatisaconversionconsuctor?A:Aconsuctorthatacceptsoneargumentofadifferenttype.Q:Whatisavirtualdesuctor?A:Thesimpleansweristhatavirtualdesuctorisonethatisdeclaredwiththevirtualatibute.youdesoyanobjectthroughapointerorreferencetoabaseclass,Q:Whatisamutablemember?A:Onethatcanbemodifiedbytheclassevenwhentheobjectoftheclassorthememberfunctiondoingthemodificationisconst.Q:Whatisanexplicitconsuctor?A:Aconversionconsuctordeclaredwiththeexplicitkeyword.Thecompilerdoesnotuseanexplicitconsuctortoimplementanimpliedconversionoftypes.It#8217;spurposeisreservedexplicitlyforconsuction.Q:Describerun-timetypeidentification.A:Theabilitytodetermineatruntimethetypeofanobjectbyusingthetypeidoperatororthedynamic_castoperator.Q:Whatproblemdoesthenamespacefeaturesolve?A:Multipleprovidersoflibrariesmightusecommonglobalidentifierscausinganamecollisionwhenanapplicationiestolinkwithtwoormoresuchlibraries.Thenamespacefeaturesurroundsalibrary#8217;sexternaldeclarationswithauniquenamespacethateliminatesthepotentialforthosecollisions.Q:ImplementSingcla
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中考道德與法治一輪復(fù)習(xí)之民主與法治
- 美容行業(yè)美發(fā)技術(shù)培訓(xùn)心得
- 教研工作推動(dòng)學(xué)術(shù)進(jìn)步
- 電力系統(tǒng)通信(完整版)資料
- 時(shí)尚行業(yè)美工工作總結(jié)
- 電子行業(yè)電子設(shè)備維護(hù)培訓(xùn)總結(jié)
- 2024年管理部門安全管理制度
- 2025屆【首發(fā)】河北省衡水市棗強(qiáng)縣中考試題猜想生物試卷含解析
- 2025關(guān)于押運(yùn)服務(wù)合同書(shū)的范本
- 2024年度天津市公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師通關(guān)題庫(kù)(附帶答案)
- 化工生產(chǎn)操作工培訓(xùn)手冊(cè)
- 帝國(guó)主義:資本主義發(fā)展的最高最后階段
- 銀行催收外包服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 2024年廣西北部灣港集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 建設(shè)工程項(xiàng)目工程項(xiàng)目三方合署辦公管理標(biāo)準(zhǔn)
- 工程造價(jià)畢業(yè)設(shè)計(jì)總結(jié)3000字(5篇)
- 鼓膜置管方法
- 國(guó)家開(kāi)放大學(xué)電大專科《刑法學(xué)(1)》題庫(kù)及答案
- 行業(yè)代碼大全
- 反電信詐騙ppt-防范電信詐騙的ppt
- 樁基檢測(cè)的環(huán)保措施
評(píng)論
0/150
提交評(píng)論