月薪20k的java面試題他來了

1.場景描述

最近有朋友私信,說網上的面試資料有點散,還有些過時的,問老王能否幫忙整理下,老王晚上剛好有空,就給梳理了下,分享給大家。

2.解決方案

2.1 說明

(1)面試的題目多數是從網上找的,老王過濾梳理了下,把一些不常用的或者知道就行的過濾掉了,又加了一些老王自己的,大家面試前背背,更加容易通過「月薪20k」的工作吧。

(2)有關springboot和springcloud的問題就不多說,老王有這兩個系列的部落格,可以看下,免費的,就挑了兩三個題目,有問題也請關注老王的公眾號,直接溝通。

(3)面試題僅僅是基礎,其實大廠或者有點要求的公司,一般都是直接聊,主要問實際項目經驗,面試題作為輔助,一般不會讓直接做題,假如有,可以考慮接下來是否有面試的必要。

2.2 開始正題

1、maven、springboot、springcloud之間的關係

(1) maven是springboot的基礎,springboot項目本身就是maven項目。在maven項目中使用springboot的多個starter加幾個約定,就能成為springboot項目了。

(2)springboot是springcloud的基礎,springcloud本身是springboot項目。

(3)關係:maven->springboot->springcloud

maven是springboot的基礎,springboot是springcloud的基礎,maven不依賴於springboot,springboot不依賴與springcloud。

2、 nacos與eureka區別

(1)springcloud eureka是註冊中心,負責微服務的註冊與發現,起到承上啟下的作用,在微服務架構中相當於人體的 大腦,很重要,nacos是阿里巴巴出的,功能類似eureka,區別不再啰嗦了。

(2)nacos的部署方式與springcloud eureka不太一樣,euraka是需要創建springboot項目,然後將euraka服務端通過gav的方式載入進來,然後部署項目。

(3)nacos是直接從阿里巴巴nacos的官網下載jar包,啟動服務。

3、描述一下JVM載入class文件的原理機制?

答:JVM中類的裝載是由類載入器(ClassLoader)和它的子類來實現的,Java中的類載入器是一個重要的Java運行時系統組件,它負責在運行時查找和裝入類文件中的類。類的載入是指把類的.class文件中的數據讀入到記憶體中,通常是創建一個位元組數組讀入.class文件

4、java 中操作字元串都有哪些類?它們之間有什麼區別?

操作字元串的類有:String、StringBuffer、StringBuilder。

String 和 StringBuffer、StringBuilder 的區別在於 String 聲明的是不可變的對象,每次操作都會生成新的 String 對象,然後將指針指向新的 String 對象,而 StringBuffer、StringBuilder 可以在原有對象的基礎上進行操作,所以在經常改變字元串內容的情況下最好不要使用 String。

StringBuffer 和 StringBuilder 最大的區別在於,StringBuffer 是執行緒安全的,而 StringBuilder 是非執行緒安全的,但 StringBuilder 的性能卻高於 StringBuffer,所以在單執行緒環境下推薦使用 StringBuilder,多執行緒環境下推薦使用 StringBuffer。

5. BIO、NIO、AIO 有什麼區別?

  • BIO:Block IO 同步阻塞式 IO,就是我們平常使用的傳統 IO,它的特點是模式簡單使用方便,並發處理能力低。
  • NIO:New IO 同步非阻塞 IO,是傳統 IO 的升級,客戶端和伺服器端通過 Channel(通道)通訊,實現了多路復用。
  • AIO:Asynchronous IO 是 NIO 的升級,也叫 NIO2,實現了非同步非堵塞 IO ,非同步 IO 的操作基於事件和回調機制。

6. 解釋一下什麼是 ioc?

​ IOC是Inversion of Control的縮寫,多數書籍翻譯成「控制反轉」,其實叫「依賴注入」更加合適。

​ 軟體系統在沒有引入IOC容器之前,對象A依賴於對象B,那麼對象A在初始化或者運行到某一點的時候,自己必須主動去創建對象B或者使用已經創建的對象B。無論是創建還是使用對象B,控制權都在自己手上。

​ 軟體系統在引入IOC容器之後,這種情形就完全改變了,由於IOC容器的加入,對象A與對象B之間失去了直接聯繫,所以,當對象A運行到需要對象B的時候,IOC容器會主動創建一個對象B注入到對象A需要的地方。

​ 通過前後的對比,我們不難看出來:對象A獲得依賴對象B的過程,由主動行為變為了被動行為,控制權顛倒過來了,這就是「控制反轉」這個名稱的由來。

說明:

有點多,小100個面試題,建議面試的話,可以背背,這樣心裡有點底,老王直接放網盤上了。

鏈接://pan.baidu.com/s/1bvzJYPQGnC28WfO_dmzJAg 
提取碼:rm55

歡迎關注原創微信公眾號「軟體老王」,分享一些軟體技術、軟體行業和好玩的事,裡面還有免費分享的java書籍、百萬張高清可商用圖片等。