1. 程式人生 > >「不能說的祕密」BAT資深面試官整理Java架構面試題

「不能說的祕密」BAT資深面試官整理Java架構面試題

面試是一個老生常談的話題,這裡裡有這份大佬整理有關於Java的面試題,發出來分享給大家。


這些題目是網友去百度、小米、樂視、美團、58、獵豹、360、新浪、搜狐等一線網際網路公司面試被問到的題目。熟悉本文中列出的知識點會大大增加通過前兩輪技術面試的機率。


網上的都是按照公司劃分的,想找具體某一方面的知識點有點不好找,我這裡就根據知識點分門別類的整理了一下,想看哪一塊可以快速找到,希望可以幫助大家,祝大家求職順利。


Java面試題

熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你 熟悉原始碼實現原理,甚至要你知道有哪些不足,怎麼改進,還有一些java有關的一些演算法,設計模式等等。




 


給大家推薦一個程式設計師學習交流群:702895049。群裡有分享的視訊,還有思維導圖

群公告有視訊,都是乾貨的,你可以下載來看。主要分享分散式架構、高可擴充套件、高效能、高併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分散式專案實戰學習架構師視訊。


關注+轉發後,私信關鍵詞 【架構】即可獲取!


一:Java基礎面試知識點


● java中==和equals和hashcode的區別?


● int、char、long各佔多少位元組數?


● int與integer的區別?


● 談談對java多型的理解?


● String、StringBuffer、StringBuilder區別?


● 什麼是內部類?內部類的作用


● 抽象類和介面區別?


● 抽象類的意義?


● 抽象類與介面的應用場景?


● 抽象類是否可以沒有方法和屬性?


● 介面的意義


● 泛型中extends和super的區別


● 父類的靜態方法能否被子類重寫


● 程序和執行緒的區別


● final,finally,finalize的區別


● 序列化的方式


● Serializable 和Parcelable 的區別


● 靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?


● 靜態內部類的設計意圖


● 成員內部類、靜態內部類、區域性內部類和匿名內部類的理解,以及專案中的應用。


● 談談對kotlin的理解


● 閉包和區域性內部類的區別


● String 轉換成 Integer的方式及原理


 


二:Java深入原始碼級的面試題


● 哪些情況下的物件會被垃圾回收機制處理掉?


● 講一下常見編碼方式?


● utf-8編碼中的中文佔幾個位元組;int型幾個位元組?


● 靜態代理和動態代理的區別,什麼場景使用?


● Java的異常體系


● 談談你對解析與分派的認識。


● 修改物件A的equals方法的簽名,那麼使用


HashMap存放這個物件例項的時候,會呼叫哪個equals方法?


● Java中實現多型的機制是什麼?


● 如何將一個Java物件序列化到檔案裡?


● 說說你對Java反射的理解


● 說說你對Java註解的理解


● 說說你對依賴注入的理解


● 說一下泛型原理,並舉例說明


● Java中String的瞭解


● String為什麼要設計成不可變的?


● Object類的equal和hashCode方法重寫,為什麼?


三:資料結構


● 常用資料結構簡介


● 併發集合瞭解哪些?


● 列舉java的集合以及集合之間的繼承關係


● 集合類以及集合框架


● 容器類介紹以及之間的區別(容器類估計很多人沒聽這個詞,Java容器主要可以劃分為4個部分:List列表、Set集合、Map對映、工具類(Iterator迭代器、Enumeration列舉類、Arrays和Collections)


● List,Set,Map的區別


● List和Map的實現方式以及儲存方式


● HashMap的實現原理


● HashMap資料結構?


● HashMap原始碼理解


● HashMap如何put資料(從HashMap原始碼角度講解)?


● HashMap怎麼手寫實現?


● ConcurrentHashMap的實現原理


● ArrayMap和HashMap的對比


● HashTable實現原理


● TreeMap具體實現


● HashMap和HashTable的區別


● HashMap與HashSet的區別


● HashSet與HashMap怎麼判斷集合元素重複?


● 集合Set實現Hash怎麼防止碰撞


● ArrayList和LinkedList的區別,以及應用場景


● 陣列和連結串列的區別


● 二叉樹的深度優先遍歷和廣度優先遍歷的具體實現


● 堆的結構


● 堆和樹的區別


● 堆和棧在記憶體中的區別是什麼(解答提示:可以從資料結構方面以及實際實現方面兩個方面去回答)?


● 什麼是深拷貝和淺拷貝


● 手寫連結串列逆序程式碼


● 講一下對樹,B+樹的理解


● 講一下對圖的理解


● 判斷單鏈表成環與否?


● 連結串列翻轉(即:翻轉一個單項鍊表)


● 合併多個單有序連結串列(假設都是遞增的)


 


四:執行緒、多執行緒和執行緒池


● 開啟執行緒的三種方式?


● 執行緒和程序的區別?


● 為什麼要有執行緒,而不是僅僅用程序?


● run()和start()方法區別


● 如何控制某個方法允許併發訪問執行緒的個數?


● 在Java中wait和seelp方法的不同;


● 談談wait/notify關鍵字的理解


● 什麼導致執行緒阻塞?


● 執行緒如何關閉?


● 講一下java中的同步的方法


● 資料一致性如何保證?


● 如何保證執行緒安全?


● 如何實現執行緒同步?


● 兩個程序同時要求寫或者讀,能不能實現?如何防止程序的同步?


● 執行緒間操作List


● Java中物件的生命週期


● Synchronized用法


● synchronize的原理


● 談談對Synchronized關鍵字,類鎖,方法鎖,重入鎖的理解


● static synchronized 方法的多執行緒訪問和作用


● 同一個類裡面兩個synchronized方法,兩個執行緒同時訪問的問題


● volatile的原理


● 談談volatile關鍵字的用法


● 談談volatile關鍵字的作用


● 談談NIO的理解


● synchronized 和volatile 關鍵字的區別


● synchronized與Lock的區別


● ReentrantLock 、synchronized和volatile比較


● ReentrantLock的內部實現


● lock原理


● 死鎖的四個必要條件?


● 怎麼避免死鎖?


● 物件鎖和類鎖是否會互相影響?


● 什麼是執行緒池,如何使用?


● Java的併發、多執行緒、執行緒模型


● 談談對多執行緒的理解


● 多執行緒有什麼要注意的問題?


● 談談你對併發程式設計的理解並舉例說明


● 談談你對多執行緒同步機制的理解?


● 如何保證多執行緒讀寫檔案的安全?


● 多執行緒斷點續傳原理


● 斷點續傳的實現


給大家推薦一個程式設計師學習交流群:702895049。群裡有分享的視訊,還有思維導圖

群公告有視訊,都是乾貨的,你可以下載來看。主要分享分散式架構、高可擴充套件、高效能、高併發、效能優化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分散式專案實戰學習架構師視訊。


五:併發程式設計有關知識點


這個是一般Android開發用的少的,所以建議多去看看。 平時Android開發中對併發程式設計可以做得比較少,Thread這個類經常會用到,但是我們想提升自己的話,一定不能停留在表面,,我們也應該去了解一下java的關於執行緒相關的原始碼級別的東西。可以去看看《深入理解Java虛擬機器:JVM高階特性與最佳實踐》以及《實戰Java高併發程式設計》這兩本書。

--------------------- 

作者:Java架構上升階梯 

來源:CSDN 

原文:https://blog.csdn.net/hjycjy132477/article/details/84330607 

版權宣告:本文為博主原創文章,轉載請附上博文連結!