本文內容截取自《阿里雲技術面試紅寶書》web
(點擊底部查看下載紅寶書)面試
阿里雲技術面試官面試真題和題解助你拿下Offer!算法
1. 常見的 DNS 記錄類型有哪些, 常見的 DNS 攻擊方式有哪些以及怎麼防禦?數據庫
參考答案:緩存
常見的 DNS 記錄類型包括但不限於 A,AAAA,CNAME,NS,TXT,MX,SOA 等。服務器
常見的 DNS 攻擊包括但不限於:泛域名攻擊,放大攻擊,反射攻擊等,常見的防禦方式包括但不限於:提高程序性能 ( 好比 dpdk 的 DNS),zone 限速,來源 IP 限速,來源 IP 白名單,響應限速等。網絡
2. 在進行 CDN 流量調度時,要考慮哪些因素?多線程
參考答案:架構
須要考慮的因素包括但不限於:業務特性、質量要求、命中率、資源冗餘度、APP 端適配條件、客戶端網絡環境等方面。併發
3.請舉例說明,你是如何把 DDD 應用到實際項目中來的
例子中須要包含具體的領域模型設計,這麼作的理由,以及由於這個設計而引進的坑。答案:本題爲開放性問題,沒有標準答案。
4. 如何設計一個百萬級TPS分佈式系統架構?
並舉例說明這類分佈式系統會引入哪些問題,以及對應的解決方案。
考察點:可以熟練應用緩存,消息中間件,數據庫分庫分表,讀寫分離等技術。
參考架構:
5. 異步、多線程併發控制如何操做?
題目案例:
已知一個業務查詢操做涉及 3 個 RPC 服務調用 : query1, query2, query3, 其中query1 耗時約 1 秒, query2 耗時約 0.5 秒,query3 耗時約 0.6 秒,且 query3 查詢條件依賴 query2 的查詢結果,請編寫代碼,使該業務查詢整體耗時最小。
考察點 1:異步
考察點 2:多線程併發控制
解題思路:
本題比較簡單,主要考察知識點異步和多線程控制。若是採用串行執行,query1+query2+query3 總耗時爲 2.1 秒。
採用多線程異步並行執行,使用線程 A 請求 query1,同時使用線程 B 請求 query2後再請求 query3(query3 依賴 query2 結果只能串行執行),這樣總耗時是 min(1, 0.5+0.6) = 1.1 秒。
須要熟悉 join, CountDownLatch 等線程協調控制方法,若是考生使用線程池則更佳。
6. MapReduce 思想、排序算法結合實例如何運用?
淘寶 web 服務器上有 1 個 access 日誌文件,記錄着用戶訪問的 url,url 總數100 億以上,每一個 url 約佔 64 字節,這些 url 可能存在重複,在一個內存只有 2G 的機器上,統計出訪問頻率最高的前100 個 URL。
考察點 1:MapReduce 思想,利用中間文件存儲,分而治之。
考察點 2:排序算法
解題思路:
100 億 *64/1024/1024/1024 = 596G, 可考慮分紅 1000 個文件處理,每一個文件大約 600M。順序讀取文件,每行按照 hash(url)%1000 的結果將 url 寫入到 1000 個文件中,這個過程是 mapreduce 中的 map。
針對每一個小文件,使用 hashmap 統計每一個 url 出現的次數,並使用堆排序獲得訪問次數最高的前 100 個 url,將每一個文件排序好的 100 個 url 及對應的 count 輸出到 1000 個文件。
最後將這個1000 個文件(此時每一個文件只有 100 行 ) 進行合併排序。
7. 如何設計一個紅包系統來知足春節期間千億級紅包的收發問題?
本題爲開放性問題,無標準答案,主要能夠從如下幾個不一樣的點對不一樣背景的面試人員進行考察:
業務:
面試人員是否對搶紅包的業務場景的需求有足夠的瞭解,若是沒有的話,是否有足夠的溝通能力從面試官那裏獲取須要知足的業務場景的信息(好比金額方面不能有任何差錯;好比對於併發量的要求等等)
底層存儲:
須要存哪些數據?用什麼樣的存儲系統 / 數據庫來落盤數據?數據存儲的格式是怎麼樣的?數據庫的 schema 怎麼設計?底層存儲如何拆分、如何架構致使其能夠處理高併發請求?
緩存:
緩存應該如何設計來提升系統的性能?若是使用分佈式緩存?
同步 v.s. 異步:
全部的操做都須要同步執行嗎?有沒有操做能夠異步執行來減小對於用戶的響應延遲?若是有的話怎麼實現異步操做(好比消息隊列)。
高可用:
上述列出的組件之一若是宕機了怎麼辦?緩存被擊穿了怎麼辦?怎麼保證系統的高可用?系統怎麼 failover?
測試與部署:
如何壓測整個系統?系統如何灰度?如何上線?
八、如何選擇最優索引?
有以下表:create table t(a int, b int, c int);
已知以下三條是這個表最經常使用的三條 query:
select * from t where a = 1 and b = 1;
select * from t where b = 1;
select * from t where b = 1 order by c desc;如下索引哪一個是最優的:
A. idx(a, b)
B. idx(b, a)
C. idx(b, c)
D. idx(a, b, c)
答案是 B
以上僅爲部份內容,原版pdf可在文末領取
有了此書,你無需漫無目的地花大把時間在題海戰術準備上,而是在精準回顧知識點的同時,間接地與技術大牛們作了直觀的溝通,瞭解他們的出題思路與考察要點,用上觸類旁通的技能便可。此外,消化吸取知識點,這對本身技術能力自己就是一種極大的提高。
有段時間沒跟你們分享資源福利了,看了下本身的資料夾,整理了一些我認爲比較好的Python學習資料了。相信這套資料能夠對你進階高級工程師有幫助
學習工具
大廠實戰手冊
自學視頻(部分)
【資料免費領取方式】:點這裏:2020Python高薪實戰學習大合集