成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

想偽裝成資深程序員?知道這三個數據結構就夠了

新聞 前端
程序員面試展示什么最重要?當時是你淵博的計算機學識,以及聰明的小腦瓜。如果你基礎不行,三天前剛準備轉碼,那就更得準備幾個的小把戲,不用打腫臉也能充一回胖子。

[[260358]]

春招來襲啦!又要面試啦!

程序員面試展示什么最重要?當時是你淵博的計算機學識,以及聰明的小腦瓜。

如果你學富五車,上知深度學習, 下知財務會計,那短短數小時也絕不夠你表演。所以,你一定得知曉面試官的套路,隨口丟出幾個應景的“冷知識”賣個乖巧。

如果你基礎不行,三天前剛準備轉碼,那就更得準備幾個的小把戲,不用打腫臉也能充一回胖子。

基于這兩個需求,今天文摘菌就來給大家介紹三個討巧的數據結構。面試當中一提,那可是相當撐場面。

這三個數據結構就是。登登登等…

1. 布隆過濾器(bloom filter)

2. 前綴樹(prefix trie)

3. 環形緩沖(ring buffer)

先來說一下,為什么挑了這三個數據結構。

首先我覺得,你提到的數據結構要稍微冷門一些,這樣別人就會認為你了解很多不同類型的數據結構。但它不能太冷門,以免你的面試官要求你真正解釋實現細節或原理,那時你就game over了。***是你提到的數據結構有點冷門,但你的面試官聽說過,對它有印象。

面試官都希望自己什么都知道,他們聽說過這種數據結構但又不太了解,當你向他們介紹時,他們就會覺得你懂得特別多。

除此之外,這些數據結構還應該具有實際用例,以便在技術面試的時候,你能有機會展開介紹。它雖然稍微有點冷門但也不能太low,你如果只知道一些菜雞水平的數據結構(比如雙向鏈表),你的面試八成就涼了。

所以,這三個數據結構就被***選中啦!

布隆過濾器

布隆過濾器是集合的概率版本。檢測集合是否包含某元素的時間復雜度為O(1)、空間復雜度為O(N)。Bloom過濾器也可以檢測出集合是否可能包含該元素,它的時間復雜度為O(1),而空間復雜度只需要O(1)!

誰會真正使用布隆過濾器?

Chrome需要在不犧牲速度或空間的情況下保護你免受訪問垃圾郵件網站。

想象一下,如果每次你點擊一個鏈接,Chrome都必須進行網絡通話來檢查它龐大的垃圾郵件URL數據庫,然后才允許你訪問這個頁面,這會不會讓你等瘋掉。此外,設想一下,如果Chrome改善延遲的解決方案是在本地存儲整個垃圾郵件URL列表,這根本就是不可行的!

所以,chrome在本地存儲了一個潛在垃圾郵件URL的布隆過濾器,這既節省時間又節省空間,可以快速檢查給定的URL是否為垃圾郵件。對于普通的URL,布隆過濾器對“非垃圾郵件”的響應就足夠判定了。如果一個URL被標記為“可能是垃圾郵件”,那么Google可以在跳轉之前檢查它真實數據庫。事實證明,當你愿意犧牲絕對時,你可以做出偉大的事情!

布隆過濾器的原理

布隆過濾器的維基百科頁用大量的術語描述了實現細節,所以在這里我會用簡單的描述一下實現過程。如果你想要更精確的細節,你應該去看看維基百科。我會略過很多步驟,但我會讓你有一個大致了解。

如果你想在Bloom過濾器中插入一個元素,首先假設有N個不同的確定性哈希函數。當同一個元素輸入不同哈希函數時,會得到不同的值(沖突是可以有的)。

使用每個哈希函數的輸出作為數組的索引[注釋1,注釋2],并對應每個索引i將數組[i]設置為true。插入元素就完成了!插入元素的時間復雜度是O(1),因為對每個插入元素所做的唯一工作是運行恒定數量的哈希函數,并設置恒定數量的數組索引。

那該如何檢查布隆過濾器是否包含該元素? 再次運行所有相同的哈希函數!

哈希函數是確定性的,因此相同的輸入應返回相同的輸出。所以相對應每個索引,檢查布隆過濾器的數組是否在該索引處設置為true即可。如果哈希函數輸出的數組的每個單元都為真,那么可以很高的概率說這個元素已經插入到了布隆過濾器中。這一方法總是存在誤報的可能性。不過,布隆過濾器的一大特色是永遠不會出現漏報。

那么,你需要多少個哈希函數,又需要多大的數組呢?這你就得好好算一番了。維基百科對它們的解釋更詳細,你值得一讀。

注釋1:如何使用哈希函數的輸出作為索引:設哈希函數輸出整數值M,取長度N。N%M(N mod M)得到一個值Q,即0≤Q

注釋2:實際上,你應該使用位數組而不是普通數組。數組的每個元素至少需要1個字節,而你只需要為“數組”的每個元素存儲true / false。因此,你可以通過將其存儲為位數組來節省空間,這是這個數據結構的重點。如果你想要聽起來很聰明,那么位數組(也就是位向量)也值得你在面試時提出。嗯,真正的面試專家建議總是在腳注中。

注釋3:嚴格來說,如果你的所有哈希函數都在O(1)時間內運行,那么插入的復雜度才是O(1)。

前綴樹(prefix trie)

前綴樹是一種數據結構,允許你通過其前綴快速查找字符串,還可以查找有公共前綴的字符串。

我對介紹這一數據結構的***條建議是,將它稱為“前綴樹”,而不僅僅是“樹”。這樣,你就讓面試官知道你是那種了解與前綴和后綴相關算法的人,并且你也希望對你的fancy數據結構進行準確描述。后綴樹也是一個非常有趣的話題,但實現細節十分殘暴。這就是為什么我只是談論前綴樹,并且假裝了解后綴樹。

誰會真的用前綴樹?

基因組學研究人員!

事實證明,現代基因組研究在很大程度上依賴于字符串算法和數據結構,因為你試圖從組成基因組序列的數百萬個核苷酸中探索奧秘。對于基因組數據,你經常需要對齊序列,找到差異或找到重復的模式。如果你想了解更多相關信息,可以先閱讀生物信息學讀物,然后參與“DNA測序算法”或“生物信息學算法”等課程。

如果你想要閱讀一些真正有意思的讀物,我強烈建議你讀一讀藥物基因組學。隨著基因組測序和字符串算法的進步,我們實際上可以預測使用個體的基因組,來確定它們是否具有對藥物正確反應的正確基因。例如,如果他們的基因組缺少用于產生處理某種藥物的酶的基因,那么藥物可能會對他們產生副作用。如果我們知道什么基因是重要的,我們可以給他們一種不同的藥物!

我承認,前綴樹和基因組學之間的聯系不太緊密。其實前綴樹的最直接用法就是用來查字典啦!但光這么講不是忒無聊了點么。

前綴樹的原理

想象一下,你有一棵樹,每個節點都有一個包含26個子節點的數組,每個子節點對應一個英文字母。(如果要包含其他字符,可以將26更改為不同的值。)要在你的樹中表示單詞,你將從根節點開始,沿著路徑向下走,并在每個節點添加一個字母。

例如(圖片來源維基百科),對于“tea”這個詞,你從根開始,被引導到t節點,然后是e,***是a。因此,搜索單詞需要O(N)的時間(其中N是單詞的長度),如果單詞的前綴不存在,則可以提前結束。如果我查詢“zzzzzzzz”,樹可以在“zz”之后結束查詢。

環形緩沖區(ring buffer)

環形緩沖區是使用普通數組的一種非常好的方式,它主要被用于處理數據流。

誰會真的使用環形緩沖區?

說不定Netflix會用?

我用google搜索“netflix ring buffer”,發現了他們發布了一些開源環緩沖區代碼。但問題是,公司真的會用他們已經開源的代碼嘛?

環形緩沖區的原理

好啦好啦。真的還有人在讀這篇文章嘛。

如果你讀到了這兒,說明你基礎一定還不錯,那就直接去維基百科瞅一眼這個數據結構吧,比前兩個簡單多了!

總結一下,今天文摘菌介紹了三個重要的數據結構:布隆過濾器(bloom filter),前綴樹(prefix trie),環形緩沖(ring buffer)。

想當一個聰明程序員,這些結構你值得擁有!

【本文是51CTO專欄機構大數據文摘的原創譯文,微信公眾號“大數據文摘( id: BigDataDigest)”】

     大數據文摘二維碼

戳這里,看該作者更多好文

責任編輯:張燕妮 來源: 51CTO專欄
相關推薦

2022-01-06 07:53:39

惡意軟件惡意程序網絡攻擊

2018-04-27 14:25:27

程序員專業展現

2013-08-20 09:33:59

程序員

2021-04-30 07:49:58

FluBot惡意軟件木馬

2019-01-07 08:07:13

2024-09-03 13:24:12

2013-09-09 11:37:19

卡巴斯基木馬QVOD

2023-08-30 07:19:49

2023-11-28 09:03:50

架構Instagram

2017-01-06 10:07:39

Linuxwindowsatime

2011-12-20 10:41:36

程序員

2020-04-02 15:37:58

數據結構存儲

2020-03-04 11:10:14

數據結構程序員編譯器

2013-12-12 11:08:24

惡意軟件IIS服務器微軟

2020-02-19 09:28:24

刪除Windows 10廣告

2009-02-13 09:53:10

2022-09-01 10:28:10

惡意軟件惡意應用挖礦

2010-10-26 14:41:18

2023-11-15 16:42:52

2011-08-30 10:46:42

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.99热| 中文字幕av网 | 国产一区二区黑人欧美xxxx | 99精品电影 | 欧洲一级毛片 | 国产午夜精品一区二区 | 日日天天 | 羞羞视频在线观看免费观看 | 精品视频在线免费观看 | 久久精品一 | 国产精品射 | 二区视频| 天天澡天天狠天天天做 | 欧美视频xxx | 99精品国产一区二区三区 | 亚洲欧美一区二区三区国产精品 | 精品日本久久久久久久久久 | 9久久婷婷国产综合精品性色 | 欧美精品一区在线发布 | a级大片免费观看 | 在线中文字幕第一页 | 欧美日韩一区二区在线播放 | 国产精品高潮呻吟久久久久 | 成人精品区 | 51ⅴ精品国产91久久久久久 | 在线看成人av | 日韩精品视频一区二区三区 | 国产区高清 | 国产一级片免费在线观看 | 国产成人在线一区二区 | 精品乱码一区二区 | 精品国产欧美一区二区三区不卡 | 91视视频在线观看入口直接观看 | 国产精品影视在线观看 | 久久久久久亚洲精品 | 日批免费在线观看 | 成人福利视频 | 久久精品久久综合 | 久久高清免费视频 | 超碰成人免费观看 | 国产免费观看一级国产 |