java面試題

1、開場白
簡單的介紹一下本身的工做經歷與職責,在校或者工做中主要的工做內容,主要負責的內容;(你的信息一清二白的寫在簡歷上,能答出來的最好寫在上面,模棱兩可不是很清楚的最好不要寫,不然會被問的很尷尬)
介紹下本身最滿意的,有技術亮點的項目或平臺,重點介紹下本身負責那部分的技術細節;(主要對本身作過的事情是否有清晰的描述)
2、Java基礎面試

  • 什麼是字符串常量池?
  • String爲何是不可變的?
  • String s = new String("xyz");究竟產生了幾個對象,從JVM角度談談?
  • String拼接字符串效率低,你知道緣由嗎?
  • 你真的瞭解String的常見API嗎?
  • Java中的subString()真的會引發內存泄露麼?
  • 淺析Java中的final關鍵字?
  • 淺析Java中的static關鍵字?
  • 你對Java中的volatile關鍵字瞭解多少?
  • i++是線程安全的嗎?如何解決線程安全性?
  • 從字節碼角度深度解析 i++ 和 ++i 線程安全性原理?
  • 請談談什麼是CAS?
  • 從源碼角度看看ArrayList的實現原理?
  • 手寫LinkedList的實現,完全搞清楚什麼是鏈表?
  • Java中方法參數的傳遞規則?
  • Java中throw和throws的區別是什麼?
  • 重載和重寫的區別?
  • 手寫ArrayList的實現,在筆試中如何過關斬將?
  • finally語句塊你踩過哪些坑?
  • 爲何重寫equals方法需同時重寫hashCode方法?
  • equals() 與 == 的區別?
  • StringBuffer和StringBuilder的區別,從源碼角度分析?
  • 你知道HashMap的數據結構嗎?
  • 爲什麼HashMap的數組長度必定是2的次冪?
  • HashMap什麼時候擴容以及它的擴容機制?
  • HashMap的key通常用字符串,能用其餘對象嗎?
  • HashMap的key和value都能爲null麼?若是key能爲null,那麼它是怎麼樣查找值的?
  • HashMap是線程安全的嗎?如何實現線程安全?
  • 從源碼角度分析HashSet實現原理?
  • HashTable與HashMap的實現原理有什麼不一樣?
  • String方法intern() 你真的會用嗎?
  • 什麼是自動拆裝箱?
  • String.valueOf和Integer.toString的區別?

3、Java多線程算法

  • 線程的生命週期包括哪幾個階段?
  • 多線程有幾種實現方式?
  • 請談談什麼是進程,什麼是線程?
  • 啓動線程是用start()方法仍是run()方法?
  • 說說線程安全問題,什麼實現線程安全,如何實現線程安全?
  • sychronized和Lock的區別?
  • sleep()和wait()的區別?
  • 深刻分析ThreadLocal的實現原理?
  • 你看過AbstractQueuedSynchronizer源碼閱讀嗎,請說說實現原理?
  • 談談對synchronized的偏向鎖、輕量級鎖、重量級鎖的理解?
  • 經過三種方式實現生產者消費者模式?
  • JVM層面分析sychronized如何保證線程安全的?
  • JDK層面分析sychronized如何保證線程安全的?
  • 如何寫一個線程安全的單例?
  • 經過AQS實現一個自定義的Lock?
  • ThreadLocal何時會出現OOM的狀況?爲何?
  • 爲何wait, notify 和 notifyAll這些方法不在thread類裏面?
  • 你真的理解CountDownLatch與CyclicBarrier使用場景嗎?
  • 出現死鎖,如何排查定位問題?
  • notify和notifyAll的區別?
  • 線程池啓動線程submit和execute有什麼不一樣?
  • SimpleDateFormat是線程安全的嗎?如何解決?
  • 請談談ConcurrentHashmap底層實現原理?
  • 使用synchronized修飾靜態方法和非靜態方法有什麼區別?
  • 當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其方法?
  • 線程池的原理,爲何要建立線程池?建立線程池的方式?
  • 建立線程池有哪幾個核心參數? 如何合理配置線程池的大小?
  • synchronized修飾的靜態方法和非靜態方法有什麼區別?

4、Java Web數據庫

  • 什麼是Servlet,Servlet生命週期方法?
  • 什麼Session和Cookie,它們之間有什麼聯繫?
  • JSP的八個隱含對象有哪些?
  • JSP的四個域對象的做用範圍?
  • Post和Get請求的區別?
  • 轉發和重定向有什麼區別?
  • JSP自定義標籤,如何實現循環打印功能?
  • Http1.0和Http1.1的區別是什麼?
  • 攔截器與過濾器的區別?

5、JVM面試題設計模式

  • JVM內存區域如何劃分?
  • JVM堆中對象是如何建立的?
  • JVM對象的結構?
  • JVM垃圾回收-如何判斷對象是不是垃圾對象?
  • JVM垃圾回收算法有哪些?
  • JVM垃圾收集器有哪些?
  • JVM內存是如何分配的?
  • 從一道面試題分析類的加載過程?
  • JVM雙親委派機制?
  • JVM能夠做爲GC Root的對象有哪些?
  • 請寫出幾段能夠致使內存溢出、內存泄漏、棧溢出的代碼?
  • 哪些狀況會致使Full GC?
  • 頻繁GC問題或內存溢出問題,如何定位?

6、SQL性能優化數組

  • 數據庫三範式是什麼?
  • 數據庫的事務、ACID及隔離級別?
  • 不考慮事務的隔離性,容易產生哪三種狀況?
  • 數據庫鏈接池原理?
  • 什麼是B-Tree?
  • 什麼是B+Tree?
  • MySQL數據庫索引結構?
  • 什麼是索引?什麼條件適合創建索引?什麼條件不適合創建索引?
  • 索引失效的緣由有哪些?如何優化避免索引失效?
  • MySQL如何啓動慢查詢日誌?
  • MySQL如何使用show Profile進行SQL分析?
  • 一條執行慢的SQL如何進行優化,如何經過Explain+SQL分析性能?
  • 什麼是行鎖、表鎖、讀鎖、寫鎖,說說它們各自的特性?
  • 什麼狀況下行鎖變表鎖?
  • 什麼狀況下會出現間隙鎖?
  • 談談你對MySQL的in和exists用法的理解?
  • MySQL的數據庫引擎有哪些,如何肯定在項目中要是用的存儲引擎?
  • count(*)、count(列名)和count(1)的區別?
  • union和union all的區別?

7、Spring框架緩存

  • Spring的IOC和AOP機制?
  • Spring中Autowired和Resource關鍵字的區別?
  • 依賴注入的方式有幾種,各是什麼?
  • Spring容器對Bean組件是如何管理的?
  • Spring容器如何建立?
  • Spring事務分類?
  • Spring事務的傳播特性?
  • Spring事務的隔離級別?
  • Spring的通知類型有哪些?

8、SpringMVC框架安全

  • SpringMVC完整工做流程,熟讀源碼流程?
  • SpringMVC如何處理JSON數據?
  • SpringMVC攔截器原理,如何自定義攔截器?
  • SpringMVC如何將請求映射定位到方法上面?結合源碼闡述?
  • SpringMVC常見註解有哪些?
  • SpringMVC容器和Spring容器的區別?
  • SpringMVC的控制器是否是單例模式,若是是,有什麼問題,怎麼解決?

9、MyBatis框架性能優化

  • MyBatis中#和$的區別?
  • MyBatis一級緩存原理以及失效狀況?
  • MyBatis二級緩存的使用?
  • MyBatis攔截器原理?
  • 看過MyBatis源碼嗎,請說說它的工做流程?

10、Java高級部分數據結構

  • Dubbo負載均衡策略?
  • Dubbo中Zookeeper作註冊中心,若是註冊中心集羣都掛掉,發佈者和訂閱者之間還能通訊麼?
  • Dubbo完整的一次調用鏈路介紹?
  • 請說說SpringBoot自動裝配原理?
  • 有用過SpringCloud嗎,請說說SpringCloud和Dubbo有什麼不同?
  • 什麼是WebService,如何基於WebService開發接口?
  • 談談項目中分佈式事務應用場景?
  • 使用Redis如何實現分佈式鎖?
  • 請談談單點登陸原理?
  • Tomcat如何優化?
  • 後臺系統怎麼防止請求重複提交?
  • Linux常見命令有哪些?
  • 請說說什麼是Maven的依賴、繼承以及聚合?
  • Git暫存區和工做區的區別?
  • Git如何建立、回退以及撤銷版本?
  • 常見的設計模式有哪些?

11、其餘多線程

    • 看過哪些源代碼?而後會根據你說的源碼問一些細節的問題?(這裏主要考察面試者是否對技術有鑽研的精神,仍是隻停留在表面,仍是背了幾道面經,這個對於不少有強迫症的面試官,若是你連源碼都沒看過,基本上是會pass掉的!)
    • 項目中遇到了哪些比較有挑戰性的問題,是如何解決的;(這個頗有爭議,一方面是你連一個複雜的問題都解決不了,要你過來幹什麼,還有就是,個人能力牛逼啊,可是公司沒有業務場景讓我展現啊!這個就看你遇到的面試官了,祝你好運!)
相關文章
相關標籤/搜索