1. 程式人生 > >演算法和資料結構

演算法和資料結構

資料結構

長度為n的陣列構建成最小堆的時間複雜度

B、B+樹、紅黑樹

說一下B+樹和二叉搜尋樹的區別?

說一下二叉搜尋樹和AVL樹、紅黑樹之間的差別

說下紅黑樹原理,紅黑樹你看虛擬碼的時候他有兩坨比較一樣的有沒有注意過

哪些情況下用棧

知道雜湊嗎?二叉樹比雜湊牛逼在哪裡?各自有什麼優缺點,我就從查詢和排序上個舉了個例子。

雜湊解決衝突有哪些機制。

一致性雜湊的一致性是什麼意思

一致性雜湊是如何做雜湊的

說一個你印象最深刻的資料結構,用來解決什麼典型問題?(堆、TopK問題)

自己最常用的資料結構是什麼

 講講演算法及資料結構在實習專案中的用處

資料結構--設計實現KV結構,查詢演算法,樹

演算法

讀過哪些演算法方面的書籍

動態規劃

講一下迪傑斯特拉演算法的流程

講一下弗洛伊德演算法的流程

說一個典型的演算法解決什麼問題?

貪心演算法有什麼優點缺點?貪心演算法可能不是最優解那什麼演算法能解決呢?(動態規劃這個詞老想不起來..)

排序

氣泡排序,快速排序,歸併排序,堆排序——區別、優缺點、優化(怎樣優化快速排序,工程上一般怎麼優化?)、時間複雜度(平均、最壞)、實現

排序演算法中哪些比較穩定的?

哪種排序演算法適合資料量比較大的排序?

講講O(nlogn)複雜度的演算法在實際工程中的用處

基本排序如堆排序的使用場景?

選擇排序:選擇排序(Selection sort)是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法。

題目

有10個檔案,每個檔案有1000萬行,檔案內容的每一行為一個整型數字;需要,寫一個程式,將所有數字排序,分為10個檔案輸出,如0號檔案包含前1000萬個數字,1號檔案檔案包含1千萬-2千萬之間的數字,依次類推。限制:如果使用java,-Xmx需要設定為32MB;其它語言也需限制記憶體為32MB。要求:正確輸出,使用多執行緒加分。編寫時長:24 小時

我主要使用了分而治之,多執行緒處理的方式。注意下同步即可。

一個包含很多字串的文字檔案,計算出每個字串出現的次數?在網上看很多人都使用了STL的MAP,但我覺得如果只是計算每個字串出現的次數,那麼使用字典樹應該更好,無論是在儲存空間還是更新和查詢上效率都更勝一籌。

用什麼演算法從大量的IP中找出頻率最高的IP的?檔案非常大,容量不夠?HashMap 引導---用分而治之的思想演算法複雜度

給你50億行字串,機器4G記憶體(只能一臺機器),找出重複次數最多的那行字串?(以行為單位,每行不超過10個字元)

top k問題,100億條資料,找出其中最大的20條,並分析時間複雜度。

實現兩個10g大檔案在10m的記憶體中將兩個大檔案中重複的放進第三個檔案

有兩個貼別大的檔案裡面是字串,找出他們的交集?(hash分成小檔案,在求交集(用字首樹實現求交集比較好

一個網路聊天室有思路嗎?不要求介面,只說思路

設計微信附近的人演算法

設計一個銀行叫號系統

一本英文書,找出10個出現頻率最高的單詞

一共16個球隊,有自己的分數,實現一個函式,隨機返回兩個球隊,保證分數高的球隊儘可能多地返回?

你有27個錢幣,每個重量10克,除了一個重9克或者11克(重或輕1克)。用天平稱量幾次才可以辨認出那個不同重量的錢幣?答案可以直接百度出來。

一批編號為1~100,全部開關朝上(開)的燈進行以下*作:凡是1的倍數反方向撥一次開關;2的倍數反方向又撥一次開關;3的倍數反方向又撥一次開關……問:最後為關熄狀態的燈的編號。

線上寫一個氣泡排序

寫一個函式,將一個數組中的所有0移動到陣列的末尾

寫一個函式,判斷一個字串中是否有迴文子串?

輸入CCAAADDEE 輸出ACDE

非遞迴遍歷二叉樹

非遞迴且不用額外空間(不用棧),如何遍歷二叉樹

查詢陣列的中間元素

講下跳錶怎麼實現的

哈夫曼編碼是怎麼回事

反轉一串字串

從一串JSON字串中提取所有的一個屬性並輸出

統計一串字串中的數字、英文字母、空格、其他字元的個數並列印輸出

計算N的階乘

陣列排序演算法隨便寫

建立三個執行緒ABC,分別列印其執行緒名十次,並按照ABC的順序執行;

二叉樹檢索節點有兩種搜尋:深度搜索/廣度搜索,用那種資料結構實現?如果不借助上述資料結構,用什麼實現比較好?

給你兩個檔案(字串形式的)如何找出他們之間的不同地方?你剛剛說的能怎麼優化?

倒排索引

去重策略

不需要全表掃描,能夠獲取時間大於7天的資料

現在我的jar包在雲上,怎麼動態新增進我的專案中?(不知道..後來想了一下自己寫ClassLoader應該可以..)

定義並實現一個函式。函式功能:刪除字串的子串,輸入源字串和待刪除的子串,返回刪除後的字串。

    • 手撕程式碼,判斷一個字串表示的ip地址是否合法,ip地址為255.255.255.255之類的,需要考慮各種不合法的條件。
    • 手撕程式碼,一個4位元組的數字代表一個ip地址,將這個數裝換為一個string表示的ip地址。