2019 Java面試題

来源:https://www.cnblogs.com/marsitman/archive/2018/08/26/9539369.html
-Advertisement-
Play Games

馬上又是一個金九銀十的招聘旺季,小編在這裡給大家整理了一套各大互聯網公司面試都喜歡問的一些問題或者一些出場率很高的面試題,給在校招或者社招路上的你一臂之力。 首先我們需要明白一個事實,招聘的一個很關鍵的因素是在給自己找未來的同事,同級別下要找比自己優秀的人,面試是一個雙向選擇的過程,也是一個將心比心 ...


馬上又是一個金九銀十的招聘旺季,小編在這裡給大家整理了一套各大互聯網公司面試都喜歡問的一些問題或者一些出場率很高的Java面試題,給在校招或者社招路上的你一臂之力。

  • 首先我們需要明白一個事實,招聘的一個很關鍵的因素是在給自己找未來的同事,同級別下要找比自己優秀的人,面試是一個雙向選擇的過程,也是一個將心比心去溝通的過程。
  • 就像我們有的人感覺自己很牛逼,但是拿不到offer,而其他的人菜的一筆,卻可以拿到offer,我們稱之為玄學offer,遇到這種情況大家也不要感覺到有什麼不可描述的心情,一切隨緣即可!

小編這裡可是有Java面試題參考答案的喲,需要各位小伙伴下來逐一學習!
一、開場白
簡單的介紹一下自己的工作經歷與職責,在校或者工作中主要的工作內容,主要負責的內容;(你的信息一清二白的寫在簡歷上,能答出來的最好寫在上面,模棱兩可不是很清楚的最好不要寫,否則會被問的很尷尬)
介紹下自己最滿意的,有技術亮點的項目或平臺,重點介紹下自己負責那部分的技術細節;(主要對自己做過的事情是否有清晰的描述)
二、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的區別?

三、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修飾的靜態方法和非靜態方法有什麼區別?

四、Java Web

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

五、JVM面試題

  • JVM記憶體區域如何劃分?
  • JVM堆中對象是如何創建的?
  • JVM對象的結構?
  • JVM垃圾回收-如何判斷對象是否是垃圾對象?
  • JVM垃圾回收演算法有哪些?
  • JVM垃圾收集器有哪些?
  • JVM記憶體是如何分配的?
  • 從一道面試題分析類的載入過程?
  • JVM雙親委派機制?
  • JVM可以作為GC Root的對象有哪些?
  • 請寫出幾段可以導致記憶體溢出、記憶體泄漏、棧溢出的代碼?
  • 哪些情況會導致Full GC?
  • 頻繁GC問題或記憶體溢出問題,如何定位?

六、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的區別?

七、Spring框架

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

八、SpringMVC框架

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

九、MyBatis框架

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

十、Java高級部分

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

十一、其他

  • 看過哪些源代碼?然後會根據你說的源碼問一些細節的問題?(這裡主要考察面試者是否對技術有鑽研的精神,還是只停留在錶面,還是背了幾道面經,這個對於很多有強迫症的面試官,如果你連源碼都沒看過,基本上是會pass掉的!)
  • 項目中遇到了哪些比較有挑戰性的問題,是如何解決的;(這個很有爭議,一方面是你連一個複雜的問題都解決不了,要你過來乾什麼,還有就是,我的能力牛逼啊,但是公司沒有業務場景讓我展示啊!這個就看你遇到的面試官了,祝你好運!)

到此為止,大致把一些面試官高頻的Java面試題整理了一下,希望對大家有所幫助!其實還有很多,只整理了一部分,後續慢慢補上,敬請期待。。。

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 列表和普通變數有什麼區別 列表是數據類型,普通變數是用來存儲數據的 可以把列表賦值給普通變數 2.存在列表 a = [11, 22, 33], 如何向列表中添加(增)新元素 44 a.append(44) 或者 a.insert(3,44) #索引號為3 3.對列表排序 a = [11,22, ...
  • 題目描述 寫出一個程式,接受一個由字母和數字組成的字元串,和一個字元,然後輸出輸入字元串中含有該字元的個數。不區分大小寫。 輸入描述: 輸入一個有字母和數字以及空格組成的字元串,和一個字元。 輸出描述: 輸出輸入字元串中含有該字元的個數。 輸入 ABCDEF A 輸出 1 #include<iost ...
  • 題目描述 計算字元串最後一個單詞的長度,單詞以空格隔開。 輸入描述: 一行字元串,非空,長度小於5000。 輸出描述: 整數N,最後一個單詞的長度。 示例1 輸入 hello world 輸出 5 #include<iostream> #include<string.h> using namespa ...
  • 前言 最近打算花點時間好好看看spring的源碼,然而現在Spring的源碼經過迭代的版本太多了,比較龐大,看起來比較累,所以準備從最初的版本(interface21)開始入手,僅用於學習,理解其設計思想,後續慢慢研究其每次版本變更的內容。。。 先從interface21的一個典型web工程例子看起 ...
  • 題面 除法表達式有如下的形式: X1/X2/X3.../Xk 其中Xi是正整數且Xi<=1000000000(1<=i<=k,K<=10000) 除法表達式應當按照從左到右的順序求,例如表達式1/2/1/2的值為1/4.但可以在表達式中國入括弧來改變計算順序,例如(1/2)/(1/2)的值為1.現給 ...
  • 前面給大家介紹了IDEA的安裝和基本配置,睡覺前Alan再給大家分享一下使用IDEA創建Java Web並部署訪問。 打開IDEA,File>New>Project,進入Java Enterprise創建一個Web Application項目,選擇使用的JDK 點擊Next 修改一下項目的名稱點擊F ...
  • 一.構建工程 1.引入依賴 2.創建主類 3.配置application.properties 這裡存在 api-a 和 api-b 兩個微服務應用, 當請求http://localhost:port/api-a/helloWorld, 會被路由轉發至 api-a 服務的 /helloWorld 接 ...
  • 網路傳輸模型 基本模型 層次劃分 需要說明的是在網路傳輸層TCP可靠而UDP不可靠 傳輸層說明 說明一: 作為Python開發,咱們都是在應用層的HTTP協議之上進行開發的。 說明二: 網路編程,主要是瞭解我們Python能編寫的最低的層次, 即傳輸層的基本情況。 說明三: HTTP協議是基於TCP ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...