一、給了一棵二叉樹(shù)的前序遍歷和中序遍歷,要求寫(xiě)出后序遍歷。
看一下數(shù)據(jù)結(jié)構(gòu)就行了,很easy。提示:前序遍歷的第一個(gè)節(jié)點(diǎn)為根結(jié)點(diǎn),在中序遍歷中根結(jié)點(diǎn)的左邊節(jié)點(diǎn)是左子樹(shù),右邊節(jié)點(diǎn)是右子樹(shù),如此遞歸。
二、什么是物理內(nèi)存和虛擬內(nèi)存,OS中為什么要使用虛擬內(nèi)存?
看OS的書(shū)。
三、解釋一下C#中的“delegate”。
原先不清楚的,然后在技術(shù)面試的時(shí)候問(wèn)了一下面試官,原來(lái)類(lèi)似于一個(gè)隊(duì)列,隊(duì)列中存的是函數(shù)指針(托管函數(shù)),運(yùn)行時(shí)隊(duì)列中的函數(shù)會(huì)在一個(gè)線程中被依次執(zhí)行。
四、與子程序傳遞參數(shù)有哪些方法?
匯編題,我想起來(lái)三個(gè):參數(shù)壓棧、參數(shù)存寄存器、參數(shù)存數(shù)據(jù)段。
五、解釋一下Java中的String和StringBuffer,什么時(shí)候需要使用StringBuffer?
核心是String對(duì)象是不變對(duì)象,連接、取子串等操作會(huì)生成新的對(duì)象,舊對(duì)象可能會(huì)被回收。StringBuufer則是可變對(duì)象,上述操作將在原對(duì)象上進(jìn)行。
六、Java中哪些容器的默認(rèn)布局器(layout)是BorderLayout?
這個(gè)不是那得很準(zhǔn),就寫(xiě)了JFrame及其子類(lèi),F(xiàn)rame及其子類(lèi)。
七、一個(gè)C 的函數(shù):
int operation(int numberA,int numberB){
return numberA numberB;
}
然后聲明了三個(gè)變量:
int a = 2;
int result1 = operation(5, a );
int result2 = operation(5 a, a); 字串1
問(wèn)result1和result2的值。
原先以為考得是傳值、傳引用的問(wèn)題,結(jié)果仔細(xì)一看考得是a 和 a的問(wèn)題,這就簡(jiǎn)單了。result1 = 7, result2 = 12
八、假如父類(lèi)的析構(gòu)函數(shù)沒(méi)有聲明為虛函數(shù)的話在父類(lèi)的指針上調(diào)用析構(gòu)函數(shù)會(huì)有什么后果?
屏蔽多態(tài),子類(lèi)申請(qǐng)的資源將不被釋放。
九、定義了一個(gè)類(lèi):
class Something{ 字串5
pulic: 字串2
Something();
void setValue(int val){
value = val;
}
private:
int value;
}
以及一個(gè)函數(shù):
void doSomething(int val){
Something sth = new Something(); // Line 1 字串1
sth->setValue(val); // Line 2
}
問(wèn)Line 2假如是doSomething()的最后一行的話會(huì)有什問(wèn)題?
doSomething執(zhí)行完后sth沒(méi)有被銷(xiāo)毀,內(nèi)存泄漏。
十、寫(xiě)一個(gè)程序?qū)⑤斎氲?6進(jìn)制轉(zhuǎn)為10進(jìn)制。(基礎(chǔ))
十一、設(shè)計(jì)一個(gè)微波爐的控制程序(OO)。
這道題有點(diǎn)意思,我主要用Observer模式設(shè)計(jì)了一個(gè)定時(shí)器,然后把微波爐烹飪的對(duì)象抽象為Cookable。
十二、邏輯題,一列火車(chē)以15 mph的速度從北京開(kāi)往上海,另一列火車(chē)以20 mph的速度從上海開(kāi)往北京,一只鳥(niǎo)(比較笨)速度25 mph,在兩列火車(chē)之間往返飛,相遇即折回。問(wèn)到兩列火車(chē)相遇這只笨鳥(niǎo)一共飛了多遠(yuǎn)?