中國第一TreeMap面試官,誕生了

更多精彩文章。java

《微服務不是所有,只是特定領域的子集》面試

《「分庫分表" ?選型和流程要慎重,不然會失控》redis

這麼多監控組件,總有一款適合你vim

《Linux生產環境上,最經常使用的一套「vim「技巧》api

《使用Netty,咱們到底在開發些什麼?》數組

Linux五件套之類的。安全

《Linux之《荒島餘生》(一)準備篇》微信

《Linux之《荒島餘生》(二)CPU篇》網絡

《Linux之《荒島餘生》(三)內存篇》數據結構

《Linux之《荒島餘生》(四)I/O篇》

《Linux之《荒島餘生》(五)網絡篇》

哈哈,生活須要樂子,有趣學習麼!扯蛋文,來源於現實,若有雷同,純屬故意。更多關注《小姐姐味道》微信公衆號:xjjdog,不僅是扯蛋。

條條大路通羅馬,羅馬就是TreeMap。

我從集合溜達過來

第一面試官:java的集合類都有哪些?

答:回答list,set,map巴拉巴拉。

第一面試官:HashMap的內部結構是什麼樣的?

答:回答數組鏈表紅黑樹巴拉巴拉。

第一面試官:那HashMap是能夠排序的麼?

答:好行不能哎,由於它都叫hash了。

第一面試官:那java中可排序的Map有哪些?

答:不知道。

第一面試官:我瞭解你了,你能夠回去了。

我從redis的芬芳裏奔出

第一面試官:redis用過麼?

答:sure

第一面試官:redis都有哪些數據結構?

答:5種基本的,四種不經常使用的巴拉巴拉。

第一面試官:等等,你說的zset是什麼?

答:有序的set,能夠作排行榜用什麼的。

第一面試官:它底層什麼結構?

答:咱們只說最多見的,就是個跳錶。

第一面試官:java中相似的Set有沒有?

答:不太清楚呢。

第一面試官:我瞭解你了,你能夠回去了。

只想談Map

第一面試官:你用LinkedHashMap幹什麼用?

答:我用它作過簡單的LRU。

第一面試官:它能根據Key排序麼?

答:能夠的吧,都作LRU了。

第一面試官:你沒搞明白個人意思,我是說能夠經過指定的規則排序麼?

答:好像不能夠哎。

第一面試官:那有沒有可排序的Map?

答:我先把全部key放list裏,而後sort這個list,而後遍歷list輸出。

第一面試官:我是問有沒有現成的api。

答:不知道。

第一面試官:我瞭解你了,你能夠回去了。

我從配置文件裏走來

第一面試官:瞭解properties麼?

答:瞭解,它繼承了Hashtable,是線程安全的。

第一面試官:我問的是配置文件,你知道怎麼翻譯成yml麼。

答:遍歷解析,而後存在多層的hashmap中。

第一面試官:有沒有更優雅的方式?好比存在樹中。

答:我不太明白,你是指二叉樹仍是紅黑樹?

第一面試官:你好像剛纔談到紅黑樹。java中有沒有實現?

答:hashmap鏈表長度超過8好像就是紅黑樹。

第一面試官:還有沒有其餘的地方?

答:不知道。

第一面試官:我瞭解你了,你能夠回去了。

我從多線程走來

第一面試官:知道線程安全的map麼?

答:Hashtable吧,不過都推薦用ConcurrentHashMap。

第一面試官:線程安全的可排序的Map知道麼?

答:ConcurrentSkipListMap吧。

第一面試官:額,還有其餘方式麼?

答:好像沒有了吧。

第一面試官:你不會使用Collections.synchronizedMap改造TreeMap啊

答:...

第一面試官:我瞭解你了,你能夠回去了。

我從分佈式存儲強行過來

第一面試官:怎麼快速判斷一個key再分佈式存儲中存在?

答:Bloom過濾器?

第一面試官:很不錯,那怎麼快速排序這些key呢?

答:使用索引最快吧。好比b+tree等。

第一面試官:要是我是coordinate節點,沒有具體的存儲怎麼辦?

答:那就再內存裏排序。

第一面試官:java中有沒有能夠排序的這種集合?

答:ArrayList這種都是能夠的啊。

第一面試官:拿到你還要把key數據再取一次麼?不能放在Map裏麼?有沒有可排序的Map?有現成的就方便的多啊。

答:我明白你的意思了。沒有。

第一面試官:我瞭解你了,你能夠回去了。

我就是想問

第一面試官:TreeMap瞭解麼?

答:瞭解。樹形的Map。

第一面試官:底層什麼結構?

答:樹和哈希。

第一面試官:什麼樹,什麼Hash啊。講的明白點。

答:TreeMap中的Tree,HashMap中的Hash啊。

第一面試官:你到底瞭解TreeMap麼?

答:瞭解啊。就是樹形的Map。

第一面試官:若是你沒有其餘問題,那你稍等一下。

怕怕的

第一面試官:TreeMap用在哪些場景?

答:這個我很清楚,不過我負責設計了公司的大部分技術架構,好久沒有動代碼了。

第一面試官:那你簡單說下最基本的集合有哪些吧。

答:知道,好比TreeMap這種我就常常用。有幾個同事使用的時候,掉進了幾個陷阱,仍是我幫忙指出的。你有沒有其餘項目管理方面的問題?

第一面試官:等等等等,我對你說的陷阱問題很是的好奇,能簡單介紹一下麼?

答:這個也很是容易理解,一些不適合TreeMap的使用場景,是要避免去使用的。針對這些場景,咱們有idea的代碼插件,還有solar這種工具進行代碼掃描,發現也是很簡單的。對了,您熟悉vscode麼,我能夠給你講一下插件開發。

第一面試官:...我只想知道你到底瞭解TreeMap不。

答:我剛纔不是說了麼,TreeMap是基本集合的一種,有許多常見的陷阱。不過能夠在項目管理中規避掉,這就是方法論的合理應用。

第一面試官:若是你沒有其餘問題,那你稍等一下。

你很幸運

第一面試官:知道java中可排序的Map有哪些麼?

答:TreeMap。從內部結構來看,TreeMap 本質上就是一棵「紅黑樹」,而 TreeMap 的每一個 Entry 就是該紅黑樹的一個節點。

第一面試官:你明天能夠來上班了。

End

我就是想知道TreeMap是紅黑樹,這麼簡單的答案還要我教你麼?我就是中國第一TreeMap面試官,這就是我過去的故事。

相關文章
相關標籤/搜索