1. 程式人生 > 其它 >攜程面經(一面二面)——資料開發工程師實習生

攜程面經(一面二面)——資料開發工程師實習生

攜程面試

一面(20220513):

  • 自我介紹
  • 專案介紹
  • 專案遇到的困難
  • yarn機制
    • 三個主要的元件:
      • ResourceManager:整個系統只有一個,用於負責資源的排程
        • 包含兩個主要元件:
          • 定時呼叫器(Scheduler):給任務分配資源
          • 應用管理器(ApplicationManager):監控、跟蹤程式狀態
      • ApplicationMaster
      • NodeManager:負責容器的資源管理
    • 使用者提交資源申請(YARN程式)--->資源管理器找到一個節點管理器,啟動容器,執行application master程序--->資源管理器分配資源(如果能在本地完成任務,則直接完成然後返回;如果不能完成,則需要向資源管理器請求更多的節點管理器然後執行容器執行任務)--->申請到新的節點管理器,啟動容器執行應用程式
    • 任務排程器問題:
      • FIFO:沒啥說的,先進先出,先來的執行完了後面才能執行
      • 容量排程器(大小任務分開):
        • 分配多個佇列,每個佇列固定容量(需要配置),內部使用FIFO排程,佇列執行並行執行
      • 公平排程器(可搶佔資源——需要設定條件,比如何時能搶佔,或者搶佔等待時間):
        • 分配多個佇列,每個佇列可以指定資源大小,不指定則均勻分配,佇列內則是均勻分配資源(共享記憶體)
        • 可以配置佇列執行程式數量,(超出數量的則會等待前面任務完成再申請資源)
  • 專案資料庫設計
  • 關於評論資料庫優化的問題
  • mysql遞迴問題
    • mysql8有一個with recursive語法可以實現遞迴
    • mysql8以下可以使用子查詢或者建立函式
  • k8s
  • 設計模式

二面(20220517)

  • 自我介紹(自己提到的在看mapreduce的論文)
  • hadoop底層原理
    • 答的最底層是hdfs,然後上面有yarn管理資源分配排程在上面是mapreduce和hbase之類的應用層
  • mapreduce流程
    • 照著論文的流程答了一遍
      • 先是資料分塊
      • 然後分配master結點
      • 將分塊傳送給map函式,map函式進行處理
        • 這裡打斷提了個問題,問hadoop預設分塊大小,我答的64MB,因該是128MB,64是GFS的分塊大小(論文裡),hadoop系統上顯示的塊大小為128MB
        • 然後接著這個問題問了一個分塊大小和什麼有關,答的和節點數有關,map任務數量應該遠大於所有工作結點數量,這樣才能保證效率
      • map函式全部處理完會寫入本地檔案,然後給master發訊號,master接到訊號後給reduce發訊號通知reduce來讀取資料進行第二步reduce操作
      • reduce將map結果檔案全部讀取到本地,在本地進行排序,然後輸送給reduce函式
      • reduce處理完畢之後追加結果到結果檔案
      • reduce結束,給master發訊號,等所有任務結束,master返回使用者程式碼
  • 問爬蟲專案細節
    • 問用沒用框架,如何實現的
    • 大致說了一下流程,特別問了一下驗證碼如何處理的(答的手動處理,因為沒有時間,沒有使用人工智慧演算法)
  • 是否還知道其他大資料生態
    • 說了離線相關的,實時的只知道名字,不知道細節
    • 問了下hive的原理和作用,以及什麼時候使用
  • 未來規劃
  • 學習方式
  • 是否懂spark flink

等結果出來在更新
這段時間要去補個專案了,不然沒相關專案只知道基礎面試官都沒啥問的