我敢打賭!這絕對是10月整理的最全的《高頻Java面試題集合》

2020-10-13 12:01:19

週末,天氣放晴,玩的還挺開心,

過後,我像往常一樣坐在窗臺,看著電腦「發呆」,就不給大家分享技術乾貨了。

給大家整理一份面試清單總結吧,都是一些基礎的題,

但是IT公司就喜歡考這些基礎的東西,所以為了能進大公司就~當複習期末考吧。

花了不少時間整理,在整理過程中也學到了很多東西,請大家認真對待每一題!

ç¨åºå表æå,å«è¯´è¯,åµå°æå代ç äº åæåçç§æ

面試題模組介紹:

 

 

一、Java 基礎

  • JDK 和 JRE 有什麼區別?
  • == 和 equals 的區別是什麼?
  • 兩個物件的 hashCode()相同,則 equals()也一定為 true,對嗎?
  • final 在 java 中有什麼作用?
  • java 中的 Math.round(-1.5) 等於多少?
  • String 屬於基礎的資料型別嗎?
  • java 中操作字串都有哪些類?它們之間有什麼區別?
  • String str="i"與 String str=new String("i")一樣嗎?
  • 如何將字串反轉?
  • String 類的常用方法都有那些?
  • 抽象類必須要有抽象方法嗎?
  • 普通類和抽象類有哪些區別?
  • 抽象類能使用 final 修飾嗎?
  • 介面和抽象類有什麼區別?
  • java 中 IO 流分為幾種?
  • BIO、NIO、AIO 有什麼區別?
  • Files的常用方法都有哪些?

二、容器

  • java 容器都有哪些?
  • Collection 和 Collections 有什麼區別?
  • List、Set、Map 之間的區別是什麼?
  • HashMap 和 Hashtable 有什麼區別?
  • 如何決定使用 HashMap 還是 TreeMap?
  • 說一下 HashMap 的實現原理?
  • 說一下 HashSet 的實現原理?
  • ArrayList 和 LinkedList 的區別是什麼?
  • 如何實現陣列和 List 之間的轉換?
  • ArrayList 和 Vector 的區別是什麼?
  • Array 和 ArrayList 有何區別?
  • 在 Queue 中 poll()和 remove()有什麼區別?
  • 哪些集合類是執行緒安全的?
  • 迭代器 Iterator 是什麼?
  • Iterator 怎麼使用?有什麼特點?
  • Iterator 和 ListIterator 有什麼區別?
  • 怎麼確保一個集合不能被修改?

三、多執行緒

  • 並行和並行有什麼區別?
  • 執行緒和程序的區別?
  • 守護執行緒是什麼?
  • 建立執行緒有哪幾種方式?
  • 說一下 runnable 和 callable 有什麼區別?
  • 執行緒有哪些狀態?
  • sleep() 和 wait() 有什麼區別?
  • notify()和 notifyAll()有什麼區別?
  • 執行緒的 run()和 start()有什麼區別?
  • 建立執行緒池有哪幾種方式?
  • 執行緒池都有哪些狀態?
  • 執行緒池中 submit()和 execute()方法有什麼區別?
  • 在 java 程式中怎麼保證多執行緒的執行安全?
  • 多執行緒鎖的升級原理是什麼?
  • 什麼是死鎖?
  • 怎麼防止死鎖?
  • ThreadLocal 是什麼?有哪些使用場景?
  • 說一下 synchronized 底層實現原理?
  • synchronized 和 volatile 的區別是什麼?
  • synchronized 和 Lock 有什麼區別?
  • synchronized 和 ReentrantLock 區別是什麼?
  • 說一下 atomic 的原理?

四、反射

  • 什麼是反射?
  • 什麼是 java 序列化?什麼情況下需要序列化?
  • 動態代理是什麼?有哪些應用?
  • 怎麼實現動態代理?

五、物件拷貝

  • 為什麼要使用克隆?
  • 如何實現物件克隆?
  • 深拷貝和淺拷貝區別是什麼?

六、Java Web

  • jsp 和 servlet 有什麼區別?
  • jsp 有哪些內建物件?作用分別是什麼?
  • 說一下 jsp 的 4 種作用域?
  • session 和 cookie 有什麼區別?
  • 說一下 session 的工作原理?
  • 如果使用者端禁止 cookie 能實現 session 還能用嗎?
  • spring mvc 和 struts 的區別是什麼?
  • 如何避免 sql 注入?
  • 什麼是 XSS 攻擊,如何避免?
  • 什麼是 CSRF 攻擊,如何避免?

七、異常

  • hrow 和 throws 的區別?
  • final、finally、finalize 有什麼區別?
  • try-catch-finally 中哪個部分可以省略?
  • try-catch-finally 中,如果 catch 中 return 了,finally 還會執行嗎?
  • 常見的異常類有哪些?

八、網路

  • http 響應碼 301 和 302 代表的是什麼?有什麼區別?
  • forward 和 redirect 的區別?
  • 簡述 tcp 和 udp的區別?
  • tcp 為什麼要三次握手,兩次不行嗎?為什麼?
  • 說一下 tcp 粘包是怎麼產生的?
  • OSI 的七層模型都有哪些?
  • get 和 post 請求有哪些區別?
  • 如何實現跨域?
  • 說一下 JSONP 實現原理?

九、設計模式

  • 說一下你熟悉的設計模式?
  • 簡單工廠和抽象工廠有什麼區別?

十、Spring/Spring MVC

  • 什麼是spring?
  • Spring的倆大核心概念
  • Spring框架的設計目標,設計理念,和核心是什麼
  • Spring由哪些模組組成?
  • Spring 框架中都用到了哪些設計模式?
  • 使用 Spring 有哪些方式?
  • spring 支援幾種 bean 的作用域?
  • spring 自動裝配 bean 有哪些方式?
  • spring 事務實現方式有哪些?
  • 什麼是Spring MVC?簡單介紹下你對Spring MVC的理解?
  • Spring MVC的主要元件?
  • 什麼是Spring MVC框架的控制器?
  • MVC是什麼?MVC設計模式的好處有哪些
  • Spring MVC常用的註解有哪些?
  • Spring MVC與Struts2區別
  • Spring MVC怎麼樣設定重定向和轉發的?
  • Spring MVC的例外處理?
  • 什麼是Spring MVC框架的控制器?
  • 說一下 spring mvc 執行流程?
  • spring mvc 有哪些元件?
  • @RequestMapping 的作用是什麼
  • @Autowired 的作用是什麼?

十一、Spring Boot/Spring Cloud

  • 什麼是 spring boot?
  • 為什麼要用 spring boot?
  • spring boot 核心組態檔是什麼?
  • spring boot 組態檔有哪幾種型別?它們有什麼區別?
  • spring boot 有哪些方式可以實現熱部署?
  • jpa 和 hibernate 有什麼區別?
  • 什麼是 spring cloud?
  • spring cloud 斷路器的作用是什麼?
  • spring cloud 的核心元件有哪些?

十二、Hibernate

  • 為什麼要使用 hibernate?
  • 什麼是 ORM 框架?
  • hibernate 中如何在控制檯檢視列印的 sql 語句?
  • hibernate 有幾種查詢方式?
  • hibernate 實體類可以被定義為 final 嗎?
  • 在 hibernate 中使用 Integer 和 int 做對映有什麼區別?
  • hibernate 是如何工作的?
  • get()和 load()的區別?
  • 說一下 hibernate 的快取機制?
  • hibernate 物件有哪些狀態?
  • 在 hibernate 中 getCurrentSession 和 openSession 的區別是什麼?
  • hibernate 實體類必須要有無參建構函式嗎?為什麼?

十三、Mybatis

  • MyBatis是什麼?
  • Mybatis優缺點
  • Hibernate 和 MyBatis 的區別
  • 為什麼說Mybatis是半自動ORM對映工具?它與全自動的區別在哪裡?
  • 傳統JDBC開發存在什麼問題?
  • JDBC程式設計有哪些不足之處,MyBatis是如何解決的?
  • MyBatis和Hibernate的適用場景?
  • MyBatis程式設計步驟是什麼樣的?
  • 請說說MyBatis的工作原理
  • MyBatis的功能架構是怎樣的
  • MyBatis的框架架構設計是怎麼樣的
  • 什麼是DBMS
  • Mybatis都有哪些Executor執行器?它們之間的區別是什麼?
  • Mybatis中如何指定使用哪一種Executor執行器?
  • Mybatis是否支援延遲載入?如果支援,它的實現原理是什麼?
  • Mybatis如何執行批次操作
  • 當實體類中的屬性名和表中的欄位名不一樣 ,怎麼辦
  • Mapper 編寫有哪幾種方式?
  • 什麼是MyBatis的介面繫結?有哪些實現方式?
  • 使用MyBatis的mapper介面呼叫時有哪些要求?
  • Mybatis是如何將sql執行結果封裝為目標物件並返回的?都有哪些對映形式?
  • 簡述Mybatis的Xml對映檔案和Mybatis內部資料結構之間的對映關係?
  • Xml對映檔案中,除了常見的select|insert|updae|delete標籤之外,還有哪些標籤?
  • Mybatis是否可以對映Enum列舉類?
  • 簡述Mybatis的外掛執行原理,以及如何編寫一個外掛。
  • Mybatis的一級、二級快取

十四、RabbitMQ

  • 什麼是MQ
  • MQ的優點
  • 解耦、非同步、削峰是什麼?。
  • 訊息佇列有什麼缺點
  • 你們公司生產環境用的是什麼訊息中介軟體?
  • Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什麼優缺點?
  • MQ 有哪些常見問題?如何解決這些問題?
  • 什麼是RabbitMQ?
  • rabbitmq 的使用場景
  • RabbitMQ的工作模式
  • 如何保證RabbitMQ訊息的順序性?
  • 訊息如何分發?
  • 訊息基於什麼傳輸?
  • 如何保證訊息不被重複消費?或者說,如何保證訊息消費時的冪等性?
  • 如何確保訊息正確地傳送至 RabbitMQ? 如何確保訊息接收方消費了訊息?
  • 如何保證RabbitMQ訊息的可靠傳輸?
  • 為什麼不應該對所有的 message 都使用持久化機制?
  • 如何保證高可用的?RabbitMQ 的叢集
  • 如何解決訊息佇列的延時以及過期失效問題?訊息佇列滿了以後該怎麼處理?有幾百萬訊息持續積壓幾小時,怎麼辦?
  • 設計MQ思路?

十五、Kafka

  • kafka 可以脫離 zookeeper 單獨使用嗎?為什麼?
  • kafka 有幾種資料保留的策略?
  • kafka 同時設定了 7 天和 10G 清除資料,到第五天的時候訊息達到了 10G,這個時候 kafka 將如何處理?
  • 什麼情況會導致 kafka 執行變慢?
  • 使用 kafka 叢集需要注意什麼?

十六、Zookeeper

  • zookeeper 是什麼?
  • ZooKeeper 提供了什麼?
  • Zookeeper 怎麼保證主從節點的狀態同步?
  • zookeeper 是如何保證事務的順序一致性的?
  • Zookeeper Watcher 機制 – 資料變更通知
  • 叢集中為什麼要有主節點?
  • 叢集中有 3 臺伺服器,其中一個節點宕機,這個時候 zookeeper 還可以使用嗎?
  • 說一下 zookeeper 的通知機制?
  • Watcher 特性總結
  • 使用者端註冊 Watcher 實現
  • 伺服器端處理 Watcher 實現
  • Zookeeper 下 Server 工作狀態
  • zookeeper 是如何保證事務的順序一致性的?
  • 分散式叢集中為什麼會有 Master主節點?
  • zookeeper 負載均衡和 nginx 負載均衡區別
  • Zookeeper 有哪幾種幾種部署模式?
  • 叢集支援動態新增機器嗎?
  • Zookeeper 對節點的 watch 監聽通知是永久的嗎?為什麼不是永久的?
  • Zookeeper 的 java 使用者端都有哪些?
  • chubby 是什麼,和 zookeeper 比你怎麼看?
  • Zookeeper 都有哪些功能?
  • 說一下 Zookeeper 的通知機制?
  • Zookeeper 和 Dubbo 的關係?

十七、MySql

  • 為什麼要使用資料庫?
  • 什麼是MySQL?
  • MySql, Oracle,Sql Service的區別
  • mysql有關許可權的表都有哪幾個
  • MySQL的binlog有有幾種錄入格式?分別有什麼區別?
  • 資料庫經常使用的函數?
  • mysql有哪些資料型別?
  • MySQL儲存引擎MyISAM與InnoDB區別
  • MyISAM索引與InnoDB索引的區別?
  • 什麼是索引?索引有哪些優缺點?
  • 怎麼建立索引的,有什麼好處,有哪些分類
  • 索引有哪幾種型別?
  • 索引的資料結構(b樹,hash)
  • 索引演演算法有哪些?
  • 建立索引的三種方式
  • 百萬級別或以上的資料如何刪除
  • B樹和B+樹的區別
  • 事物的四大特性(ACID)介紹一下?
  • 什麼是事務的隔離級別?MySQL的預設隔離級別是什麼?
  • 從鎖的類別上分MySQL都有哪些鎖呢?
  • MySQL中InnoDB引擎的行鎖是怎麼實現的?
  • 什麼是儲存過程?有哪些優缺點?
  • 什麼是觸發器?觸發器的使用場景有哪些?
  • SQL語句主要分為哪幾類
  • 怎麼優化SQL查詢語句嗎
  • 如何定位及優化SQL語句的效能問題?建立的索引有沒有被使用到?或者說怎麼才可以知道這條語句執行很慢的原因?
  • SQL的生命週期?
  • MySQL資料庫cpu飆升到500%的話他怎麼處理?
  • 備份計劃,mysqldump以及xtranbackup的實現原理

十八、Redis

  • 什麼是Redis?
  • Redis有哪些優缺點?
  • 使用redis有哪些好處?
  • 為什麼要用 Redis / 為什麼要用快取
  • 為什麼要用 Redis 而不用 map/guava 做快取?
  • Redis為什麼這麼快
  • Redis有哪些資料型別
  • Redis的應用場景
  • Redis 的持久化機制是什麼?各自的優缺點?
  • 如何選擇合適的持久化方式
  • Redis持久化資料和快取怎麼做擴容?
  • Redis的過期鍵的刪除策略
  • Redis key的過期時間和永久有效分別怎麼設定?
  • 我們知道通過expire來設定key 的過期時間,那麼對過期的資料怎麼處理呢?
  • MySQL裡有2000w資料,redis中只存20w的資料,如何保證redis中的資料都是熱點資料
  • Redis主要消耗什麼物理資源?
  • Redis的記憶體用完了會發生什麼?
  • Redis如何做記憶體優化?
  • Redis事務的概念
  • Redis事務支援隔離性嗎
  • redis 叢集模式的工作原理能說一下麼?
  • 在叢集模式下,redis 的 key 是如何定址的?
  • 分散式定址都有哪些演演算法?
  • 瞭解一致性 hash 演演算法嗎?
  • Redis叢集的主從複製模型是怎樣的?
  • 生產環境中的 redis 是怎麼部署的?
  • Redis叢集會有寫操作丟失嗎?為什麼?
  • Redis是單執行緒的,如何提高多核CPU的利用率?
  • 你知道有哪些Redis分割區實現方案?
  • 如何解決 Redis 的並行競爭 Key 問題
  • 分散式Redis是前期做還是後期規模上來了再做好?為什麼?
  • Redis和Redisson有什麼關係?

十九、JVM

  • 我們開發人員編寫的Java程式碼是怎麼讓電腦認識的
  • Jdk和Jre和JVM的區別
  • 說一下 JVM由那些部分組成,執行流程是什麼?
  • 說一下 JVM 執行時資料區
  • 詳細的介紹下程式計數器?(重點理解)
  • 詳細介紹下Java虛擬機器器棧?(重點理解
  • 你能給我詳細的介紹Java堆嗎?(重點理解)
  • 能不能解釋一下本地方法棧?
  • 能不能解釋一下方法區(重點理解)
  • 什麼是JVM位元組碼執行引擎
  • 你聽過直接記憶體嗎?
  • 知道垃圾收集系統嗎?
  • 堆疊的區別是什麼?
  • 深拷貝和淺拷貝
  • Java會存在記憶體漏失嗎?請說明為什麼?
  • JVM 中都有哪些參照型別?
  • 怎麼判斷物件是否可以被回收?
  • 物件什麼時候可以被垃圾器回收
  • JVM 垃圾回收演演算法有哪些?
  • JVM中的永久代中會發生垃圾回收嗎
  • 說一下 JVM 有哪些垃圾回收器?
  • 說一下 JVM 調優的工具?

俗話說,好學者臨池學書,不過網路時代,對於大多數的我們來說,我倒是覺得學習意識的覺醒很重要,這是開始學習的轉折點,比如看到對自己方向發展有用的資訊,先收藏一波是一波,比如如果你覺得我這篇文章ok,先點贊收藏一波。這樣,等真的沉下心來學習,不至於被找資料分散了心神。慢慢來,先從點贊收藏做起,加油吧!

好啦,由於文章篇幅限制,面試題答案詳解我就不在這裡展示出來了,如果你需要這份完整版的面試題答案詳解資料,點選這裡資料領取:戳這裡,戳這裡,暗號:CSDN

另外,給大家安排了一波學習面試資料:

 

 

以上就是本文的全部內容,希望對大家的面試有所幫助,祝大家早日升職加薪迎娶白富美走上人生巔峰!

資料領取:戳這裡,戳這裡,暗號:CSDN

喜歡文章請點個關注,三連~~

在這裡插入圖片描述