06.20 BAT 完整面試筆記

BAT 完整面試筆記

一面:

  • 給定一個先序序列,重構完全二叉樹,如果是一般二叉樹能不能重構,為什麼?
  • 有三個消息隊列,隨機的向三個隊列插入元素(概率可能不同),如何保證插入和查找的高效?
  • 最長公共子序列算法實現
  • vector 的拷貝,swap 函數交換指針
  • 線程與進程的區別,優缺點,進程內存模型
  • IPC 有哪些,共享內存原理
  • 說一下 LRU cache 思路
  • 賽馬問題,36匹馬,6個賽道,找出最快6匹馬的最少賽馬次數,如果是n匹馬,m個賽道呢?

二面:

  • 虛函數實現機制
  • 內存模型影響因素(內存對齊,多重繼承下的內存模型,菱形問題,虛擬繼承內存模型,虛擬繼承是如何處理的)
  • NRVO 優化,右值引用
  • extern C 作用,為什麼需要它
  • C++ 重載,name manging 機制
  • Epoll 與 Select 區別以及 epoll 優點,為什麼一般情況下 epoll 性能比 select 好,ET 模式與 LT 模式
  • 如何用 epoll 實現高併發,多線程,線程池,線程驚群問題
  • 二叉樹先序遍歷,遞歸,非遞歸,如何用 O(1) 空間實現(morris遍歷)
  • 互斥鎖的實現原理(屏蔽中斷,CAS),讀寫鎖實現

三面:

  • TCP 擁塞控制,滑動窗口協議
  • 虛擬內存機制,二級頁表,TLB 快表,缺頁,swap
  • 操作系統調度算法
  • TCP 如何保證可靠性,四種定時器,time_wait 如何解決,Nagle 算法
  • 一致性算法(raft),一致性哈希

阿里研發工程師完整面經

BAT 完整面試筆記

一面:

  • 自我介紹
  • 做過哪些項目?項目中遇到哪些難點,你是怎麼解決的?簡單登錄系統說一下?分佈式緩存的使用場景?
  • 你實習的時候 JDK 用的那個版本,這個版本有什麼新的特性?
  • G1 回收器和其他回收器有什麼區別?
  • 垃圾回收為什麼會停頓?哪些對象可能作為 GCRoots?
  • 垃圾回收分代收集算法?為什麼會有兩個 Survivor 區?new 一個對象會保存在哪裡?
  • Java 內存模型?volatile關鍵字,使用場景?原子性的理解?先行發生原則?
  • 場景題:現在有三個線程,同時start,用什麼方法可以保證線程執行的順序,線程一執行完線程二執行,線程二執行完線程三執行?
  • 你是怎麼理解線程安全的?HashMap 是線程安全的麼?如果多個線程同時修改 HashMap 時會發生什麼情況?
  • ConcurrentHashMap 底層原理?每個版本的實現上有什麼區別?
  • 靜態代理和動態代理的區別?動態代理是怎麼實現的?
  • 深拷貝和淺拷貝的區別?
  • 你做過 hadoop 的項目,為什麼要用 hadoop?你們處理的文件是什麼格式?寫了幾個 mapper 幾個 reducer?
  • zookeeper 你們用了幾臺,用來幹什麼的?一般情況下都是奇數臺,那麼如果一臺掛了,偶數臺如何實現 master 選舉?zookeeper 的兩種啟動模式?
  • TCP 的首部?TCP 為什麼是可靠的?三次握手四次揮手?
  • Solr 是如何建立索引的?Lucene 的底層原理?
  • 你平時喜歡做什麼?看過哪些書?最近在看什麼書?

二面:

  • 現在在哪裡實習?實習主要做些什麼?
  • 說一下 Java 裡面那你最感興趣的一個部分?
  • 熟悉 Java 的哪些框架?用了 Spring 的哪些東西?Spring 現在最新的版本是多少?
  • 講一下 MVC 設計模式,有什麼框架用到了這個模式?
  • 場景題:一個 Controller 調用兩個 Service,這兩個 Service 又都分別調用兩個 Dao,問其中用到了幾個數據庫連接池的連接?
  • 安全方面:如何防止 SQL 注入?如何防止用戶刪除其他用戶的信息?表單提交可以跨域麼?自己寫的接口如何提交被其他人惡意調用?
  • zookeeper 偶數選舉問題?
  • hadoop 為什麼要將文件分塊並且複製三份,複製兩份不行麼?這樣不浪費空間麼?namenode 腦裂問題?zookeeper 如何管理全局配置文件?你們的 hadoop 項目用到了幾臺機器,每個機器的作用?
  • Servlet 是線程安全的麼?
  • 創建一個對象的詳細過程?其中發生了些什麼?
  • Java NIO 你瞭解麼?講一講你最熟悉的部分?
  • 你在生活中有沒有遇到什麼神奇的事情,可以分享一下嗎?比如灑水車為什麼老是在陰天或者快下雨的時候灑水?還有我和我老婆經常吵,陽臺的花是早上澆好呢,還是晚上澆好呢?
  • 你認為你身邊的同學怎麼樣?如果你正在打遊戲,你想讓同學幫忙帶瓶水,你覺得有多少人會幫你帶?
  • 你還有什麼想問的?

三面(HR面):

  • 7歲一個階段,說一說每個階段對你影響最大的一個人或事?
  • 說一下你大學階段做了些什麼?
  • 你感覺你前兩個面試官怎麼樣?
  • 春招的時候為什麼沒有去 BAT 實習?
  • 你當初準備暑期實習的話,是想學習到些什麼?現在感覺自己有哪些進步?
  • 你還有什麼想問的?

四面(交叉面):

  • 自我介紹
  • 說一下最能代表你技術水平的項目吧?
  • maven 是如何進行依賴管理的,如何解決依賴衝突?
  • maven 的源和插件瞭解哪些?maven 的生命週期?
  • 如何保證分佈式緩存的一致性?分佈式 session 實現?
  • spring 的 bean 的創建時機?依賴注入的時機?
  • 你們的圖片是怎麼存儲的,對應在數據庫中是如何保存圖片信息的?
  • 單點登錄系統的實現?
  • 項目中用到 JDK 的哪些特性?
  • Java8 流式迭代的好處?
  • 多線程如何在多個 CPU 上分佈?線程調度算法有哪些?
  • 線程調度和進程調度的區別?
  • 項目中用到了哪些集合類?
  • 說一下 TreeMap 的實現原理?紅黑樹的性質?紅黑樹遍歷方式有哪些?如果 key 衝突如何解決?setColor() 方法在什麼時候調用?什麼時候會進行旋轉和顏色轉換?
  • 你有什麼想問的?

騰訊研發工程師完整面經

BAT 完整面試筆記

一面:

  • C++ 的 static 關鍵字的作用
  • 內聯函數更普通函數的區別
  • select 跟 epoll 的區別
  • 共享內存的內核實現
  • STL 中的迭代器失效問題
  • 指針,引用區別
  • Linux cpu、內存和網絡相關命令
  • 父子經常 fork 時,打開的文件偏移量是否是相同的
  • Linux 虛擬地址空間
  • TCP 中 time_wait 的危害,三次握手,四次揮手
  • C++ 多態的實現機制
  • vector 跟 list 區別,還有 map 的底層實現
  • extern 關鍵字

二面:

  • 一個數組傳遞到函數,蛻變成指針,求字節數
  • 定義在全局的對象,定義在堆中對象,定義在靜態全局變量對象,定義在棧中的對象,析構函數的析構順序
  • new int[10] 跟 new int[10]() 的區別
  • epoll 相關的問題
  • 讓手寫代碼,求二叉樹的翻轉
  • 問到 epoll 跟 select 實現區別
  • 紅黑樹,普通二叉樹,AVL 樹,完全二叉樹的區別
  • C 語言編寫程序判斷該大小端
  • linux 內核解決驚群問題
  • hash 碰撞,Trie 樹
  • map/set 容器的實現原理
  • 熟悉 Shell嗎?
  • 說說 TCP/UDP 的區別?

三面:

  • 自我介紹
  • 說說自己最熟悉的一部分
  • 如何防止內存洩漏?C++ 11智能指針?
  • 最大的缺點是什麼?

HR面:

  • 問哪裡人什麼的,有沒有女朋友,是否獨生子女,就是閒聊。


分享到:


相關文章: