摘要: 阿里巴巴資深技術專家們結合多年的工做、面試經驗總結提煉而成的筆試真題這一次將陸續放出(面試題答案將在專輯分享結束後統一彙總分享)。並經過這些筆試真題開放阿里巴巴工做機會,讓更多的開發者加入到阿里這個大平臺。
爲幫助開發者們提高面試技能、有機會入職阿里,雲棲社區特別製做了這個專輯——阿里巴巴資深技術專家們結合多年的工做、面試經驗總結提煉而成的面試真題這一次將陸續放出(面試題官方參考答案將在專輯結束後統一彙總分享,點此進入答題並圍觀他人答案)。並經過這些筆試真題開放阿里巴巴工做機會,讓更多的開發者加入到阿里這個大平臺。面試
這一次,不只是知識的收穫,還將間接地與技術大牛們作了直觀的溝通,瞭解他們的出題思路與考察要點,並加以消化吸取,這對本身技術能力自己就是一種極大的提高。走上編程之路,不斷豐富本身方能與世接軌,努力作最優秀的本身。算法
4月25日,咱們給開發者的第2~4道面試題。編程
考察點:緩存
考察點:安全
示例
以下圖,輸入K=3, 輸出節點值3數據結構
說明
保證輸入的K知足1<=K<=(節點數目)性能
設計和實現一個 LRU(最近最少使用)緩存 數據結構,使它應該支持如下操做: get 和 put 。
get(key) ‑ 若是key存在於緩存中,則獲取key的value(老是正數),不然返回 ‑1。 put(key,
value) ‑ 若是key不存在,請設置或插入value。當緩存達到其容量時,它應該在插入新項目以前使
最近最少使用的項目做廢。測試
案例:
LRUCache cache = new LRUCache( 2 / 容量 / );優化
cache.put(1, 1);
cache.put(2, 2);
cache.get(1); // 返回 1
cache.put(3, 3); // 該操做,會將 key 2 做廢
cache.get(2); // 返回 ‑1 (結果不存在)
cache.put(4, 4); // 該操做,會將 key 1 做廢
cache.get(1); // 返回 ‑1 (結果不存在)
cache.get(3); // 返回 3
cache.get(4); // 返回 4阿里雲
測試用例: s = [["put","put","get","put","get","put","get","get","get"],[[1,1],[2,2],[1],[3,3],[2],
[4,4],[1],[3],[4]]]
考察點:
對LRU實現的基本原理和數據結構的理解。
阿里巴巴出題專家:文景
阿里雲CDN資深技術專家,浙大碩士,在高性能服務端產品開發、穩定性、服務質量優化及成本優化等各項功能都有10年以上的經驗。在網易杭州研究院負責底層開源軟件研發,國內最先核心Nginx研發人員之一,曾任tengine研發負責人,熱衷於參與開源項目。
如今是CDN技術負責人,連續7年服務雙11,保障整個阿里集團95%以上的流量分發穩定性。從2014年開始,從0到1構建阿里雲CDN的商業化基礎設施,包括點播、直播、動態、安全加速等各項產品線,阿里雲CDN如今是中國用戶數最多的CDN、也是國內規模最大的CDN。正在將CDN打形成互聯網的基礎設施,爲全球用戶提供接入、加速、安全的穩定服務。
招聘職位:點此進入查看CDN大量職位並投遞簡歷
本文爲雲棲社區原創內容,未經容許不得轉載。