可可簡歷網

位置:首頁 > 面試 > 面試經驗

北京快手大資料研發技術面經


北京快手大資料研發技術面經

昨天面的, 下午2點到6點多, 全程見了2位HR和4位研發, 其中2位研發是比較高階的leader. 目前等HR回覆中

自己之前在小公司做了2年大資料, 人手少, 哪裡需要哪裡搬, 所以這次被考察的面也有點廣

題目做了一下簡單記錄, 會有遺漏, 並且沒有按順序哈. 個人覺得大概回答下來80%多吧

Java

1. HashMap的底層資料結構, 為什麼JDK8要用紅黑樹. ConcurrentHashMap的底層資料結構, 如何保證執行緒安全

2. synchronized關鍵字的本質, 作用是什麼. volatile關鍵字的作用, 哪些情況下會用它

3. Java執行緒的幾大狀態及轉換. 執行緒可重入是什麼概念, 可重入鎖呢

4. 如果要設計一個執行緒池, 需要考慮哪些要素. Executors工廠類能建立哪些執行緒池, 用過哪些

5. 講一講熟悉的設計模式. 單例模式及工廠模式的實現方法. 裝飾器模式是怎麼一回事

6. 講一講熟悉的JVM GC演算法, 常用的垃圾收集器. CMS有什麼優缺點

7. 一個Java應用上線後, 關注哪些效能指標. 如果響應時間過長或者CPU佔用過高, 如何排查, 用哪些工具或命令

大資料元件

1. 是否自己搭建的叢集, 叢集節點數及配置

2. Hadoop的XML配置檔案有哪些, 改過哪些引數, 分別代表什麼含義

3. HDFS NameNode高可用如何實現, 需要哪些角色. YARN有哪些元件, 如何分配資源

4. Spark RDD有哪些特點, 寬依賴和窄依賴. RDD的快取級別

5. DAGScheduler及stage如何劃分. 給一個比較複雜的RDD lineage, 手動劃分stage和task

6. Spark Streaming以一定的時間視窗統計PV/UV, 如果視窗內資料量暴漲, 如何保證穩定性. 如果會延遲上報, 如何保證實時性

7. Kafka與Spark Streaming整合, 如何保證exactly once語義

8. Spark/Hive中大表join小表的優化方法. 資料傾斜和shuffle調優方法

9. 調整過Hive的哪些引數, 用什麼執行引擎. Hive UDF怎麼寫, 寫過哪些. HiveQL是怎樣解析成MR/Spark job的

10. HBase的資料在HDFS上是怎樣儲存的, 寫入資料的流程是怎樣的. 為什麼HBase適合寫多讀少業務

11. HBase的一個region由哪些東西組成. RegionServer宕機之後如何感知, 如何遷移資料

12. 為什麼選用Kudu作為HBase和Hive的折中方案, 它有什麼特點. 如果不用Kudu, HBase的二級索引能解決問題嗎

13. Impala的查詢及執行與Hive有什麼不同 [PS. 我之前的專案裡用了Kudu+Impala]

資料倉庫設計

1. 之前業務中的資料倉庫是如何分層的, 怎樣建模, 主題如何劃分

2. 從ODS到DW層的ETL, 做了哪些工作

3. 1~3NF的含義. 維度建模中星型模型和雪花模型的不同. 代理鍵是什麼, 支架表是什麼

4. 如何處理緩慢變化維. 怎樣建設拉鍊表, 如何在拉鍊表中恢復最新資料

演算法和應用題

1. 最長公共子序列(LCS)問題. 動態規劃

2. 找出二叉樹中任意兩個節點的最低公共根節點, 如果樹是BST呢. 深度優先搜尋+二分查詢樹性質

3. 10億條64B長的URL, 限定1G記憶體, 做計數, 如果要TopN的話呢. 雜湊分桶+堆排序時間複雜度

4. 使用者行為日誌有UID和時間戳, 設定一個session間隔. 離線及線上地計算使用者的平均session長度

5. 之前做過標籤推薦系統, 詳細講一下架構和自己設計的演算法. 演算法流程是行為評分+指數衰減+線性歸一化+餘弦相似度/皮爾遜相關性+TF-IDF打壓