數據分析師面試最常見的十道面試題分享!

2020-12-14 NTCE教師資格證

以下是容大教育小編日常整理的數據分析師面試時經常遇到的十道數據分析面試題,下面讓我們一起看看數據分析師面試最常見的十道面試題:

1、海量日誌數據,提取出某日訪問百度次數最多的那個IP

首先是這一天,並且是訪問百度的日誌中的IP取出來,逐個寫入到一個大文件中。注意到IP是32位的,最多有個2^32個IP。同樣可以採用映射的方法,比如模1000,把整個大文件映射為1000個小文件,再找出每個小文中出現頻率最大的IP(可以採用hash_map進行頻率統計,然後再找出頻率最大的幾個)及相應的頻率。然後再在這1000個最大的IP中,找出那個頻率最大的IP,即為所求。

或者如下闡述:

算法思想:分而治之+Hash

1.IP位址最多有2^32=4G種取值情況,所以不能完全加載到內存中處理;

2.可以考慮採用「分而治之」的思想,按照IP位址的Hash(IP)24值,把海量IP日誌分別存儲到1024個小文件中。這樣,每個小文件最多包含4MB個IP位址;

3.對於每一個小文件,可以構建一個IP為key,出現次數為value的Hash map,同時記錄當前出現次數最多的那個IP位址;

4.可以得到1024個小文件中的出現次數最多的IP,再依據常規的排序算法得到總體上出現次數最多的IP;

2、搜尋引擎會通過日誌文件把用戶每次檢索使用的所有檢索串都記錄下來,每個查詢串的長度為1-255位元組

假設目前有一千萬個記錄(這些查詢串的重複度比較高,雖然總數是1千萬,但如果除去重複後,不超過3百萬個。一個查詢串的重複度越高,說明查詢它的用戶越多,也就是越熱門。),請你統計最熱門的10個查詢串,要求使用的內存不能超過1G。

典型的Top K算法,還是在這篇文章裡頭有所闡述,

文中,給出的最終算法是:

第一步、先對這批海量數據預處理,在O(N)的時間內用Hash表完成統計(之前寫成了排序,特此訂正。July、2011.04.27);

第二步、藉助堆這個數據結構,找出Top K,時間複雜度為N『logK。

即,藉助堆結構,我們可以在log量級的時間內查找和調整/移動。因此,維護一個K(該題目中是10)大小的小根堆,然後遍歷300萬的Query,分別和根元素進行對比所以,我們最終的時間複雜度是:O(N) + N』*O(logK),(N為1000萬,N』為300萬)。ok,更多,詳情,請參考原文。

或者:採用trie樹,關鍵字域存該查詢串出現的次數,沒有出現為0。最後用10個元素的最小推來對出現頻率進行排序。

3、有一個1G大小的一個文件,裡面每一行是一個詞,詞的大小不超過16位元組,內存限制大小是1M。返回頻數最高的100個詞

方案:順序讀文件中,對於每個詞x,取hash(x)P00,然後按照該值存到5000個小文件(記為x0,x1,…x4999)中。這樣每個文件大概是200k左右。

如果其中的有的文件超過了1M大小,還可以按照類似的方法繼續往下分,直到分解得到的小文件的大小都不超過1M。

對每個小文件,統計每個文件中出現的詞以及相應的頻率(可以採用trie樹/hash_map等),並取出出現頻率最大的100個詞(可以用含100個節點的最小堆),並把100個詞及相應的頻率存入文件,這樣又得到了5000個文件。下一步就是把這5000個文件進行歸併(類似與歸併排序)的過程了。

4、有10個文件,每個文件1G,每個文件的每一行存放的都是用戶的query,每個文件的query都可能重複。要求你按照query的頻度排序

還是典型的TOP K算法,解決方案如下:

方案1:

順序讀取10個文件,按照hash(query)的結果將query寫入到另外10個文件(記為)中。這樣新生成的文件每個的大小大約也1G(假設hash函數是隨機的)。

找一臺內存在2G左右的機器,依次對用hash_map(query, query_count)來統計每個query出現的次數。利用快速/堆/歸併排序按照出現次數進行排序。將排序好的query和對應的query_cout輸出到文件中。這樣得到了10個排好序的文件(記為)。

對這10個文件進行歸併排序(內排序與外排序相結合)。

方案2:

一般query的總量是有限的,只是重複的次數比較多而已,可能對於所有的query,一次性就可以加入到內存了。這樣,我們就可以採用trie樹/hash_map等直接來統計每個query出現的次數,然後按出現次數做快速/堆/歸併排序就可以了。

方案3:

與方案1類似,但在做完hash,分成多個文件後,可以交給多個文件來處理,採用分布式的架構來處理(比如MapReduce),最後再進行合併。

5、 給定a、b兩個文件,各存放50億個url,每個url各佔64位元組,內存限制是4G,讓你找出a、b文件共同的url?

方案1:可以估計每個文件安的大小為5G×64=320G,遠遠大於內存限制的4G。所以不可能將其完全加載到內存中處理。考慮採取分而治之的方法。

遍歷文件a,對每個url求取hash(url)00,然後根據所取得的值將url分別存儲到1000個小文件(記為a0,a1,…,a999)中。這樣每個小文件的大約為300M。

遍歷文件b,採取和a相同的方式將url分別存儲到1000小文件(記為b0,b1,…,b999)。這樣處理後,所有可能相同的url都在對應的小文件(a0vsb0,a1vsb1,…,a999vsb999)中,不對應的小文件不可能有相同的url。然後我們只要求出1000對小文件中相同的url即可。

求每對小文件中相同的url時,可以把其中一個小文件的url存儲到hash_set中。然後遍歷另一個小文件的每個url,看其是否在剛才構建的hash_set中,如果是,那麼就是共同的url,存到文件裡面就可以了。

方案2:如果允許有一定的錯誤率,可以使用Bloom filter,4G內存大概可以表示340億bit。將其中一個文件中的url使用Bloom filter映射為這340億bit,然後挨個讀取另外一個文件的url,檢查是否與Bloom filter,如果是,那麼該url應該是共同的url(注意會有一定的錯誤率)。

Bloom filter日後會在本BLOG內詳細闡述。

6、在2.5億個整數中找出不重複的整數,注,內存不足以容納這2.5億個整數

方案1:採用2-Bitmap(每個數分配2bit,00表示不存在,01表示出現一次,10表示多次,11無意義)進行,共需內存2^32 * 2 bit=1 GB內存,還可以接受。然後掃描這2.5億個整數,查看Bitmap中相對應位,如果是00變01,01變10,10保持不變。所描完事後,查看bitmap,把對應位是01的整數輸出即可。

方案2:也可採用與第1題類似的方法,進行劃分小文件的方法。然後在小文件中找出不重複的整數,並排序。然後再進行歸併,注意去除重複的元素。

7、騰訊面試題:給40億個不重複的unsigned int的整數,沒排過序的,然後再給一個數,如何快速判斷這個數是否在那40億個數當中?

與上第6題類似,我的第一反應時快速排序+二分查找。以下是其它更好的方法:

方案1:oo,申請512M的內存,一個bit位代表一個unsigned int值。讀入40億個數,設置相應的bit位,讀入要查詢的數,查看相應bit位是否為1,為1表示存在,為0表示不存在。

方案2:這個問題在《編程珠璣》裡有很好的描述,大家可以參考下面的思路,探討一下:

又因為2^32為40億多,所以給定一個數可能在,也可能不在其中;

這裡我們把40億個數中的每一個用32位的二進位來表示

假設這40億個數開始放在一個文件中。

然後將這40億個數分成兩類:

1.最高位為0

2.最高位為1

並將這兩類分別寫入到兩個文件中,其中一個文件中數的個數<=20億,而另一個>=20億(這相當於折半了);

=20億(這相當於折半了);

與要查找的數的最高位比較並接著進入相應的文件在查找

再然後把這個文件為又分成兩類:

1.次最高位為0

2.次最高位為1

並將這兩類分別寫入到兩個文件中,其中一個文件中數的個數<=10億,而另一個>=10億(這相當於折半了);

=10億(這相當於折半了);

與要查找的數的次最高位比較並接著進入相應的文件在查找。

…….

以此類推,就可以找到了,而且時間複雜度為O(logn),方案2完。

附:這裡,再簡單介紹下,位圖方法:

使用位圖法判斷整型數組是否存在重複

判斷集合中存在重複是常見編程任務之一,當集合中數據量比較大時我們通常希望少進行幾次掃描,這時雙重循環法就不可取了。

位圖法比較適合於這種情況,它的做法是按照集合中最大元素max創建一個長度為max+1的新數組,然後再次掃描原數組,遇到幾就給新數組的第幾位置上1,如遇到5就給新數組的第六個元素置1,這樣下次再遇到5想置位時發現新數組的第六個元素已經是1了,這說明這次的數據肯定和以前的數據存在著重複。這種給新數組初始化時置零其後置一的做法類似於位圖的處理方法故稱位圖法。它的運算次數最壞的情況為2N。如果已知數組的最大值即能事先給新數組定長的話效率還能提高一倍。

歡迎,有更好的思路,或方法,共同交流。

8、怎麼在海量數據中找出重複次數最多的一個?

方案:先做hash,然後求模映射為小文件,求出每個小文件中重複次數最多的一個,並記錄重複次數。然後找出上一步求出的數據中重複次數最多的一個就是所求(具體參考前面的題)。

9、上千萬或上億數據(有重複),統計其中出現次數最多的前N個數據

方案:上千萬或上億的數據,現在的機器的內存應該能存下。所以考慮採用hash_map/搜索二叉樹/紅黑樹等來進行統計次數。然後就是取出前N個出現次數最多的數據了,可以用第2題提到的堆機制完成。

10、一個文本文件,大約有一萬行,每行一個詞,要求統計出其中最頻繁出現的前10個詞,請給出思想,給出時間複雜度分析

方案1:這題是考慮時間效率。用trie樹統計每個詞出現的次數,時間複雜度是O(nle)(le表示單詞的平準長度)。然後是找出出現最頻繁的前10個詞,可以用堆來實現,前面的題中已經講到了,時間複雜度是O(nlg10)。所以總的時間複雜度,是O(nle)與O(nlg10)中較大的哪一個。

附、100w個數中找出最大的100個數。

方案2:在前面的題中,我們已經提到了,用一個含100個元素的最小堆完成。複雜度為O(100w*lg100)。

方案3:採用快速排序的思想,每次分割之後只考慮比軸大的一部分,知道比軸大的一部分在比100多的時候,採用傳統排序算法排序,取前100個。複雜度為O(100w*100)。

方案4:採用局部淘汰法。選取前100個元素,並排序,記為序列L。然後一次掃描剩餘的元素x,與排好序的100個元素中最小的元素比,如果比這個最小的要大,那麼把這個最小的元素刪除,並把x利用插入排序的思想,插入到序列L中。依次循環,知道掃描了所有的元素。複雜度為O(100w*100)。

以上就是容大教育數據分析師培訓在線學習小編給大家分享的數據分析師面試最常見的十道面試題分享,希望對小夥伴們有所幫助,容大教育IT培訓機構,能夠為你提供良好的技術學習,能夠更好地了解每個學習者的需求,根據每個學習者特定的需求為其配置最合適的資產組合,無疑更加符合學習者的需求。

相關焦點

  • Top30數據分析師常見面試題(附答案)!
    快來看看,以下30道數據分析相關面試題,你會多少?1、分析數據還要寫java代碼是不是效率有點低?2、成為一名數據分析師需要具備哪些技能?10、用於處理分布式計算環境中應用程式大數據集的Apache框架有哪些?Hadoop和MapReduce是由Apache開發的用於處理分布式計算環境中應用程式大數據集的編程框架。11、騰訊面試題:給40億個不重複的unsigned int的整數,沒排過序的,然後再給一個數,如何快速判斷這個數是否在40億個數當中?
  • 面試大數據分析師,你需要掌握的基礎技術棧.
    本文主要面向的讀者是在校計算機/軟體相關專業想踏足大數據領域尋找相關實習機會的學生,以及剛工作1-2年想轉大數據方向的同學。
  • 十道騰訊軟體開發工程師面試題
    經過筆試,一個禮拜後於4月9號夜收到騰訊一面通知(4月10號),今天特意分享一下《十道騰訊軟體開發工程師面試題》希望大家能夠受用。1、介紹一下你自己。(嚴格來說這個不能算一個問題,每家公司基本都要問)一、OSI模型有幾層?二、說說C++的多態?為什麼使用虛函數比非虛函數耗費的時間更多?
  • 十道Google面試題,你能搞定幾道?
    Google 面試題是越來越進化和有意思了,這個整理了十道,大家有時間試一試。接下來,我們會對每一道題,給出一個可能的解決方案。
  • 好程式設計師Python教程分享常見的Python面試題
    好程式設計師Python教程分享常見的Python面試題,程式設計師面試難免會需要進行筆試,筆試是考驗程式設計師基礎功底的重要環節,根據很多小夥伴的面試反饋,今天總結分享了一些常見的Python面試題,想要看Python面試是不是可以順利通過,這些常見的Python面試題你應該看看。
  • Java 最常見的 200+ 面試題:面試必備
    聊回面試題這件事,這份面試清單原本是我們公司內部使用的,可到後來有很多朋友在微信上聯繫到我,讓我幫他們找一些面試方面的資料,而且這些關係也不太好拒絕,一呢,是因為這些找我,要面試題的人,不是我的好朋友的弟弟妹妹,就是我的弟弟妹妹們;二呢,我也不能馬馬虎虎的對付,受人之事忠人之命,我也不能辜負這份信任。
  • 數據分析師成功面試進入大廠的經歷分享
    最開心的是在這種情況依然堅持了初心,選擇冒險去拼一把喜歡的公司和職位。過程很漫長,崩潰很經常,結果很美滿,希望我的經歷可以小小地幫助到你。But,由於疫情的影響,這段時間真的沒有那麼多坑可以選擇,所以我面試時其實是來者不拒的,從偏向AB testing的,到偏向Algorithm的,到SWE、MLE只要有機會我都上。雖然多準備了一些東西(比如刷題可能要Python一遍C++一遍),但這樣可以幫助保持一個好的面試狀態,並且磨鍊BQ的面試經驗。根據面試流程說一些我認為在準備面試時比較重要的地方。
  • 面試經驗分享之數據結構、算法題
    前言面試 IT 企業的研發崗位,數據結構和算法顯然是必考的項目。俺只學過普通的數據結構課程,沒讀過 STL,也沒有過 ACM 的訓練和比賽經歷,在一開始面對這樣類型題目的時候,心裡還是十分忐忑的。大大小小几十場面試下來,自己在這方面總算有了一定的心得積累,在此拋磚引玉, 以饗讀者。
  • 常見SQL面試題知識點+使用技巧
    ,因此與數據科學相關的工作(例如數據分析師、數據科學家和數據工程師)在面試時總會問到關於 SQL 的問題。SQL面試問題旨在評估應聘者的技術和解決問題的能力。因此對於應聘者來說,關鍵在於不僅要根據樣本數據編寫出正確的查詢,而且還要像對待現實數據集一樣考慮各種場景和邊緣情況。在這篇文章中,我將介紹 SQL 面試問題中常見的模式,並提供一些在 SQL 查詢中巧妙處理它們的技巧。
  • 常見結構化面試經典100題及答案分享
    【導讀】華圖寧夏教師招聘考試網同步華圖教育發布:常見結構化面試經典100題及答案分享,詳細信息請閱讀下文!  【結構化面試經典題目】 學生李某比較調皮,經常惹是生非。對他的教育,家長也不大配合。作為班主任,你準備怎麼辦?
  • 分析了300+近期Facebook數據科學家面試實例,我們總結了臉家5類最常見面試題
    Facebook的數據科學家職位是科技界最令人嚮往的職位之一。僅僅擁有「 Facebook的數據科學家」這個頭銜,就可以使你受到同行業其他人的額外尊重。因此,每個人都清楚,如果你有機會能面試此職位,最好充分利用並花時間來準備。對於許多人來說,他們會在網上查找和回答他們認為在面試中會被問到的問題。
  • 每周 · 面試題 | 騰訊數據分析面試題分享
    今天給各位分享兩道數據分析試題,這是騰訊數據分析面試官在面試時考察候選人喜歡出的題,屬於硬性技能考察題目,特別好用。如果你想投鵝廠的數據分析師崗位,強烈建議看看。刷題做實戰題目是王道,刷一道頂得上在網上刷百道。面試都有固定的流程,通常是自我介紹,硬性技能考察,項目經歷追問和Q&A環節。
  • 程式設計師面試最常見問題TOP 48
    近來正值秋招季節,很多編程面試都要求手寫數據結構手推機器學習算法。各位同學為了面試也會刷各種編程題,其中數據結構與排序搜索算法又是最為基礎的內容。在本文中,我們為各位讀者準備了 48 道基礎面試題,它可以幫助我們更深地理解數據結構。本文所有面試題都提供了 Java 解決方案,並介紹了比較流行的 GitHub 面試題項目。
  • 2019年java常見面試題
    本人今年2月份來到上海來尋求工作,已經面試了10多家了,在這裡分享一下我的心得和常問到的面試題。走馬觀花式的學習;6、當遇到一些設計類的問題時,一般面試官考察的是你的思路,對問題的應變能力,對於事物觀察的點;技術面試題:
  • 快手大數據崗位招聘面試題分享
    快手面試題學長1快手:視頻面試1)一面:50分鐘(1)介紹項目(2)Flink為什麼用aggregate()不用process()(3)自定義UDF,UDTF實現步驟,有哪些方法?(4)Flume丟不丟數據?PUT,TAKE事務(5)SQL題:1. id department salary manager_id 找出員工薪水比領導薪水高的人員(單表join) 2. student course score 找出哪些學生課程比平均課程成績高?
  • 千鋒分享:軟體測試工程師常見面試題
    我們面對一場未知的軟體測試工程師面試能夠做的除了做好本質工作,還有就是一些基本的面試題也是需要了解的。正所謂,機會永遠是留給有準備的人的。如果你好好的面對面試,那你肯定收穫的會比沒有準備的多得多。下面是千鋒軟體測試培訓講師總結的一套關於軟體測試的面試題(節選),為你的求職增加一些成功的機率。01.
  • 2020Python常見面試題及答案-開課吧
    Python面試題【Python面試題】-iterable(可迭代對象)和iterator(迭代器)的區別?【Python面試題】怎樣聲明多個變量並賦值?addict 是第三方庫,需要先安裝 pip install addict from addict import Dictaddicted = Dict() addicted.a.b.c.d.e = "value"【Python面試題】如何提高python的運行效率?
  • 金秋十月跳槽季 ——為你解答大數據&數據分析行業10個常見面試題
    想進入或轉行到大數據或數據分析領域的朋友們,戳進來好好看看,2018年大數據&數據分析行業的面試機密吧,我親自為你解答!,CDA數據分析研究院分享了一份2018年10個常見大數據&數據分析面試題合集,既有基本的業務分析面試題,也有高階數據挖掘算法試題,更有分析工具應用試題來指導你準備面試,試題均附有答案。
  • Java最常見600+面試題全解析:面試必備
    最近在刷面試題,所以需要看大量的Java相關的面試題,從大量的題目中總結了很多的知識,也分享給需要的同學。尚學堂與500+企業合作,建立IT行業最全的企業面試題庫。每周8~20家企業上門招聘,輕鬆掌握企業最新面試題集。本題集幾乎都是【必考題】,都能看懂的話,保你面試十拿九穩。
  • 【DA求職分享】IBM面試官教您如何面對春招面試!(上)附2021年春招新題
    作為商業分析師最重要的硬核技能就是對數據的分析能力。SQL就是篩選數據的重點,在工作面試的每一個階段都會被考到。招聘HR打電話可能問,或者用google hangout給面試者一道題,看你怎麼分析數據。面試過程中Excel也是一個考察重點(Excel VBA),但對於R/ Python的考察較少,(可能有一些DS的崗位需要,但是DA一般很少。