筆試部分是做了10道題目, 主要是類似於leetcode上的題. 也包含了一些設計題目, 比如說怎麼設計乙個爬蟲系統的去重. 在面試的時候答題紙也被送過來, 面試官會選擇裡面乙個問題(主要是沒做出來的)來問你.
題目我會記錄下來放到github上.
一面聊的時間很長, 總共70分鐘左右.
總共問了三個大題吧. 發現在面試的過程中, 有一些問題是一開始沒有思考到的, 在交流想法的時候發現漏掉了. 可能是沒有一開始去設計測試用例, 或者去思考當前的可能的場景或者情況.
60分鐘 限制使用者訪問不能超過5次以上
hashmap
目錄樹列印
一開始做了乙個設計的題目. 場景是一些關鍵操作, 要對使用者的訪問次數或者訪問時間做出限制. 給出的例子是要設計乙個函式或者功能, 限制單一使用者在60分鐘之內不能訪問超過5詞以上. 類似實現乙個函式, 輸入是使用者的 uid. 返回乙個布林值用於表示是否應該 block 掉該次訪問.
當時一開始的想法是把記錄存在乙個資料庫表裡, 類似《訪問時間, uid, 狀態(block/ok)>
然後每次去資料庫查, 獲取到當前的60分鐘之內的資料, 大於5條就選擇block掉.
後來覺得放在mysql這種資料庫中太慢, 因為這個函式肯定是乙個熱點, 在每次接受請求的時候都會呼叫. 可以放在redis這種記憶體資料庫中.
此外, 由於這種規則的限制只考慮比如 x 分鐘之內的記錄. 可以只儲存一定時間之內的訪問記錄, 超時就做乙個失效的處理.
後來要求用一種資料結構實現, 在記憶體中直接計算.
發現可以做乙個hashmap的形式, 裡面儲存的是 uid和乙個表示訪問記錄的佇列.這個佇列裡儲存一些過去的訪問記錄. 可以通過時間和數量來選擇最大的容量.
比如說我現在需要考慮過去60分鐘的5次資料. 我可以選擇容量是5, 最多容納五條.我直接選取佇列中最早插入的(時間距離現在最久)看這條記錄時間是否比當前時間早60分鐘. 如果超過了就說明最近60分鐘的訪問次數少於5次. 如果沒超過說明需求被block.
在每次接受請求的時候都需要把訪問記錄放到這個佇列中, 也就是會退出乙個最早插入的, 再在隊尾加乙個當前的訪問記錄.
在手寫**的時候發現沒有思考冷啟動的問題, 需要判斷如果佇列不滿, 就應該直接放入資料.這也是考慮欠妥當的地方.
第二個問題, 面試官問我是否了解 hashmap . 其實不很了解, 沒看過源**, 看過一些文章.說了一下鍊錶過長會樹化,有開放定址和鍊錶法解決hash衝突的問題. 然後問我map裡桶的陣列儲存的是什麼, 我說是鍊錶的頭結點. 面試之後看了一下原始碼分析的文章, 其實map裡就是儲存了乙個 entry的陣列, 每個entry有指向下乙個entry的引用, 也就是一種鍊錶的陣列. 好像還問我什麼時候擴容, 這個我答的不對. 後來看過是在map的大小超過閾值之後, 且發生了hash衝突,才擴容. 在沒超過閾值, 但是某個鍊錶長度過長的時候發生樹化.
第三個問題是問類似乙個linux的目錄樹, 怎麼從[父目錄, 子目錄]這種資訊構建出來.
提供的資料[[a,b],[b,c],[c,d],[d,e]] 這種, 構建出類似 linux tree命令的結果.
需要考慮怎麼構建樹形結構, 還要考慮怎麼能從樹輸出結果.
構建樹, 把所有沒出現過的父目錄作為森林裡的乙個樹的root節點. 如果出現過就把子目錄放到對應的位置.
合併森林, 尋找乙個只出現只出現在樹根的節點, 表示全域性的根目錄. 然後不斷的合併, 如果圖是連通的. 那麼肯定能合併成乙個多叉樹
對樹做乙個先序遍歷, 輸出結果. 遞迴的時候要傳進去層數, 以便控制縮排
二面感覺面的不好, 很多問題都沒回答上來.
問陣列與鍊錶的區別 定址訪問和插入刪除的一種trade off
問怎麼能實現乙個 插入刪除搜尋都是o(1)的資料結構 好像hashmap可以符合 但是還問有沒有其他的資料結構
做乙個題 尋找陣列中兩個數的和 最接近指定數字. 提示可以排序
問程式語言 用過哪些 了解哪些
某公司運籌優化崗位第一次面試
基本概念 p問題,np問題,npc問題,np hard問題的定義和相互關係 npc問題 nondeterministic polynomial complete np hard問題 nondeterministic polynomial hard 滿足npc問題的第2條但是不一定滿足第1條。即使np...
第一次面試經歷
自己準備了很長的一段時間,因為之前都比較浪,沒有複習就去筆試,所以導致前面很多的筆試都做得不好,沒能拿到面試機會。雖然這是一次 面試,但因為是第一次面試,所以比較緊張,面試官也比較緊張。準備了很多面試題都沒有考,因為面試官會從一些例子中抽象出問題讓我們來解決,而不是單純的問問題。自己答得不好的幾個地...
第一次面試的經歷
本人一名 年大四應屆生,面臨找工作的問題,這次我就和大家分享一下第一次面試的經歷。首先說一下招聘的過程 此次的招聘的流程是 宣講 筆試 面試 結果 建議 如果對本公司不是很了解的話,可以趁著宣講的機會對公司了解一下,尤其是你所選擇的職位,明白職位的職能,最好是結合自己的興趣。建議 不管是什麼崗位,都...