導航:首頁 > 數據分析 > 面試數據處理該怎麼處理

面試數據處理該怎麼處理

發布時間:2022-12-30 05:39:55

❶ Redis 面試寶典之 Redis 如何處理已經過期的數據

本文講的是 Redis 的鍵值過期之後的 數據處理 ,講的是正常情況下的 數據清理 ,但面試者常常會把兩個概念搞混,以至於和期望的工作失之交臂。我們本文的職責之一就是幫讀者朋友搞清楚二者的區別,相信看完本文你就會對二者的概念有一個本質上的認識。

我們本文的面試題是,Redis 如何處理已過期的數據?

在 Redis 中維護了一個過期字典,會將所有已經設置了過期時間的鍵值全部存儲到此字典中,例如我們使用設置過期時間的命令時,命令如下:

此命令表示 5s 之後鍵值為 mykey:java 的數據將會過期,其中 ex 是 expire 的縮寫,也就是過期、到期的意思。

過期時間除了上面的那種字元類型的直接設置之外,還可以使用 expire key seconds 的方式直接設置,示例如下:

獲取鍵值的執行流程是,當有鍵值的訪問請求時 Redis 會先判斷此鍵值是否在過期字典中,如果沒有表示鍵值沒有設置過期時間(永不過期),然後就可以正常返回鍵值數據了;如果此鍵值在過期字典中則會判斷當前時間是否小於過期時間,如果小於則說明此鍵值沒有過期可以正常返回數據,反之則表示數據已過期,會刪除此鍵值並且返回給客戶端 nil ,執行流程如下圖所示:

這是鍵值數據的方法流程,同時也是過期鍵值的判斷和刪除的流程。

本文的面試題考察的是你對 Redis 的過期刪除策略的掌握,在 Redis 中為了平衡空間佔用和 Redis 的執行效率,採用了兩種刪除策略,上面的回答不完全對,因為他只回答出了一種過期鍵的刪除策略,和此知識點相關的面試題還有以下這些:

常見的過期策略,有以下三種:

❷ 銀行(數據處理中心面試要點)

回答如下:
銀行的數據處理中心是銀行的一個部門(屬於市分行中的一個部門),主要工作是:
1、對下屬各支行、網點的日終(每日營業終了)上傳數據進行匯總(電腦匯總);
2、在對數據的匯總過程中,發現差錯或疑點,要進行詢問並處理;
3、對銀行卡方面,監測本行所發各類卡(包括信用卡、儲蓄卡)的即時交易情況,發現異常情況(如大額轉入、轉出或透支)要進行跟蹤或電話詢問,以確保客戶資金安全及銀行資金不受損失;
4、月終、季度結息、年終結算後,對各種數據進行篩選、排類,按各科目分別製成表格,並形成對各類數據進行表述的文字報告,以供決策層分析及掌握階段性本行的經營狀況。
對於一名在銀行數據處理中心工作的員工,應該了解掌握本行的主要業務流程、會計知識、櫃員的電腦操作,打字快是一個很好的基礎,但對數字小鍵盤的操作也要熟練(達到盲打)。
通過以上介紹,你應該可以感覺到面試時會問些什麼,但上面講的主要是業務方面的東西,我想面試時還會問一些大眾化的問題,如先叫你做一個自我介紹(介紹時要保持一種謙虛的心態),然後可能會問幾個有關銀行方面的專業問題(知道的就答,不知道的要面露微笑,說不是很清楚),也有可能會問到你的工資期望(你可以說沒有什麼要求,因為銀行員工的工資都是有規定,不會亂來的,而且不會很低)等等。
總的來說,在面試時,一是不要緊張,二是始終保持一種謙虛又自信的心態,三是要注意著裝整潔,頭發、鬍子、指甲要理、刮、修一下。
祝你面試通過。

❸ 去面試數據處理方面的工作,問我如何利用已有的數據資源,不知道怎麼回答,

城市數據資源的開發利用包括政府數據資源的開發利用、企業數據資源的開發利用和公眾數據資源的開發利用3個方面。政府數據資源開發利用要以提高辦事效率和促進科學決策為原則,促進政務公開和行業監管,為經濟發展和社會進步提供豐富、優質的數據產品和服務。要初步建立政府數據資源管理體制和管理機構,理順政府數據資源採集、交換、共享、分析處理機制:企業數據資源的開發利用主要是建立以企業生產經營管理和產品開發等主要業務數據為主體的企業資料庫管理系統,建立主要行業的產品供求資料庫及其服務機制;公眾數據資源開發利用是圍繞普通市民的生活需求,在商業網點、科教文衛、休閑娛樂、醫療衛生、日常出行、前,絕大多數城市的數據資源,尤其是城市公共資料庫和專題資料庫開發滯後,城市可用數據資源嚴重不足;另一方面,現有各個城市信息網路和應用網路之間缺乏互聯互通,造成了大量有價值的數據資源閑置。因此,深入研究如何進行城市數據資源開發利用具有非常重要的現實意義每天在城市政治、經濟、社會等各個領域都產生大量的數據,這些數據資源只有通過不斷的開發和利用才能達到增值的目的。由於缺乏有效的激勵機制。雖然城市網路基礎設施發展速度較快,但城市數據資源的開發利用卻始終沒有提到應有高度,普遍存在數據質量差、更新周期長、共享程度低等問題。希望採納採納!

❹ 數據分析面試注意什麼

數據分析面試注意事項如下:

1、專業經驗

介紹項目經驗:

參考STAR原則:即針對Situation(情景)、Task(任務)、Action(行動)和Result(結果)四個維度的追問項目經驗,從而深入了解面試者的能力和特質

重點通過面試者具體在何時,在什麼樣的項目環境、范圍中,以什麼樣的團隊分工,用怎樣的知識技能經驗,具體完成什麼任務?並包括對困難的處理,對結果的反思。

2、基本工具

互聯網公司的數據分析師使用Excel+SQL+R/Python的比較多,建議先看下JD上的要求,做好相關的准備。Excel至少要會用數據透視表和vlookup,VBA很有用但在面試中問到的不多,具體看JD要求。對於要求使用SQL的公司,一般會安排筆試或上機測試。也有公司不要求使用SQL,比方說一些BI比較成熟、業務發展比較慢的公司,或者一些使用第三方Saas服務的小公司。統計工具一般要求會一種就可以了,建議使用R或者Python,一方面是因為公司會要求盡量使用開源工具,另一方面可以讓面試官進行針對性的提問。如果你使用的是面試官不太了解的工具,就丟掉了一個重要的加分項。對於應屆生來說,是加分越多越好,而不是犯的錯誤越少越好。

3、行業了解

通過讓面試者對自己所處行業的分析,以及跨行業的對比,了解面試者是否具備寬闊的視野和對外部環境敏感的分析意識。

其實相對於數據分析技術來說,企業更注重的是分析師的綜合能力。這些能力包括快速的學習能力、良好的溝通能力、清晰的邏輯分析能力、高度的概括歸納能力,當然還有最基本的數據分析能力。

所以你們看到數據分析能力是最基本的,這里包括數據分析的知識、思路、演算法、模型、工具。

在考察完基本的數據分析能力後,企業其實最關心的不是這個數據分析師會多少種演算法、懂得多少個模型。企業應該關心的是數據分析師到底能不能幫你解決實際問題,也就是數據分析的工作到底能不能落地。

所謂的落地就是,分析師能不能發現問題、問題歸因、驗證假設、提出解決方案、方案的投入產出與決策建議、方案落實的效果分析以及調優、方案的總結和未來項目的風險規避。

❺ 數據分析師常見的面試問題

關於數據分析師常見的面試問題集錦

1、你處理過的最大的數據量?你是如何處理他們的?處理的結果。

2、告訴我二個分析或者計算機科學相關項目?你是如何對其結果進行衡量的?

3、什麼是:提升值、關鍵績效指標、強壯性、模型按合度、實驗設計、2/8原則?

4、什麼是:協同過濾、n-grams, map rece、餘弦距離?

5、如何讓一個網路爬蟲速度更快、抽取更好的信息以及更好總結數據從而得到一干凈的資料庫?

6、如何設計一個解決抄襲的方案?

7、如何檢驗一個個人支付賬戶都多個人使用?

8、點擊流數據應該是實時處理?為什麼?哪部分應該實時處理?

9、你認為哪個更好:是好的數據還是好模型?同時你是如何定義「好」?存在所有情況下通用的模型嗎?有你沒有知道一些模型的定義並不是那麼好?

10、什麼是概率合並(aka模糊融合)?使用sql處理還是其它語言方便?對於處理半結構化的數據你會選擇使用哪種語言?

11、你是如何處理缺少數據的?你推薦使用什麼樣的處理技術?

12、你最喜歡的編程語言是什麼?為什麼?

13、對於你喜歡的統計軟體告訴你喜歡的與不喜歡的3個理由。

14、sas, r, python, perl語言的區別是?

15、什麼是大數據的詛咒?

16、你參與過資料庫與數據模型的設計嗎?

17、你是否參與過儀表盤的設計及指標選擇?你對於商業智能和報表工具有什麼想法?

18、你喜歡td資料庫的什麼特徵?

19、如何你打算發100萬的營銷活動郵件。你怎麼去優化發送?你怎麼優化反應率?能把這二個優化份開嗎?

20、如果有幾個客戶查詢oracle資料庫的效率很低。為什麼?你做什麼可以提高速度10倍以上,同時可以更好處理大數量輸出?

21、如何把非結構化的數據轉換成結構化的數據?這是否真的有必要做這樣的轉換?把數據存成平面文本文件是否比存成關系資料庫更好?

22、什麼是哈希表碰撞攻擊?怎麼避免?發生的頻率是多少?

23、如何判別maprece過程有好的負載均衡?什麼是負載均衡?

24、請舉例說明maprece是如何工作的?在什麼應用場景下工作的很好?雲的安全問題有哪些?

25、(在內存滿足的情況下)你認為是100個小的哈希表好還是一個大的哈希表,對於內在或者運行速度來說?對於資料庫分析的評價?

26、為什麼樸素貝葉斯差?你如何使用樸素貝葉斯來改進爬蟲檢驗演算法?

27、你處理過白名單嗎?主要的規則?(在欺詐或者爬行檢驗的情況下)

28、什麼是星型模型?什麼是查詢表?

29、你可以使用excel建立邏輯回歸模型嗎?如何可以,說明一下建立過程?

30、在sql, perl, c++, python等編程過程上,待為了提升速度優化過相關代碼或者演算法嗎?如何及提升多少?

31、使用5天完成90%的精度的解決方案還是花10天完成100%的精度的解決方案?取決於什麼內容?

32、定義:qa(質量保障)、六西格瑪、實驗設計。好的與壞的實驗設計能否舉個案例?

33、普通線性回歸模型的缺陷是什麼?你知道的其它回歸模型嗎?

34、你認為葉數小於50的決策樹是否比大的好?為什麼?

35、保險精算是否是統計學的一個分支?如果不是,為何如何?

36、給出一個不符合高斯分布與不符合對數正態分布的數據案例。給出一個分布非常混亂的數案例。

37、為什麼說均方誤差不是一個衡量模型的好指標?你建議用哪個指標替代?

38、你如何證明你帶來的演算法改進是真的有效的與不做任何改變相比?你對a/b測試熟嗎?

39、什麼是敏感性分析?擁有更低的敏感性(也就是說更好的強壯性)和低的預測能力還是正好相反好?你如何使用交叉驗證?你對於在數據集中插入雜訊數據從而來檢驗模型的.敏感性的想法如何看?

40、對於一下邏輯回歸、決策樹、神經網路。在過去XX年中這些技術做了哪些大的改進?

41、除了主成分分析外你還使用其它數據降維技術嗎?你怎麼想逐步回歸?你熟悉的逐步回歸技術有哪些?什麼時候完整的數據要比降維的數據或者樣本好?

42、你如何建議一個非參數置信區間?

43、你熟悉極值理論、蒙特卡羅邏輯或者其它數理統計方法以正確的評估一個稀疏事件的發生概率?

44、什麼是歸因分析?如何識別歸因與相關系數?舉例。

45、如何定義與衡量一個指標的預測能力?

46、如何為欺詐檢驗得分技術發現最好的規則集?你如何處理規則冗餘、規則發現和二者的本質問題?一個規則集的近似解決方案是否可行?如何尋找一個可行的近似方案?你如何決定這個解決方案足夠好從而可以停止尋找另一個更好的?

47、如何創建一個關鍵字分類?

48、什麼是僵屍網路?如何進行檢測?

49、你有使用過api介面的經驗嗎?什麼樣的api?是谷歌還是亞馬遜還是軟體即時服務?

50、什麼時候自己編號代碼比使用數據科學者開發好的軟體包更好?

51、可視化使用什麼工具?在作圖方面,你如何評價tableau?r?sas?在一個圖中有效展現五個維度?

52、什麼是概念驗證?

53、你主要與什麼樣的客戶共事:內部、外部、銷售部門/財務部門/市場部門/it部門的人?有咨詢經驗嗎?與供應商打過交道,包括供應商選擇與測試。

54、你熟悉軟體生命周期嗎?及it項目的生命周期,從收入需求到項目維護?

55、什麼是cron任務?

56、你是一個獨身的編碼人員?還是一個開發人員?或者是一個設計人員?

57、是假陽性好還是假陰性好?

58、你熟悉價格優化、價格彈性、存貨管理、競爭智能嗎?分別給案例。

59、zillow』s演算法是如何工作的?

60、如何檢驗為了不好的目的還進行的虛假評論或者虛假的fb帳戶?

61、你如何創建一個新的匿名數字帳戶?

62、你有沒有想過自己創業?是什麼樣的想法?

63、你認為帳號與密碼輸入的登錄框會消失嗎?它將會被什麼替代?

64、你用過時間序列模型嗎?時滯的相關性?相關圖?光譜分析?信號處理與過濾技術?在什麼樣的場景下?

65、哪位數據科學有你最佩服?從哪開始?

66、你是怎麼開始對數據科學感興趣的?

67、什麼是效率曲線?他們的缺陷是什麼,你如何克服這些缺陷?

68、什麼是推薦引擎?它是如何工作的?

69、什麼是精密測試?如何及什麼時候模擬可以幫忙我們不使用精密測試?

70、你認為怎麼才能成為一個好的數據科學家?

71、你認為數據科學家是一個藝術家還是科學家?

72、什麼是一個好的、快速的聚類演算法的的計算復雜度?什麼好的聚類演算法?你怎麼決定一個聚類的聚數?

73、給出一些在數據科學中「最佳實踐的案例」。

74、什麼讓一個圖形使人產生誤解、很難去讀懂或者解釋?一個有用的圖形的特徵?

75、你知道使用在統計或者計算科學中的「經驗法則」嗎?或者在商業分析中。

76、你覺得下一個20年最好的5個預測方法是?

77、你怎麼馬上就知道在一篇文章中(比如報紙)發表的統計數字是錯誤,或者是用作支撐作者的論點,而不是僅僅在羅列某個事物的信息?例如,對於每月官方定期在媒體公開發布的失業統計數據,你有什麼感想?怎樣可以讓這些數據更加准確?

;

❻ 數據處理有什麼流程

數據治理流程是從數據規劃、數據採集、數據儲存管理到數據應用整個流程的無序到有序的過程,也是標准化流程的構建過程。

根據每一個過程的特點,我們可以將數據治理流程總結為四個字,即「理」、「采」、「存」、「用」。



1.理:梳理業務流程,規劃數據資源

對於企業來說,每天的實時數據都會超過TB級別,需要採集用戶的哪些數據,這么多的數據放在哪裡,如何放,以什麼樣的方式放?

這些問題都是需要事先進行規劃的,需要有一套從無序變為有序的流程,這個過程需要跨部門的協作,包括了前端、後端、數據工程師、數據分析師、項目經理等角色的參與。

2.采:ETL採集、去重、脫敏、轉換、關聯、去除異常值

前後端將採集到的數據給到數據部門,數據部門通過ETL工具將數據從來源端經過抽取(extract)、轉換(transform)、載入(load)至目的端的過程,目的是將散落和零亂的數據集中存儲起來。

3.存:大數據高性能存儲及管理

這么多的業務數據存在哪裡?這需要有一高性能的大數據存儲系統,在這套系統裡面將數據進行分門別類放到其對應的庫裡面,為後續的管理及使用提供最大的便利。

4.用:即時查詢、報表監控、智能分析、模型預測

數據的最終目的就是輔助業務進行決策,前面的幾個流程都是為最終的查詢、分析、監控做鋪墊。

這個階段就是數據分析師的主場,分析師們運用這些標准化的數據可以進行即時的查詢、指標體系和報表體系的建立、業務問題的分析,甚至是模型的預測。

❼ 數據結構與演算法處理面試題

1、時針走一圈,時針分針重合幾次

2、N*N的方格紙,裡面有多少個正方形

3、2000萬個整數,找出第五十大的數字?

4、網路POI中如何試下查找最近的商家功能(提示:坐標鏡像+R樹)。

5、一個文件中有100萬個整數,由空格分開,在程序中判斷用戶輸入的整數是否在此文件中。說出最優的方法

6、兩個不重復的數組集合中,這兩個集合都是海量數據,內存中放不下,怎麼求共同的元素?

7、燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若干條材質相同的繩子,問如何用燒繩的方法來計時一個小時十五分鍾呢?

8、萬億級別的兩個URL文件A和B,如何求出A和B的差集C(提示:Bit映射->hash分組->多文件讀寫效率->磁碟定址以及應用層面對定址的優化)

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

10、海量日誌數據,提取出某日訪問網路次數最多的那個IP。

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

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

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

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

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

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

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

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

❽ 公務員面試 企業組織幾個小組進行行業調查,中途你發現給的數據有錯,若更改影響很大,你該怎麼處理

首先,整理出來所有出錯的數據,以及出錯數據的來源。
其次,理清出錯數據會造成哪些影響,影響大的話可能是會造成整體平均數或者某個成分佔比的變動很大,弄明白到底會怎樣影響最後調查結果。
第三,根據分析情況,列舉幾種解決措施。
最後,將情況盡快匯報領導定奪。

❾ 數據分析師面試經驗

數據分析師面試經驗

經常被問到一個問題,數據分析師或者數據挖掘工程師面試都問什麼問題啊?特別是以下幾類人群:

1、想轉行做數據分析工作的朋友。

2、之前在比較小的公司做數據分析師,去大公司面試。

3、在校大學生。

在回答這些問題之前,先談我的一個面試經歷,記得之前我在一家小公司做數據分析師的時候,有朋友推薦我去一家大公司去面試數據分析師。當時我也在想,在面試大公司的數據分析師一定會問:

1、你做過哪些模型?

2、用什麼工具做的啊?

3、你會或者知道哪些演算法啊?

4、數據量有多大?

.......

但是當我去溝通下來的時候,問關於數據挖掘模型演算法原理、使用什麼工具的東西不多。更多是問一些關於項目背景、怎麼思考這些項目、如何使用這些模型結果、怎麼推動業務方去使用數據結果。【坦白說當時覺得不可思議,怎麼問這些問題呢?】

所以大家在面試數據分析崗位的時候,基礎知識是必須的。但是更多要關注數據實現數據價值,特別是從事一段時間數據分析同學,但如果僅僅是剛准備從事數據分析同學,基礎的專業知識與技能肯定是面試必問的話題。如果這家公司希望未來培養或者招的真的做數據分析的,那就會像我面試碰到的,一定也會很關注面試之外的問題。

回到具體面試的問題,PS:這里我僅僅談談我的幾點看法和我面試中會問到的幾個問題,以及我為什麼會為這些問題。

一、了解你面試崗位的工作性質

1、你對於你面試崗位價值的理解。

2、你覺得這個崗位大概的工作內容。

3、對於公司的理解。

二、溝通表達/邏輯思維

1、說一下你過往做的一些項目/說說你以前的工作經歷。

2、你之前做過的一些專業分析。

3、你之前做過的模型。

4、之前是如何與業務方打交道的。

三、對於數據與商業的理解

1、如何理解數據敏感性?

2、你覺得數據怎麼體現其商業價值?能否舉個例子。

四、專業技能

1、基礎的統計學知識。

2、數據挖掘基本的演算法。

3、怎麼評估模型好壞。

4、使用的工具。

5、數據挖掘流程。

6、怎麼清洗變數【例如:指標定義、缺失值處理】。

7、怎麼解決建模中會碰到一些技術問題【例如:共線性、不同模型針對的.數據類型】。

五、學習能力

1、是怎麼學習專業知識。

2、怎麼學習業務知識。

六、職業發展

1、未來3年的職業規劃。

2、要實現這些規劃計劃是怎麼樣。

我把面試過程可以會問幾類問題,不同的面試官可以側重點不一樣。我想和所有面試數據分析師的朋友說的:

1、面試過程中大家是平等的。不要太弱勢也不要太強勢。

2、把你之前的工作有條理的表達出來。

3、面試一些問題的時候,可以想一想。我個人覺得,並不是所有的問題必須別人一問完,立即回答。

4、把面試當作一種學習與經歷。關鍵是從一些面試中你能發現自己不足。

另外一些小tips:

1、面試之前了解這個崗位。了解一下這個公司。花點時間在面試公司和崗位,了解了解人家公司是干什麼,如果你對這家公司特別感興趣,去網站上看看,去體驗體驗人家公司的產品和服務。會讓面試的人感覺到尊重。當然太貴就算了。

2、如果有認識的人或者通過一些渠道先了解一下你面試的公司,部門情況到底是怎麼樣的。到底要招什麼樣的人。

3、很多企業的招聘與實際需要的人之間有很大的出入。

4、投遞簡歷前:花點時間在簡歷上:要看到一份沒有錯別字且能把之前工作寫清楚在一張紙上真的很少。

5、機會是留給有準備的人。你准備好了嗎?每次面試結束看,看看自己的不足,然後一定立即去學起來。


;

❿ 十五道海量數據處理面試題

給定 a b 兩個文件 各存放 億個 url 每個 url 各占 位元組 內存限制是 G 讓你找出 a b 文件共同的 url

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

  • 遍歷文件a 對每個url求取 然後根據所取得的值將url分別存儲到 個小文件(記為)中 這樣每個小文件的大約為 M
  • 遍歷文件b 採取和a相同的方式將url分別存儲到 小文件中(記為) 這樣處理後 所有可能相同的url都在對應的小文件()中 不對應的小文件不可能有相同的url 然後我們只要求出 對小文件中相同的url即可
  • 求每對小文件中相同的url時 可以把其中一個小文件的url存儲到hash_set中 然後遍歷另一個小文件的每個url 看其是否在剛才構建的hash_set中 如果是 那麼就是共同的url 存到文件裡面就可以了
  • 方案 如果允許有一定的錯誤率 可以使用Bloom filter G內存大概可以表示 億bit 將其中一個文件中的url使用Bloom filter映射為這 億bit 然後挨個讀取另外一個文件的url 檢查是否與Bloom filter 如果是 那麼該url應該是共同的url(注意會有一定的錯誤率)

    讀者反饋 @crowgns

  • hash後要判斷每個文件大小 如果hash分的不均衡有文件較大 還應繼續hash分文件 換個hash演算法第二次再分較大的文件 一直分到沒有較大的文件為止 這樣文件標號可以用A 表示(第一次hash編號為 文件較大所以參加第二次hash 編號為 )
  • 由於 存在 第一次hash如果有大文件 不能用直接set的方法 建議對每個文件都先用字元串自然順序排序 然後具有相同hash編號的(如都是 而不能a編號是 b編號是 和 ) 可以直接從頭到尾比較一遍 對於層級不一致的 如a b有 層級淺的要和層級深的每個文件都比較一次 才能確認每個相同的uri
  • 個文件 每個文件 G 每個文件的每一行存放的都是用戶的 query 每個文件的 query 都可能重復 要求你按照 query 的頻度排序

    方案

  • 順序讀取 個文件 按照hash(query)% 的結果將query寫入到另外 個文件(記為)中 這樣新生成的文件每個的大小大約也 G(假設hash函數是隨機的)
  • 找一台內存在 G左右的機器 依次對用hash_map(query query_count)來統計每個query出現的次數 利用快速/堆/歸並排序按照出現次數進行排序 將排序好的query和對應的query_cout輸出到文件中 這樣得到了 個排好序的文件(記為)
  • 對這 個文件進行歸並排序(內排序與外排序相結合)
  • 方案

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

    讀者反饋 @店小二 原文第二個例子中 找一台內存在 G左右的機器 依次對用hash_map(query query_count)來統計每個query出現的次數 由於query會重復 作為key的話 應該使用hash_multimap hash_map不允許key重復 此反饋是否正確 待日後考證)

    方案

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

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

    方案 順序讀文件中 對於每個詞x 取 然後按照該值存到 個小文件(記為)中 這樣每個文件大概是 k左右 如果其中的有的文件超過了 M大小 還可以按照類似的方法繼續往下分 知道分解得到的小文件的大小都不超過 M 對每個小文件 統計每個文件中出現的詞以及相應的頻率(可以採用trie樹/hash_map等) 並取出出現頻率最大的 個詞(可以用含 個結點的最小堆) 並把 詞及相應的頻率存入文件 這樣又得到了 個文件 下一步就是把這 個文件進行歸並(類似與歸並排序)的過程了

    海量日誌數據 提取出某日訪問網路次數最多的那個 IP

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

    億個整數中找出不重復的整數 內存不足以容納這 億個整數

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

    方案 也可採用上題類似的方法 進行劃分小文件的方法 然後在小文件中找出不重復的整數 並排序 然後再進行歸並 注意去除重復的元素

    海量數據分布在 台電腦中 想個辦法高效統計出這批數據的 TOP

    方案

  • 在每台電腦上求出TOP 可以採用包含 個元素的堆完成(TOP 小 用最大堆 TOP 大 用最小堆) 比如求TOP 大 我們首先取前 個元素調整成最小堆 如果發現 然後掃描後面的數據 並與堆頂元素比較 如果比堆頂元素大 那麼用該元素替換堆頂 然後再調整為最小堆 最後堆中的元素就是TOP 大
  • 求出每台電腦上的TOP 後 然後把這 台電腦上的TOP 組合起來 共 個數據 再利用上面類似的方法求出TOP 就可以了
  • (更多可以參考 第三章 尋找最小的 k 個數 以及第三章續 Top K 演算法問題 的實現)

    讀者反饋 @QinLeopard

    第 題的方法中 是不是不能保證每個電腦上的前十條 肯定包含最後頻率最高的前十條呢? 比如說第一個文件中 A( ) B( ) C( ) D( ) 第二個文件中 A( ) B( ) C( ) D( ) 第三個文件中: A( ) B( ) C( ) D( ) 如果要選Top( ) 選出來的結果是A 但結果應該是B

    @July 我想 這位讀者可能沒有明確提議 本題目中的 TOP 是指最大的 個數 而不是指出現頻率最多的 個數 但如果說 現在有另外一提 要你求頻率最多的 個 相當於求訪問次數最多的 個IP地址那道題 即是本文中上面的第 題 特此說明

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

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

    上千萬或上億數據(有重復) 統計其中出現次數最多的錢 N 個數據

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

    萬字元串 其中有些是重復的 需要把重復的全部去掉 保留沒有重復的字元串 請怎麼設計和實現?

    方案 這題用trie樹比較合適 hash_map也應該能行

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

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

    一個文本文件 找出前 個經常出現的詞 但這次文件比較長 說是上億行或十億行 總之無法一次讀入內存 問最優解

    方案 首先根據用hash並求模 將文件分解為多個小文件 對於單個文件利用上題的方法求出每個文件件中 個最常出現的詞 然後再進行歸並處理 找出最終的 個最常出現的詞

    w 個數中找出最大的 個數

  • 方案 在前面的題中 我們已經提到了 用一個含 個元素的最小堆完成 復雜度為O( w*lg )
  • 方案 採用快速排序的思想 每次分割之後只考慮比軸大的一部分 知道比軸大的一部分在比 多的時候 採用傳統排序演算法排序 取前 個 復雜度為O( w* )
  • 方案 採用局部淘汰法 選取前 個元素 並排序 記為序列L 然後一次掃描剩餘的元素x 與排好序的 個元素中最小的元素比 如果比這個最小的要大 那麼把這個最小的元素刪除 並把x利用插入排序的思想 插入到序列L中 依次循環 知道掃描了所有的元素 復雜度為O( w* )
  • 尋找熱門查詢

    搜索引擎會通過日誌文件把用戶每次檢索使用的所有檢索串都記錄下來 每個查詢串的長度為 位元組 假設目前有一千萬個記錄 這些查詢串的重復讀比較高 雖然總數是 千萬 但是如果去除重復和 不超過 百萬個 一個查詢串的重復度越高 說明查詢它的用戶越多 也就越熱門 請你統計最熱門的 個查詢串 要求使用的內存不能超過 G

    ( ) 請描述你解決這個問題的思路

    ( ) 請給出主要的處理流程 演算法 以及演算法的復雜度

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

    關於此問題的詳細解答 請參考此文的第 節 第三章續 Top K 演算法問題的實現

    一共有 N 個機器 每個機器上有 N 個數 每個機器最多存 O(N) 個數並對它們操作 如何找到 N^ 個數中的中數?

    方案 先大體估計一下這些數的范圍 比如這里假設這些數都是 位無符號整數(共有 ^ 個) 我們把 到 ^ 的整數劃分為N個范圍段 每個段包含( ^ )/N個整數 比如 第一個段位 到 ^ /N 第二段為( ^ )/N到( ^ )/N … 第N個段為( ^ )(N )/N到 ^ 然後 掃描每個機器上的N個數 把屬於第一個區段的數放到第一個機器上 屬於第二個區段的數放到第二個機器上 … 屬於第N個區段的數放到第N個機器上 注意這個過程每個機器上存儲的數應該是O(N)的 下面我們依次統計每個機器上數的個數 一次累加 直到找到第k個機器 在該機器上累加的數大於或等於(N^ )/ 而在第k 個機器上的累加數小於(N^ )/ 並把這個數記為x 那麼我們要找的中位數在第k個機器中 排在第(N^ )/ x位 然後我們對第k個機器的數排序 並找出第(N^ )/ x個數 即為所求的中位數的復雜度是O(N^ )的

    方案 先對每台機器上的數進行排序 排好序後 我們採用歸並排序的思想 將這N個機器上的數歸並起來得到最終的排序 找到第(N^ )/ 個便是所求 復雜度是O(N^ *lgN^ )的

    最大間隙問題

    給定n個實數 求著n個實數在實軸上向量 個數之間的最大差值 要求線性的時間演算法

    方案 最先想到的方法就是先對這n個數據進行排序 然後一遍掃描即可確定相鄰的最大間隙 但該方法不能滿足線性時間的要求 故採取如下方法

  • 找到n個數據中最大和最小數據max和min
  • 用n 個點等分區間[min max] 即將[min max]等分為n 個區間(前閉後開區間) 將這些區間看作桶 編號為 且桶i的上界和桶i+ 的下屆相同 即每個桶的大小相同 每個桶的大小為 實際上 這些桶的邊界構成了一個等差數列(首項為min 公差為) 且認為將min放入第一個桶 將max放入第n 個桶
  • 將n個數放入n 個桶中 將每個元素x[i] 分配到某個桶(編號為index) 其中 並求出分到每個桶的最大最小數據
  • 最大間隙 除最大最小數據max和min以外的n 個數據放入n 個桶中 由抽屜原理可知至少有一個桶是空的 又因為每個桶的大小相同 所以最大間隙不會在同一桶中出現 一定是某個桶的上界和氣候某個桶的下界之間隙 且該量筒之間的桶(即便好在該連個便好之間的桶)一定是空桶 也就是說 最大間隙在桶i的上界和桶j的下界之間產生j>=i+ 一遍掃描即可完成
  • 將多個集合合並成沒有交集的集合

    給定一個字元串的集合 格式如 要求將其中交集不為空的集合合並 要求合並完成的集合之間無交集 例如上例應輸出

    ( ) 請描述你解決這個問題的思路

    ( ) 給出主要的處理流程 演算法 以及演算法的復雜度

    ( ) 請描述可能的改進

    方案 採用並查集 首先所有的字元串都在單獨的並查集中 然後依掃描每個集合 順序合並將兩個相鄰元素合並 例如 對於 首先查看aaa和bbb是否在同一個並查集中 如果不在 那麼把它們所在的並查集合並 然後再看bbb和ccc是否在同一個並查集中 如果不在 那麼也把它們所在的並查集合並 接下來再掃描其他的集合 當所有的集合都掃描完了 並查集代表的集合便是所求 復雜度應該是O(NlgN)的 改進的話 首先可以記錄每個節點的根結點 改進查詢 合並的時候 可以把大的和小的進行合 這樣也減少復雜度

    最大子序列與最大子矩陣問題

    數組的最大子序列問題 給定一個數組 其中元素有正 也有負 找出其中一個連續子序列 使和最大

    方案 這個問題可以動態規劃的思想解決 設b[i]表示以第i個元素a[i]結尾的最大子序列 那麼顯然 基於這一點可以很快用代碼實現

    最大子矩陣問題 給定一個矩陣(二維數組) 其中數據有大有小 請找一個子矩陣 使得子矩陣的和最大 並輸出這個和

    lishixin/Article/program/sjjg/201405/30744

    閱讀全文

    與面試數據處理該怎麼處理相關的資料

    熱點內容
    javaapplet生命周期 瀏覽:788
    iphone解鎖macbook 瀏覽:409
    能用手機打開的腳本文件格式 瀏覽:19
    win10的畫圖怎麼保存 瀏覽:933
    糖果小號密碼轉換工具 瀏覽:805
    mac雙系統win10ghost嗎 瀏覽:588
    如何刪除光碟上的文件 瀏覽:900
    maclinux開發 瀏覽:327
    2014蘋果增產 瀏覽:701
    數據線兩芯與五芯如何連 瀏覽:715
    linux光碟文件 瀏覽:902
    微信公眾號使用權歸誰 瀏覽:296
    b250主板無法安裝win10 瀏覽:65
    為什麼有的人可以做網站 瀏覽:390
    桌面文件太多好嗎 瀏覽:209
    引用外部css文件路徑 瀏覽:217
    微信文章源碼 瀏覽:382
    sqlqq資料庫代碼怎麼寫 瀏覽:965
    tcs文件怎麼打開 瀏覽:102
    沉迷網路對自己有哪些傷害 瀏覽:288

    友情鏈接