一道面試題看 HashMap 的儲存方式

2021-06-22 02:16:46 字數 551 閱讀 1454

我們公司招人喜歡問演算法題和一些基礎知識。今天我們乙個面試官在面試候選人之前在辦公室對我們說他準備問乙個這樣的問題:

在 hashmap 中存放的一系列鍵值對,其中鍵為某個我們自定義的型別。放入 hashmap 後,我們在外部把某乙個 key 的屬性進行更改,然後我們再用這個 key 從 hashmap 裡取出元素,這時候 hashmap 會返回什麼?

我們辦公室幾個人答案都不一致,有的說返回null,有的說能正常返回value。但不論答案是什麼都沒有確鑿的理由。我覺得這個問題挺有意思的,就寫了**測試。結果是返回null。需要說明的是我們自定義的類重寫了 hashcode 方法。我想這個結果還是有點意外的,因為我們知道 hashmap 存放的是引用型別,我們在外面把 key 更新了,那也就是說 hashmap 裡面的 key 也更新了,也就是這個 key 的 hashcode 返回值也會發生變化。這個時候 key 的 hashcode 和 hashmap 對於元素的 hashcode 肯定一樣,equals也肯定返回true,因為本來就是同乙個物件,那為什麼不能返回正確的值呢?

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...

一道面試題

前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...

一道面試題

如果n為偶數,則將它除以2,如果n為奇數,則將它加1或者減1。問對於乙個給定的n,怎樣才能用最少的步驟將它變到1。例如 n 61 n 60 n 2 30 n 2 15 n 16 n 2 8 n 2 4 n 2 2 n 2 1 public class myclass public static vo...