大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

本書內容涵蓋:

Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技術棧面試題。

現在是時候給你展示我近 5 年從各種面試中收集來的 133 個問題了。我確定你在自己的面試中見過很多這些問題,很多問題你也能正確回答。

大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

包含超多面試問題和答案!

1、什麼是 Mybatis?

  • Mybatis 是一個半 ORM(對象關係映射)框架,它內部封裝了 JDBC,開發時只需要關注 SQL 語句本身。不需要花費精力去處理加載驅動、創建連接、創建statement 等繁雜的過程。程序員直接編寫原生態 sql,可以嚴格控制 sql 執行性能,靈活度高
  • MyBatis 可以使用 XML 或註解來配置和映射原生信息,將 POJO 映射成數據庫中的記錄,避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。
  • 通過 xml 文件或註解的方式將要執行的各種 statement 配置起來,並通過java 對象和 statement 中 sql 的動態參數進行映射生成最終執行的 sql 語句。最後由 mybatis 框架執行 sql 並將結果映射為 java 對象並返回。(從執行 sql 到返回 result 的過程)。

2、Mybaits 的優點:

  • 基於 SQL 語句編程,相當靈活,不會對應用程序或者數據庫的現有設計造成任何影響,SQL 寫在 XML 裡,解除 sql 與程序代碼的耦合,便於統一管理;提供 XML標籤,支持編寫動態 SQL 語句,並可重用。
  • 與 JDBC 相比,減少了 50%以上的代碼量,消除了 JDBC 大量冗餘的代碼,不需要手動開關連接;
  • 很好的與各種數據庫兼容(因為 MyBatis 使用 JDBC 來連接數據庫,所以只要JDBC 支持的數據庫 MyBatis 都支持)。
  • 能夠與 Spring 很好的集成;提供映射標籤,支持對象與數據庫的 ORM 字段關係映射;提供對象關係映射標籤,支持對象關係組件維護。

3、MyBatis 框架的缺點:

  • SQL 語句的編寫工作量較大,尤其當字段多、關聯表多時,對開發人員編寫SQL 語句的功底有一定要求。SQL 語句依賴於數據庫,導致數據庫移植性差,不能隨意更換數據庫。

4、MyBatis 框架適用場合:

  • MyBatis 專注於 SQL 本身,是一個足夠靈活的 DAO 層解決方案。對性能的要求很高,或者需求變化較多的項目,如互聯網項目,MyBatis 將是不錯的選擇。

5、當實體類中的屬性名和表中的字段名不一樣 ,怎麼辦 ?

  • 第 1 種: 通過在查詢的 sql 語句中定義字段名的別名,讓字段名的別名和實體類

的屬性名一致。

大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

  • 第 2 種: 通過 <resultmap> 來映射字段名和實體類屬性名的一一對應的關係。/<resultmap>
大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

文中會有大量的代碼示例!

5、如何獲取自動生成的(主)鍵值?

  • insert 方法總是返回一個 int 值 ,這個值代表的是插入的行數。如果採用自增長策略,自動生成的鍵值在 insert 方法執行完後可以被設置到傳入的參數對象中。

示例:

大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

6、UML 中有哪些常用的圖?

  • UML 定義了多種圖形化的符號來描述軟件系統部分或全部的靜態結構和動態結構,包括:用例圖(use case diagram)、類圖(class diagram)、時序(sequencediagram)、協作圖(collaboration diagram)、狀態圖(statechartdiagram)、活動圖(activity diagram)、構件圖(component diagram)、部署圖(deploymentdiagram)等。
大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

7、SOA 和微服務架構之間的主要區別是什麼?

SOA 和微服務之間的主要區別如下:

大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

8、try{}裡有一個 return 語句,那麼緊跟在這個 try 後的finally{}裡的代碼會不會被執行,什麼時候被執行,在 return前還是後?

會執行,在方法返回調用者前執行。

  • 注意:在 finally 中改變返回值的做法是不好的,因為如果存在 finally 代碼塊,try中的 return 語句不會立馬返回調用者。
  • 而是記錄下返回值待 finally 代碼塊執行完畢之後再向調用者返回其值,然後如果在 finally 中修改了返回值,就會返回修改後的值。
  • 顯然,在 finally 中返回或者修改返回值會對程序造成很大的困擾,C#中直接用編譯錯誤的方式來阻止程序員幹這種齷齪的事情。
  • Java 中也可以通過提升編譯器的語法檢查級別來產生警告或錯誤,Eclipse 中可以在如圖所示的地方進行設置,強烈建議將此項設置為編譯錯誤。
大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

485頁超詳細面試解答合集,下面截一部分圖給大家看看

大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

大廠Java面試題彙總,我成功拿到15K+offer,這些面試題你會嗎?

篇幅原因,這一份PDF已經給大夥兒整理好了,點贊+關注後私信我“面試題”,即刻獲取我提供的免費學習資料,祝你成功拿到大廠offer!


分享到:


相關文章: