Java 基礎知識
- 重載和重寫的區別
- String 和 StringBuffer、StringBuilder 的區別是什麼?String 爲什麼是不可變的?
- 自動裝箱與拆箱
- Java 中的異常處理
- 接口和抽象類的區別是什麼
- Object類的常見方法
- 獲取用鍵盤輸入常用的的兩種方法
Java基礎面試專題與答案
Java 集合框架
- Arraylist 與 LinkedList 異同
- ArrayList 與 Vector 區別
- HashMap的底層實現
- HashMap 和 Hashtable 的區別
- HashMap 的長度爲什麼是2的冪次方
- HashMap 多線程操作導致死循環問題
- HashSet 和 HashMap 區別
- ConcurrentHashMap 和 Hashtable 的區別
- ConcurrentHashMap線程安全的具體實現方式/底層具體實現
- 集合框架底層數據結構
集合框架面試專題與答案
由於篇幅限制,就不一一舉例了,太長看下去會很乏味,也會影響閱讀體驗,下面展現將以圖片形式展示。獲取原文件以及更多資源請關注轉發分享後,後臺**私信回覆【面試資料】**獲取原文件領取
面試官在多線程這一部分很可能會問你有沒有在項目中實際使用多線程的經歷。所以,如果你在你的項目中有實際使用Java多線程的經歷 的話,會爲你加分不少哦!
Java多線程
- 說一說自己對於 synchronized 關鍵字的瞭解
- 說說自己是怎麼使用 synchronized 關鍵字,在項目中用到了嗎
- 講一下 synchronized 關鍵字的底層原理
- 說說 JDK1.6 之後的synchronized 關鍵字底層做了哪些優化,可以詳細介紹一下這些優化嗎
- 談談 synchronized和ReenTrantLock 的區別
- 說說 synchronized 關鍵字和 volatile 關鍵字的區別
- 爲什麼要用線程池?
- 實現Runnable接口和Callable接口的區別
- 執行execute()方法和submit()方法的區別是什麼呢?
- 如何創建線程池
- 介紹一下Atomic 原子類
- JUC 包中的原子類是哪4類?
- 講講 AtomicInteger 的使用
- 能不能給我簡單介紹一下 AtomicInteger 類的原理
多線程面試專題與答案
JVM的設計目標是提供一個基於抽象規格描述的計算機模型,爲解釋程序開發人員提供很好的靈活性,同時也確保Java代碼可在符合該規範的任何系統上運行。JVM對其實現的某些方面給出了具體的定義,特別是對Java可執行代碼,即字節碼(Bytecode)的格式給出了明確的規格。這一規格包括操作碼和操作數的語法和數值、標識符的數值表示方式、以及Java類文件中的Java對象、常量緩衝池在JVM的存儲映象。這些定義爲JVM解釋器開發人員提供了所需的信息和開發環境。Java的設計者希望給開發人員以隨心所欲使用Java的自由。
JVM
- 內存模型以及分區,需要詳細到每個區放什麼。
- GC 收集器有哪些?CMS 收集器與 G1 收集器的特點。
- Minor GC 與 Full GC 分別在什麼時候發生?
- 堆裏面的分區:Eden,survival (from+ to),老年代,各自的特點。
- 簡述 java 垃圾回收機制?
- java 中垃圾收集的方法有哪些?
- 類加載器雙親委派模型機制?什麼是類加載器,類加載器有哪些?
- 簡述 java 內存分配與回收策率以及 Minor GC 和Major GC
網絡協議
- TCP、UDP 協議的區別
- 在瀏覽器中輸入url地址 ->> 顯示主頁的過程
- 各種協議與HTTP協議之間的關係
- HTTP長連接、短連接
- TCP 三次握手和四次揮手(面試常客)
網絡協議面試專題與答案
MySQL是一種關係數據庫管理系統,關係數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
MySQL所使用的 SQL 語言是用於訪問數據庫的最常用標準化語言。MySQL 軟件採用了雙授權政策,分爲社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作爲網站數據庫。
MySQL
- Mysql 的技術特點是什麼?
- MYSQL 數據表在什麼情況下容易損壞?
- 說說自己對於 MySQL 常見的兩種存儲引擎:MyISAM與InnoDB的理解
- 數據庫索引瞭解嗎?
- 能說下MySQL 的基本存儲結構嗎?
- Mysql如何爲表字段添加索引?
- 對於大表的常見優化手段說一下
- mysql 裏記錄貨幣用什麼字段類型好
- 當MySQL單表記錄數過大時,數據庫的CRUD性能會明顯下降,有哪些常見的優化措施?
MySQL面試專題與答案
簡單來說 redis 就是一個數據庫,不過與傳統數據庫不同的是 redis 的數據是存在內存中的,所以存寫速度非常快,因此 redis 被廣泛應用於緩存方向。另外,redis 也經常用來做分佈式鎖。redis 提供了多種數據類型來支持不同的業務場景。除此之外,redis 支持事務 、持久化、LUA腳本、LRU驅動事件、多種集羣方案。
Redis
- 爲什麼要用 redis /爲什麼要用緩存?
- 爲什麼要用 redis 而不用 map/guava 做緩存?
- redis 和 memcached 的區別?
- 上述 Redis 分佈式鎖的缺點?
- redis 常見數據結構以及使用場景分析
- redis 內存淘汰機制(MySQL裏有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據?)
- redis 持久化機制(怎麼保證 redis 掛掉之後再重啓數據可以進行恢復)?
- 緩存雪崩和緩存穿透問題解決方案?
- 如何解決 Redis 的併發競爭 Key 問題?
- 如何保證緩存與數據庫雙寫時的數據一致性?
Redis面試專題與答案
Spring一般是不可避免的,如果你的簡歷上註明了你會Spring Boot或者Spring Cloud的話,那麼面試官也可能會同時問你這兩個技術,比如他可能會問你springboot和spring的區別。 所以,一定要謹慎對待寫在簡歷上的東西,一定要對簡歷上的東西非常熟悉。
另外,AOP實現原理、動態代理和靜態代理、Spring IOC的初始化過程、IOC原理、自己怎麼實現一個IOC容器? 這些東西都是經常會被問到的。
Spring
- Spring Bean 的作用域?
- 如何用基於 Java 配置的方式配置 Spring?
- 請說下 Spring Bean 的生命週期?
- Spring Bean 的作用域之間有什麼區別?
- 請舉例說明如何在 Spring 中注入一個 Java Collection?
- Spring 框架中有哪些不同類型的事件?
- Spring 框架中都用到了哪些設計模式?
- 開發中主要使用 Spring 的什麼技術 ?
Spring面試專題與答案
“RabbitMQ?”“Kafka?”“RocketMQ?”…在日常學習與開發過程中,我們常常聽到消息隊列這個關鍵詞。這也是面試經常被問到的
消息隊列
- 什麼是消息隊列?
- 爲什麼要用消息隊列?丟消息怎麼辦?
- 如何解決消息重複問題?
- ActiveMQ 中的消息重發時間間隔和重發次數嗎?
- ActiveMQ 服務器宕機怎麼辦?
- ActiveMQ 如何調優?
- Basic.Reject 的用法是什麼?
- 爲什麼不應該對所有的 message 都使用持久化機制?
- 爲什麼 heavy RPC 的使用場景下不建議採用 disk node ?
消息隊列面試專題與答案
Dubbo 是由阿里開源,後來加入了 Apache 。正式由於 Dubbo 的出現,才使得越來越多的公司開始使用以及接受分佈式架構,所以面試時也是經常被問到的
Dubbo
- 什麼是 Dubbo?
- 什麼是 RPC?RPC原理是什麼?
- 爲什麼要用 Dubbo?
- 什麼是分佈式?爲什麼要分佈式?
- 先來解釋一下什麼是負載均衡?
- Dubbo 集羣提供了哪些負載均衡策略?
- Dubbo 支持哪些協議,每種協議的應用場景,優缺點?
- Dubbo 的集羣容錯方案有哪些?
- Dubbo 和 Spring Cloud 的關係?
Dubbo面試專題與答案
數據結構比較常問的就是:二叉樹、紅黑樹(很可能讓你手繪一個紅黑樹出來哦!)、二叉查找樹(BST)、平衡二叉樹(Self-balancing binary search tree)、B-樹,B+樹與B*樹的優缺點比較、 LSM 樹這些知識點。
數據結構很重要,而且學起來也相對要難一些。建議學習數據結構一定要循序漸進的來,一步一個腳印的走好。一定要搞懂原理,最好自己能用代碼實現一遍。
數據結構
- 什麼是隊列
- 說下什麼是隊列的種類
- 什麼是 Set?說下HashSet 和 TreeSet 底層數據結構
- 什麼是List?List的常見實現類是什麼?
數據結構面試專題與答案
在Linux操作系統中,所有被操作系統管理的資源,例如網絡接口卡、磁盤驅動器、打印機、輸入輸出設備、普通文件或是目錄都被看作是一個文件。
也就是說在LINUX系統中有一個重要的概念:一切都是文件。其實這是UNIX哲學的一個體現,而Linux是重寫UNIX而來,所以這個概念也就傳承了下來。在UNIX系統中,把一切資源都看作是文件,包括硬件設備。UNIX系統把每個硬件都看成是一個文件,通常稱爲設備文件,這樣用戶就可以用讀寫文件的方式實現對硬件的訪問。
** Linux**
- 簡單介紹一下 Linux 文件系統?
- 一些常見的 Linux 命令瞭解嗎?
- Linux 中主要有哪幾種內核鎖?
- Linux 中的用戶模式和內核模式是什麼含意?
- 用戶進程間通信主要哪幾種方式?
- 通過夥伴系統申請內核內存的函數有哪些?
- 模塊程序能否使用可鏈接的庫函數?
- Linux 通過什麼方式實現系統調用?
- Linux 軟中斷和工作隊列的作用是什麼?