Java面試前須要作足各方面的準備工做,確定都會瀏覽大量的面試題,本人也不例外,這是一些最新面試題,分享給你們。java
**mysql
Java基礎
**
面向對象的特徵:繼承、封裝和多態linux
int 和 Integer 有什麼區別;nginx
Integer的值緩存範圍git
說說反射的用途及實現web
Http 請求的 GET 和 POST 方式的區別面試
MVC設計思想redis
什麼是Java序列化和反序列化;算法
如何實現Java序列化;spring
重載和重寫的區別
**
進程和線程
**
線程和進程的概念
並行和併發的概念
建立線程的方式及實現
進程間通訊的方式
說說 CountDownLatch、CyclicBarrier 原理和區別
說說 Semaphore 原理
說說 Exchanger 原理
ThreadLocal 原理分析;
ThreadLocal爲何會出現OOM,出現的深層次原理
講講線程池的實現原理
線程池的幾種實現方式
線程的生命週期;狀態是如何轉移的
**
鎖機制
**
什麼是線程安全?如何保證線程安全?
重入鎖的概念;重入鎖爲何能夠防止死鎖?
產生死鎖的四個條件
如何檢查死鎖
volatile 實現原理
synchronized 實現原理(對象監視器)
synchronized 與 lock 的區別
AQS 同步隊列
CAS 無鎖的概念;樂觀鎖和悲觀鎖
常見的原子操做類
什麼是 ABA 問題;出現 ABA 問題 JDK 是如何解決的
樂觀鎖的業務場景及實現方式
Java 8 併發包下常見的併發類
偏向鎖、輕量級鎖、重量級鎖、自旋鎖的概念
**
數據庫
**
DDL、DML、DCL 分別指什麼
explain 命令
髒讀、幻讀、不可重複讀
事務的隔離級別
數據庫的幾大範式
說說分庫與分表設計
分庫與分錶帶來的分佈式困境與對應之策
說說 SQL 優化之道
InnoDB 與 MyISAM 區別、優缺點、使用場景
B+樹索引、全文索引、哈希索引,的區別
什麼是自適應哈希索引(AHI)
爲何要用 B+tree 做爲 MySql 索引的數據結構
彙集索引與非彙集索引的區別
limit 20000 加載很慢怎麼解決
常見的幾種分佈式 ID 的設計方案
**
JVM
**
JVM 運行時內存區域劃分
常見的 GC 回收算法及其含義
常見的 JVM 性能監控和故障處理工具類
JVM 性能調優
類加載器、雙親委派模型
類加載的過程
強引用、軟引用、弱引用、虛引用
Java 內存模型 JMM
**如下是阿里天貓、螞蟻、釘釘面試題目
不會作別着急:文末有答案以及視頻講解,架構師資料**
- junit用法,before,beforeClass,after, afterClass的執行順序
- 分佈式鎖
- nginx的請求轉發算法,如何配置根據權重轉發
- 用hashmap實現redis有什麼問題(死鎖,死循環,可用ConcurrentHashmap)
- 線程的狀態
- 線程的阻塞的方式
- sleep和wait的區別
- hashmap的底層實現
- 一萬我的搶100個紅包,如何實現(不用隊列),如何保證2我的不能搶到同一個紅包,可用分佈式鎖
- java內存模型,垃圾回收機制,不可達算法
- 兩個Integer的引用對象傳給一個swap方法在方法內部交換引用,返回後,兩個引用的值是否會發現變化
- aop的底層實現,動態代理是如何動態,假若有100個對象,如何動態的爲這100個對象代理
- 是否用過maven install。 maven test。git(make install是安裝本地jar包)
- tomcat的各類配置,如何配置docBase
- spring的bean配置的幾種方式
- web.xml的配置
- spring的監聽器。
- zookeeper的實現機制,有緩存,如何存儲註冊服務的
- IO會阻塞嗎?readLine是否是阻塞的
- 用過spring的線程池仍是java的線程池?
- 字符串的格式化方法 (20,21這兩個問題問的過低級了)
- 時間的格式化方法
- 定時器用什麼作的
- 線程如何退出結束
- java有哪些鎖?樂觀鎖 悲觀鎖 synchronized 可重入鎖 讀寫鎖,用過reentrantlock嗎?reentrantlock與synmchronized的區別
- ThreadLocal的使用場景
- java的內存模型,垃圾回收機制
- 爲何線程執行要調用start而不是直接run(直接run,跟普通方法沒什麼區別,先調start,run纔會做爲一個線程方法運行)
- qmq消息的實現機制(qmq是去哪兒網本身封裝的消息隊列)
- 遍歷hashmap的三種方式
- jvm的一些命令
- memcache和redis的區別
- mysql的行級鎖加在哪一個位置
- ConcurrentHashmap的鎖是如何加的?是否是分段越多越好
- myisam和innodb的區別(innodb是行級鎖,myisam是表級鎖)
- mysql其餘的性能優化方式
- linux系統日誌在哪裏看
- 如何查看網絡進程
- 統計一個整數的二進制表示中bit爲1的個數
- jvm內存模型,java內存模型
【阿里巴巴面試題目】
- 如何把java內存的數據所有dump出來
- 如何手動觸發全量回收垃圾,如何當即觸發垃圾回收
- hashmap若是隻有一個寫其餘全讀會出什麼問題
- git rebase
- mongodb和hbase的區別
- 如何解決併發問題
- volatile的用途
- java線程池(好像以前個人理解有問題)
- mysql的binlog
- 代理模式
- mysql是如何實現事務的
- 讀寫分離什麼時候強制要讀主庫,讀哪一個從庫是經過什麼方式決定的,從庫的同步mysql用的什麼方式
- mysql的存儲引擎
- mysql的默認隔離級別,其餘隔離級別
- 將一個鏈表反轉(用三個指針,可是每次只發轉一個)
- spring Aop的實現原理,具體說說
- 什麼時候會內存泄漏,內存泄漏會拋哪些異常
- 是否用過Autowire註解
- spring的注入bean的方式
- sql語句各類條件的執行順序,如select, where, order by, group by
- select xx from xx where xx and xx order by xx limit xx; 如何優化這個(看explain)
- 四則元算寫代碼
- 統計100G的ip文件中出現ip次數最多的100個ip
- zookeeper的事物,結點,服務提供方掛了如何告知消費方
- 5臺服務器如何選出leader(選舉算法)
- 適配器和代理模式的區別
- 讀寫鎖
- static加鎖
- 事務隔離級別
- 門面模式,類圖(外觀模式)
- mybatis如何映射表結構
- 二叉樹遍歷
- 主從複製
- mysql引擎區別
- 靜態內部類加載到了哪一個區?方法區
- class文件編譯後加載到了哪
- web的http請求如何總體響應時間變長致使處理的請求數變少,該如何處理?用隊列,當處理不了那麼多http請求時將請求放到隊列
中慢慢處理,web如何實現隊列
- 線程安全的單例模式
- 快速排序性能考慮
- volatile關鍵字用法
- 求表的size,或作數據統計可用什麼存儲引擎
- 讀多寫少可用什麼引擎
- 假如要統計多個表應該用什麼引擎
- concurrenhashmap求size是如何加鎖的,若是剛求完一段後這段發生了變化該如何處理
- 1000個蘋果放10個籃子,怎麼放,能讓我拿到全部可能的個數
- 可重入的讀寫鎖,可重入是如何實現的?
- 是否用過NIO
- java的concurrent包用過沒
- sting s=new string("abc")分別在堆棧上新建了哪些對象
- java虛擬機的區域分配,各區分別存什麼
- 分佈式事務(JTA)
- threadlocal使用時注意的問題(ThreadLocal和Synchonized都用於解決多線程併發訪問。可是ThreadLocal與synchronized有本質的區別。synchronized是利用鎖的機制,使變量或代碼塊在某一時該只能被一個線程訪問。而ThreadLocal爲每個線程都提供了變量的副本,使得每一個線程在某一時間訪問到的並非同一個對象,這樣就隔離了多個線程對數據的數據共享。而Synchronized卻正好相反,它用於在多個線程間通訊時可以得到數據共享)
- java有哪些容器(集合,tomcat也是一種容器)
- 二分查找算法
- myisam的優勢,和innodb的區別
- redis能存哪些類型
- http協議格式,get和post的區別
- 可重入鎖中對應的wait和notify
- redis能把內存空間交換進磁盤中嗎(這個應該是能夠的,可是那個面試官非跟我說不能夠)
- java線程池中基於緩存和基於定長的兩種線程池,當請求太多時分別是如何處理的?定長的事用的隊列,若是隊列也滿了呢?交換進磁盤?基於緩存的線程池解決方法呢?
- synchronized加在方法上用的什麼鎖
- 可重入鎖中的lock和trylock的區別
- innodb對一行數據的讀會枷鎖嗎?不枷鎖,讀實際讀的是副本
- redis作緩存是分佈式存的?不一樣的服務器上存的數據是否重複?guava cache呢?是否重複?不一樣的機器存的數據不一樣
- 用awk統計一個ip文件中top10
- 對錶作統計時可直接看schema info信息,即查看錶的系統信息
- mysql目前用的版本
- 公司經驗豐富的人給了什麼幫助?(通常boss面會問這些)
- 本身相對於同樣的應屆生有什麼優點
- 本身的好的總結習慣給本身從此的工做帶了什麼幫助,舉例爲證
- 原子類,線程安全的對象,異常的處理方式
- 4億個int數,如何找出重複的數(用hash方法,建一個2的32次方個bit的hash數組,每取一個int數,可hash下2的32次方找到它在hash數組中的位置,而後將bit置1表示已存在)
- 4億個url,找出其中重複的(考慮內存不夠,經過hash算法,將url分配到1000個文件中,不一樣的文件間確定就不會重複了,再分別找出重複的)
有1萬個數組,每一個數組有1000個整數,每一個數組都是降序的,從中找出最大的N個數,N<1000
- LinkedHashmap的底層實現
- 類序列化時類的版本號的用途,若是沒有指定一個版本號,系統是怎麼處理的?若是加了字段會怎麼樣?
- Override和Overload的區別,分別用在什麼場景
- java的反射是如何實現的
【阿里巴巴面試題目含答案】
1,mysql的三大引擎是啥?
mysql經常使用的引擎有InnoDB,MyISAM,Memory,默認是InnoDB
InnoDB:磁盤表,支持事務,支持行級鎖,B+Tree索引
ps:優勢: 具備良好的ACID特性。適用於高併發,更新操做比較多的表。須要使用事務的表。對自動災難恢復有要求的表。
缺點:讀寫效率相對MYISAM比較差。佔用的磁盤空間比較大。
mysql的4大特性+4種隔離級別:
MyISAM:磁盤表,不支持事務,支持表級鎖,B+Tree索引
ps: 優勢:佔用空間小,處理速度快(相對InnoDB來講)
缺點:不支持事務的完整性和併發性
MEMORY(Heap):內存表,不支持事務,表級鎖,Hash索引,不支持Blob,Text大類型
ps: 優勢:速度要求快的,臨時數據
缺點:丟失之後,對項目總體沒有或者負面影響不大的時候。
2,redis的hash算法用的是啥?
redis應該是使用一致性hash算法---MurmurHash3 算法,具備低碰撞率優勢,google改進的版本cityhash也是redis中用到的哈希算法。
現有的主流的大數據系統都是用的 MurmurHash自己或者改進
3,nosql爲啥比sql快?
Nosql是非關係型數據庫,由於不須要知足關係數據庫數據一致性等複雜特性因此速度快;
sql是關係型數據庫,功能強大,可是效率上有瓶頸
4,什麼是索引爲啥nosql沒索引?nosql有索引滴
索引分爲聚簇索引和非聚簇索引兩種,聚簇索引是按照數據存放的物理位置爲順序的,而非聚簇索引就不同了;聚簇索引能提升多行檢索的速度,而非聚簇索引對於單行的檢索很快。
聚簇索引:有主鍵時,根據主鍵建立聚簇索引;沒有主鍵時,會用一個惟一且不爲空的索引列作爲主鍵,成爲此表的聚簇索引;若是以上兩個都不知足那innodb本身建立一個虛擬的彙集索引
非聚簇索引:非聚簇索引都是輔助索引,像複合索引、前綴索引、惟一索引
5,B+樹和B樹區別?
B樹的非葉子節點存儲實際記錄的指針,而B+樹的葉子節點存儲實際記錄的指針
B+樹的葉子節點經過指針連起來了, 適合掃描區間和順序查找。
BAT面試題目
加入小編的我的粉絲交流羣:793042903獲取往期Java高級架構資料、源碼、筆記、視頻、BATJ面試視頻資料、如下列舉22個視頻資料。
1,應該怎麼封裝簡歷纔有BATJ面試機會?
2,HashMap底層執行原理,
3,hashtable和ConcurrentHashMap如何實現線程安全?
4,jvm的內存佈局,垃圾回收機制
5,類加載機制裏的,雙親委派模型
6,闡述事務的隔離級別和傳播屬性
7,高併發下,如何作到安全的修改同一行數據?
8,A服務調用B服務多接口,響應時間最短方案;
9,A系統給B系統轉100塊錢,如何實現?
10,動態代理的幾種實現方式及優缺點
11,多線程下讀機率遠遠大於寫機率,如何解決併發問題?
12,按線程池內部機制,當提交新任務時,有哪些異常要考慮?
13,@Transaction註解通常寫在什麼位置?如何控制其回滾?
14,說說Spring的IOC容器初始化流程?
15,說說springboot啓動機制
16,Redis高性能的緣由大概能夠講一些?
17,你是怎麼控制緩存的更新?(被動方式/主動方式/增量/全量)?
18,淺析Http和https的三次握手有什麼區別。
19,談談Session/cookie機制,如何實現會話跟蹤?
20,什麼是一致性hash?
21,MQ有可能發生重複消費,如何避免,如何作到冪等?
22,如何作限流策略,令牌桶和漏斗算法的使用場景?
架構精講視頻以及文檔