1. 程式人生 > >大資料工程師需要的東西

大資料工程師需要的東西

JAVA

  • 介紹下REST設計風格
  • reentrantLock、synchronized 兩種鎖對比,在哪些業務上用過鎖
  • 執行緒安全,concurrentLinkedQueue(非阻塞佇列) LinkedBlockingQueue(阻塞佇列),用過多執行緒併發嗎
  • 介紹下RPC,用過Thrift API嗎?
  • 設計模式有哪幾種,分別介紹2-3個
  • JVM優化,垃圾回收策略

HIVE(可以不掌握)

  • hive關聯查詢,如何解決資料傾斜問題?
  • hive與關係型資料庫mysql等有什麼異同點?
  • Order by,Sort by, Distribute by, Cluster by 分別介紹下特點
  • hive的null是怎麼儲存的?如何實現資料抽樣?
  • hive內部表和外部表的區別?
  • 你們的叢集規模?怎麼把資料匯入資料庫?處理過哪種資料,執行job大概用多長時間?
  • 做專案遇到哪些問題,怎麼解決的?
  • 有寫過UDF函式, 用於處理哪個業務?

HDFS/MapReduce

  • 搭建過叢集?遇到過哪些問題?safemode是什麼
  • hdfs一些命令,比如合併檔案,上傳下載,檢查檔案目錄是否存在
  • MapReduce的shuffle工作原理,MapReduce的工作流程,介紹下JobTracker和TashTracker
  • hadoop的幾種檔案格式,介紹下用過哪些和特點
  • MapReduce效能優化,有什麼方面可以做?(設定InputSplit大小減少map任務數量、資料傾斜、shuffle調優、壓縮演算法、更換排程器等)
  • flume如何工作的,source/channel/sink

HBASE

  • 讀寫用哪些API?RowKey的設計原則,Scan和Get實現批量,一個表適合建多少個列族,用過HBase儲存什麼資料
  • 合併HFile,minor和major有什麼區別?
  • HBase儲存用的是什麼結構,(LSM樹)並簡單介紹下
  • 介紹下hbase協處理器,如何實現過濾?
  • 如何預分割槽,還有怎麼生成HFile

Storm

  • storm的工作原理,如何實現ack?
  • storm如何在bolt實現批量提交資料並在關閉任務時不丟資料?
  • storm反壓原理

ElasticSearch(Solr)

  • 使用過ES儲存資料嗎?分片數可以動態調整嗎?ES搜尋時間排序資料的工作流程
  • 分詞有用過嗎,試過ES + HBase 提高索引速度?
  • ES調優,記憶體,bluk api, cache

CouchBase 、 Redis 、MongoDB

  • 在哪些業務上運用過
  • 用過Redis Geo功能嗎
  • redis cluster slot概念
  • 遇到過哪些問題?

Active MQ、Rabbit MQ 、Kafka

  • kafka的工作原理,Producer/Broker/Consumer
  • kafka的儲存策略
  • 一些shell api, 怎麼檢視consumer offset,增加topic的partitions

MySQL PostgreSQL

  • InnoDB/MyISAM儲存索引異同點, 分別適用哪些場景
  • 設計索引的原則,提高查詢速度
  • 怎麼去定位查詢速度慢的SQL並如何優化,分割槽功能有哪幾種模式
  • PostgreSQL的幾種索引GIST/SP-GIST/GIN/B-TREE 分別介紹下

Spark(Scala)

  • spark任務提交過程
  • 用過spark streaming嗎?運用在哪些方面

Python

  • 平時用過哪些模組、lib包,用過annaconda嗎?