小碼農也有大目標,九月最新BATJ大廠Java面試題解析彙總 前言: 阿里篇: 騰訊篇: 百度篇: 京東篇: 面試題整理: 總結:

前言:

相信大多數的 Java 開發程序員或多或少經歷過阿里的面試,也清楚阿里 Java面試是有一定難度的,小編經歷過多次阿里的面試,有滿意的也有備受打擊的。因此,小編把自己這麼多次面試經歷來個彙總,正值金九銀十之際,希望對大家有所幫助。

阿里篇:

由於篇幅原因答案就不寫了,都總結成筆記了,需要完整文檔和答案的可以點此處鏈接獲取https://docs.qq.com/doc/DS0ljdVdNYm1CWWN3

  • HashMap的數據結構——引出Java7跟Java8的區別
  • 在什麼情況下會做一個鏈表到紅黑樹的轉換
  • 除了數據結構之外,Java8跟Java7在HashMap上還有什麼不同
  • 擴容的過程,在什麼情況下會擴容
  • 擴容機制中的capacity初始值爲什麼是16,可不可以自定義成15,爲什麼一定要是2的指數次方
  • 簡單介紹一下hash算法,它的核心性能,或者說判斷一個hash算法好壞的指標是什麼,indexFor()函數的實現
  • HashMap爲了解決什麼問題?——引出哈希碰撞
  • 介紹ConcurrentHashMap的數據結構
  • ConcurrentHashMap可以支持多少併發線程
  • ConcurrentHashMap屬於JOC下的一個類,對JOC這個包的瞭解
  • 是否用過synchronized,之前是否碰到過併發問題,怎麼處理
  • 在Java技術棧方面,有沒有比較擅長或者深入瞭解的點,是否從源碼上看過一些東西
    Netty原理介紹下。
  • 瞭解過NIO,BIO,AIO麼?介紹下異同,代碼中如何使用?
  • 分佈式鎖用過麼?用什麼函數?什麼使用場景?
  • 能介紹下垃圾回收機制麼?
  • redis的數據結構介紹下。項目中用過哪些?什麼場景
  • 冪等性是什麼?如何保障?
  • 交易系統中的數據一致性咋保障?

數據庫

  • 對MySQL瞭解多少——引出必問知識點(劃重點!!!事務和索引)
  • MySQL用的隔離級別是什麼,這個隔離級別下會出現什麼問題——引出數據庫的併發問題
  • MySQL使用這種隔離級別時,是如何解決幻讀問題的(引申,理解其他併發問題的解決原理)
  • MySQL的調優機制,主要是哪些方面的調優——引出索引
  • 在MySQL的InnoDB這個存儲引擎下,聚集索引(或者聚簇索引)和非聚集索引這兩個概念
  • MySQL中的索引是用什麼數據結構存儲的——此處應該引出B+樹
  • 爲什麼通過索引查詢速度會更快一些——此處應該引出二叉樹算法

二輪:

  • 自我介紹
  • 項目中的mongoDB使用場景是啥?如何部署的?怎麼保證高可用性?
  • JVM的內存結構能介紹下麼?
  • CMS和G1的優缺點?什麼時候發生FULL GC?什麼時候stop the world!
  • 什麼樣的對象能當根節點?
  • 一個類,兩個函數,一讀一寫,寫函數加synchronized,讀函數還用加麼?voliate關鍵字啥作用?
  • 數據庫設計時,主鍵咋設?自增好還是非自增好?爲啥?
  • mysql的鎖類型介紹下
  • 線上CPU 100%了怎麼查?
  • 寫個算法,給一個數字,一個單調數組中,方法返回數組中第一個大於給定數字的下標,如果沒有,返回-1。

三輪:

第三輪就是比較深度的問題了,都是結合業務談談自己的程序思想,如果沒有一定的技術和開發經驗這個是回答不完整的,本人就是倒在了這一關。

  • 如何實現一個高效的單向鏈表逆序輸出?
  • 已知sqrt(2)約等於1.414,要求不用數學庫,求sqrt(2)精確到小數點後10位
  • 給定一個二叉搜索樹(BST),找到樹中第 K 小的節點
  • LRU緩存機制
  • 關於epoll和select的區別,以下哪些說法是正確的
  • 從innodb的索引結構分析,爲什麼索引的 key 長度不能太長
  • 給定一個鏈表,刪除鏈表的倒數第N個節點,並且返回鏈表的頭結點
  • 如果讓你設計一個通用的、支持各種數據庫秒級備份和恢復的系統,你會如何設計
  • 如果讓你來設計一個支持數據庫、NOSQL 和大數據之間數據實時流動的數據流及處理的系統,你會考慮哪些問題?如何設計?
  • 給定一個整數數組和一個整數,返回兩個數組的索引,這兩個索引指向的數字的加和等於指定的整數。需要最優的算法,分析算法的空間和時間複雜度
  • 假如給你一個新產品,你將從哪些方面來保障它的質量?
  • 請評估一下程序的執行結果?

騰訊篇:

Java基礎

  • JAVA中的幾種基本數據類型是什麼,各自佔用多少字節。
  • String類能被繼承嗎,爲什麼。
  • String,Stringbuffer,StringBuilder的區別。
  • ArrayList和LinkedList有什麼區別。
  • 講講類的實例化順序,比如父類靜態數據,構造函數,字段,子類靜態數據,構造函數,字段,當new的時候,他們的執行順序。
  • 用過哪些Map類,都有什麼區別,HashMap是線程安全的嗎,併發下使用的Map是什麼,他們內部原理分別是什麼,比如存儲方式,hashcode,擴容,默認容量等。
  • JAVA8的ConcurrentHashMap爲什麼放棄了分段鎖,有什麼問題嗎,如果你來設計,你如何設計。
  • 有沒有有順序的Map實現類,如果有,他們是怎麼保證有序的。
  • 抽象類和接口的區別,類可以繼承多個類麼,接口可以繼承多個接口麼,類可以實現多個接口麼。
  • 繼承和聚合的區別在哪。
  • IO模型有哪些,講講你理解的nio ,他和bio,aio的區別是啥,談談reactor模型。
  • 反射的原理,反射創建類實例的三種方式是什麼。
  • 反射中,Class.forName和ClassLoader區別 。
  • 描述動態代理的幾種實現方式,分別說出相應的優缺點。
  • 動態代理與cglib實現的區別。
  • 爲什麼CGlib方式可以對接口實現代理。
  • final的用途。
  • 寫出三種單例模式實現 。
  • Java中的HashSet內部是如何工作的。
  • 什麼是序列化,怎麼序列化,爲什麼序列化,反序列化會遇到什麼問題,如何解決。

JVM

  • 什麼情況下會發生棧內存溢出。
  • JVM的內存結構,Eden和Survivor比例。
  • JVM內存爲什麼要分成新生代,老年代,持久代。新生代中爲什麼要分爲Eden和Survivor。
  • JVM中一次完整的GC流程是怎樣的,對象如何晉升到老年代,說說你知道的幾種主要的JVM參數。
  • 你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms和G1,包括原理,流程,優缺點。
  • 垃圾回收算法的實現原理。
  • 當出現了內存溢出,你怎麼排錯。
  • 簡單說說你瞭解的類加載器,可以打破雙親委派麼,怎麼打破。
  • g1和cms區別,吞吐量優先和響應優先的垃圾收集器選擇。
  • 怎麼打出線程棧信息。

開源框架

  • 簡單講講tomcat結構,以及其類加載器流程,線程模型等。
  • tomcat如何調優,涉及哪些參數 。
  • 講講Spring加載流程。
  • Spring AOP的實現原理。
  • 講講Spring事務的傳播屬性。
  • Spring如何管理事務的。
  • 說說你對Spring的理解,非單例注入的原理?它的生命週期?循環注入的原理,aop的實現原理,說說aop中的幾個術語,它們是怎麼相互工作的。
  • Springmvc 中DispatcherServlet初始化過程。
  • netty的線程模型,netty如何基於reactor模型上實現的。
  • netty的通訊協議是什麼樣的。
  • springmvc用到的註解,作用是什麼,原理。
  • springboot啓動機制

百度篇:

  • 自我介紹以及項目介紹
  • spring-cloud是否瞭解,spring-boot是瞭解,講一講bean的生命週期
  • hashmap-1.8後的改進,hashmap爲什麼是線程不安全的
  • 如何做到線程安全,concurrenthashmap是怎麼實現的
  • 用到哪些的設計模式
  • ThreadLocal用過嗎
  • 類的加載機制
  • JVM-內存模型
  • 垃圾回收
  • redis源碼有讀過嗎
  • 介紹你做的項目和其中的難點?
  • 反射的作用是什麼?
  • 數據倉庫,多線程和併發工具等?
  • 私有云,docker和k8s等?
  • 瞭解哪些中間件,dubbo,rocketmq,mycat等?
  • dubbo中的rpc如何實現?
  • 自己實現rpc應該怎麼做?
  • dubbo的服務註冊與發現?
  • 給你一個有序整數數組,數組中的數可以是正數、負數、零,請實現一個函數,這個函數返回一個整數:返回這個數組所有數的平方值中有多少種不同的取值。

京東篇:

  • 一般 sql 注入怎麼發現觸點的,從源碼闡述 sqlmap 如何測試注入點的。
  • masscan 掃描端口時靠什麼檢測,爲什麼這麼快? 請詳述
  • 你寫過哪些小工具,你爲你使用過的工具做過什麼修改
  • 如何提高採用 python 編寫的掃描速度,談談對 GIL 鎖的瞭解
  • 你覺得你發現的那個漏洞影響比較大常見的 web 漏洞有哪些.
  • 有沒有玩過硬件安全,研究程度如何
  • 反爬蟲,如果是你如何進行反爬蟲,如何繞過反爬措施。使用無頭瀏覽器被檢測到了,如何繞過
  • nmap 掃描如何進行掃描。發包與協議,握手和不握手,哪些協議握手,哪些不握手
  • 如何不直接接觸目標服務器探測對方端口是否開放
  • 有沒有自己編寫過 yara 掃描模塊,如果要解決掃描{k1:v1, k2:v2, k3:v3} ,保證同時在k1 中的 v1 裏出現特定值,k2 中出現 v2 特定值,以及 k3,v3。怎麼實現
  • xss 什麼原理,如何自己實現
  • 一個 beef 類似的 xss 平臺
  • 既然這樣實現,面臨的跨域如何解決?
  • ip 頻率限制, ip 信譽度模型?
  • SCTP 協議是什麼?如何使用 SCTP 優化網絡?

面試題整理:

總結:

互聯網大廠比較喜歡的人才特點:對技術有熱情,強硬的技術基礎實力;主動,善於團隊協作,善於總結思考。無論是哪家公司,都很重視高併發高可用技術,重視基礎,所以千萬別小看任何知識。面試是一個雙向選擇的過程,不要抱着畏懼的心態去面試,不利於自己的發揮。同時看中的應該不止薪資,還要看你是不是真的喜歡這家公司,是不是能真的得到鍛鍊。

需要獲得完整面試答案的朋友可直接點此處鏈接獲取https://docs.qq.com/doc/DS0ljdVdNYm1CWWN3

本人還整理收藏了20年多家公司面試知識點以及各種技術點整理 下面有部分截圖希望能對大家有所幫助,都能拿到自己心儀的offer。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章