去哪兒網 校招面試
- 面試
- 關注:1.86W次
1.刪除一個ArrayList中的所有元素,要求現場手寫代碼。
答:
方法一:刪除前用一個變量flag紀錄list的長度,然後for循環刪除flag次第一個元素。關鍵代碼如下:
int flag = ();
for(inti = 0; i < flag ; i++){
ve(0);
}
因每次刪除都會導致size的重新變化,所以刪除前需紀錄。
方法二:將list壓入迭代器,循環刪除迭代器即可。關鍵代碼如下:
Iterator
itr = ator();
while(ext()){
();
ve();
}
壓入迭代器後,利用迭代器的`方法進行刪除。建設讀者自行嘗試一下,以體會其中道理。
中的垃圾回收機制。
答:Java提供的GC(垃圾收集)功能可以自動檢測對象是否超過作用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操作方法。GC採用有向圖的方式記錄和管理堆內存中的所有對象,當對象“不可達”時,GC自動回收該內存。
3.創建一個對象有幾種方法
答:
a.用new語句創建對象,這是最常用的創建對象的方式。
b.運用反射手段,調用s或者tructor類的newInstance()實例方法。即Java的反射機制。
c.調用對象的clone()方法。
d.運用反序列化手段,調用ctInputStream對象的readObject()方法
4.數據結構中的狸貓換太子。即一個單向鏈表(節點數大於等於4),不知道頭結點,只有一個指針指向第三個結點,要求刪除指向的第三個結點。
答:由於不知道頭結點,無法找到第二個結點的尾指針。所以根本無法真正刪除第三個結點,解決方法是將第四個結點的值賦給第三個結點,然後刪除第四個結點即可,正所謂狸貓換太子。(建議拿筆畫畫,便一目瞭然)
- 文章版權屬於文章作者所有,轉載請註明 https://xuewengu.com/flzc/mianshi/yygn7e.html