去哪兒網 校招面試
2013應屆畢業生“去哪兒網”校招面試題
1.刪除一個ArrayList中的所有元素,要求現場手寫程式碼。
答:
方法一:刪除前用一個變數flag紀錄list的長度,然後for迴圈刪除flag次第一個元素。關鍵程式碼如下:
int flag = list.size();
for(inti = 0; i < flag ; i++){
list.remove(0);
}
因每次刪除都會導致size的重新變化,所以刪除前需紀錄。
方法二:將list壓入迭代器,迴圈刪除迭代器即可。關鍵程式碼如下:
Iterator
itr = list.iterator();
while(itr.hasNext()){
itr.next();
itr.remove();
}
壓入迭代器後,利用迭代器的方法進行刪除。建設讀者自行嘗試一下,以體會其中道理。
2.Java中的垃圾回收機制。
答:Java提供的GC(垃圾收集)功能可以自動檢測物件是否超過作用域從而達到自動回收記憶體的目的',Java語言沒有提供釋放已分配記憶體的顯示操作方法。GC採用有向圖的方式記錄和管理堆記憶體中的所有物件,當物件“不可達”時,GC自動回收該記憶體。
3.建立一個物件有幾種方法
答:
a.用new語句建立物件,這是最常用的建立物件的方式。
b.運用反射手段,呼叫java.lang.Class或者java.lang.reflect.Constructor類的newInstance()例項方法。即Java的反射機制。
c.呼叫物件的clone()方法。
d.運用反序列化手段,呼叫java.io.ObjectInputStream物件的readObject()方法
4.資料結構中的狸貓換太子。即一個單向連結串列(節點數大於等於4),不知道頭結點,只有一個指標指向第三個結點,要求刪除指向的第三個結點。
答:由於不知道頭結點,無法找到第二個結點的尾指標。所以根本無法真正刪除第三個結點,解決方法是將第四個結點的值賦給第三個結點,然後刪除第四個結點即可,正所謂狸貓換太子。(建議拿筆畫畫,便一目瞭然)