在面試間里等候時,感覺這可真暖和呀,我那冰冷的出租屋還得蓋兩層被子才能睡著,正要把外套脫下來,我突然聽到了門外的腳步聲,隨即門被打開,一位眉毛彎彎嘴唇紅紅的小姐姐走了進來,甜甜的香水味立刻鉆進了我的鼻孔,
面試官小姐姐微笑地說:”您好,我是今天的面試官,那么我們就開始吧!“
我收起直勾勾的眼睛連忙說:“好的,好的,”
面試官小姐姐說:“Redis中基本的資料型別有哪些?”
我立刻回答:“Redis的基本資料型別有:字串(string)、串列(list)、哈希(hash)、集合(set)、有序集合(zset),”
面試官小姐姐說:“串列型別的內部實作方式是什么?”
我想了想回答到:
串列的內部編碼有兩種: 壓縮串列(ziplist)和鏈表(linkedlist),壓縮串列(ziplist)是由一個連續記憶體組成的順序型資料結構,一個壓縮串列可以包含任意多個節點,每個節點上可以保存一個位元組陣列或整數值,鏈表(linkedlist)是由多個結點通過prev和next指標組成的雙向鏈表,當串列元素個數比較少并且每個元素占用空間比較小的時候,使用壓縮串列,當串列元素個數比較多或者某個元素占用空間比較大的時候,使用鏈表,
面試官小姐姐說:“您說的是舊版本的內部編碼,3.2版本之后的實作是什么樣子的?”
我還沉浸在上一個問題的沾沾自喜中,頓時表情凝固了,手心開始冒出冷汗,“這個,,沒有太深入了解”,我支支吾吾的說到,
面試官小姐姐說:“回去等訊息吧,”
這句話說的干凈利落,我知道已經沒有“然后”了,但是不氣餒的我問:“可不可以稍微提示一下?”
面試官小姐姐微笑地說:“當然可以,在3.2版本開始,使用了快速串列(quicklist)做為串列型別的內部編碼,快速串列(quicklist)是以壓縮串列(ziplist)為節點的鏈表(linkedlist),將鏈表按段切分,每一段使用壓縮串列進行記憶體的連續存盤,多個壓縮串列通過prev和next指標組成的雙向鏈表,它結合了壓縮串列和鏈表的優勢,進一步壓縮了記憶體的使用量,進一步提高了效率,”
在回家的路上,我反思了一下:不能死讀書,還需要關注技術的不斷發展和進化,雖然這次面試沒有結果,但也不是沒有識訓的,
參考文獻:
《Redis設計與實作》
《Redis開發與運維》
《Redis 深度歷險:核心原理與應用實踐》
最后,謝謝你這么帥,還給我點贊和關注,
微信公眾號:萬貓學社
微信掃描二維碼
關注后回復「電子書」
獲取12本Java必讀技術書籍
作者:萬貓學社
出處:http://www.cnblogs.com/heihaozi/
著作權宣告:本文遵循 CC 4.0 BY-NC-SA 著作權協議,轉載請附上原文出處鏈接和本宣告,
微信掃描二維碼,關注萬貓學社,回復「電子書」,免費獲取12本Java必讀技術書籍,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/440981.html
標籤:Java
