目錄
引言:隨着金九銀十的到來,回首在經歷了兩周的跳槽求職路后,終於成功拿到offer,距今已經入職快一個月了,因此,這幾天抽空將之前的面試題做了個匯總,一方面自己以后回顧學習用,一方面為大家奉送上一份秋收的福利。
JDK
- jdk1.8版本后的新特性有哪些?
- 如何避免空指針異常?
Dubbo
- Dubbo是什么?
- Dubbo 和 Spring Cloud 有什么區別?
- dubbo都支持什么協議,推薦用哪種?
- Dubbo需要 Web 容器嗎?
- Dubbo內置了哪幾種服務容器?
- Dubbo里面有哪幾種節點角色?
- Dubbo的服務注冊與發現的流程圖是怎樣的?
- Dubbo默認使用什么注冊中心,還有別的選擇嗎?
- Dubbo有哪幾種配置方式?
- Dubbo 核心的配置有哪些?
- Dubbo啟動時如果依賴的服務不可用會怎樣?
- Dubbo推薦使用什么序列化框架,你知道的還有哪些?
- Dubbo默認使用的是什么通信框架,還有別的選擇嗎?
- Dubbo有哪幾種負載均衡策略,默認是哪種?
- Dubbo支持服務多協議嗎?
- Dubbo可以對結果進行緩存嗎?
- Dubbo服務之間的調用是阻塞的嗎?
- Dubbo支持分布式事務嗎?
- Dubbo支持服務降級嗎?
- Dubbo的通信采用什么?
- 服務提供者能實現失效踢出是什么原理?
- Dubbo的管理控制台能做什么?
- 是否看過Dubbo的代碼底層原理?具體有哪些?
- Dobbo的調用流程是什么?
- Dobbo支持動態添加服務嗎?
Zookeeper
- zookeeper是什么?
- zookeeper都有哪些功能?
- zookeeper有哪幾種部署方式?
- zookeeper使用什么協議?
- zookeeper的通知機制是怎樣的?
- zookeeper是如何實現分布式鎖的?
- zookeeper的選舉機制及流程是什么?
- zookeeper集群是如何搭建的?
- zookeeper集群最少要幾台機器,集群規則是怎樣的?
- zookeeper集群中有幾種角色?
- zookeeper集群支持動態添加機器嗎?
- zookeeper集群中怎么保證主從節點的狀態同步?
- zookeeper集群中中為什么要有主節點?
- zookeeper集群如果有3台機器,掛掉一台集群還能工作嗎?掛掉兩台呢?
- zookeeper的java客戶端都有哪些?
- zookeeper常用的命令有哪些?
Strut2
- Strtut2的優點和缺點是什么?
- 它和spring有什么區別?
Spring系列
- spring的IOC和AOP原理是什么?
- spring的啟動加載流程是怎樣的?
- springMVC的底層執行流程是怎樣的?重要的類有哪些?
- springboot支持的日志有哪些?默認的是什么?怎么配置
- springboot的數據源有哪些?怎么配置?
- springcloud的常用開發框架有哪些?
- springcloud的熔斷是怎么實現的?原理是什么?
- springcloud的eureka和zoopeeker的區別是什么?
- springcloud的網管的主要做了哪些?
- springcloud里bus的底層通信是用的什么?
Redis系列
- Redis你們用的是單機還是集群?集群如何搭建?
- Redis是什么?都有哪些使用場景?
- Redis的基本數據類型都有哪些?
- Redis在開發中常用到哪些數據類型?
- Redis中hash的數據結構是什么?
- Redis集群數據不同步有可能是什么原因?
- 請實現用Redis做登錄,錯誤次數為最多五次,時間為60秒
- Redis的哨兵機制原理是什么?
- Redis的持久化方法有哪些?
- Redis的緩存穿透是什么?怎么解決?
- Redis怎么實現分布式鎖?
- Redis分布式鎖有什么缺陷?
- Redis如何做內存優化?
- Redis淘汰策略有哪些?
- Redis常見的性能問題有哪些?該如何解決?
- Redis支持的 java 客戶端都有哪些?
- Redis為什么是單線程的?
- Redis的管道是什么?你們什么時候用?怎么使用的?
Mysql系列
- MySQL設計表的三大范式是什么?
- MySQL的
selete *
和selte 全字段
的區別? - MySQL的
selete *
除了是全字段掃描外為什么慢? - MySQL如何做優化?
- MySQL的常用SQL語句優化有哪些?
- MySQL索引的作用?和它的優點缺點是什么?
- MySQL有哪些索引(或者說索引類型有哪些)?
- MySQL的主鍵和索引有什么區別?
- MySQL創建索引的原則是什么?
- MySQL的索引在哪些情況下會失效?
- MySQL的索引原理是什么?
- MySQL的存儲引擎有哪些?
- MySQL的最左原則是什么?
- MySQL的樂觀鎖和悲觀鎖?
- 如果在a、b、c三個字段上建立復合索引,那么有幾個索引?
a、c
、b、c
兩個索引會生效嗎? - MySQL的聚簇索引和非聚簇索引是什么?
- MySQL的是傳遞性是什么?如何來保證?
- 如何判斷SQL語句是否索引用上了?
- MySQL調優時用什么方法或命令進行排查?命令的回顯結果集中哪些子彈是需要重點關注的?
- MySQL進行全表掃描是會觸發表鎖嗎?
- MySQL如何做分表?
- 已知現在有一個一千萬數據的日志記錄表,每天會向里面新增5000條記錄,如何優化?
- 如何做大數據量表的查詢和拆分?如果拆分怎么拆?有哪些方式?
- 跨表查詢有哪些方式?你最多做過幾表聯查?
- 事物的隔離級別有哪些?
- 你們每天的數據量大概有多少?
- 你們最大的一張表多大?
- mysql中如何查看執行計划?如何做sql優化?
Java多線程
- 線程安全的數組有哪些?
- 線程安全的集合有哪些?
- hashMap為什么不是線程安全的?底層原理是什么?
- 請用代碼實現同時開啟一個線程打印1~52,開啟另一個線程打印A~Z,最終交替打印1A2B3C...這樣的數據
- Java里實現線程的方式有哪些?各自的優缺點是什么?
- 你如何理解同步、異步、阻塞、非阻塞?
- 你的程序中用到了哪些鎖?是如何實現的?
消息中間件
- ActiveMQ是什么?
- ActiveMQ的應用場景有哪些?
- ActiveMQ有哪些優缺點?
- ActiveMQ在應用中可以保證分布式事物嗎?是怎么是實現的?有哪些優缺點?
- 常用的MQ的對比了解嗎?
- kufaka原理是什么?為什么快?
線程池
- Java里線程池常用的有哪些?
- 線程池在你的生產開發中有哪些應用場景?是如何使用的?
- 線程池的原理是什么?
事物
- 數據庫事務的四大特性是什么?
- 分布式事物如何保證?
- springcloud的分布式事物如何保證?
- 可以用Redis來實現分布式事物嗎?
- 什么是事物的傳導性?有哪些問題?
- 事務的CAP理論是什么?
- 你們在生成中用到了哪種方式來保證事務一致性?
JVM
- JVM的內存模型是什么?每個區的作用是什么?
- 如何進行JVM調優?
- 如何對線程服務進行JVM排查和優化?
- JVM有幾種算法?
設計模式
- 常用的設計模式有哪些?
- 請寫出一個單例模式(要求是線程安全的)
- 單例模式的雙重檢查機制如何實現?(DCL)
其他
- Nginx可以做哪些事情?
- Nginx有幾種負載均衡?
- Nginx的輪詢里一致性哈希算法的底層原理是什么?
- Nginx如何避免緩存雪崩
- 服務器的CUP超負荷了,如何排查是哪個項目的?
- 如何根據CPU的負載情況定位代碼和線程所在?
- Java程序里如果有無限for循環的代碼導致CPU負載超高,如何排查?
- 在爬蟲里如何實現用戶登錄?
- 你是如何讓你的爬蟲項目避過一些網站的防爬機制的?
- solr的原理是什么?是怎么保證排序的?
- solr在你的項目中起到了什么作用?
- MyBatis里
${}
和#{}
的區別是什么?發生SQL注入的原理是什么? - MyBatis里可以返回哪些對象?
- MyBatis在開發中什么情況下回用到
${}
符號? - 常用的linux命令,並闡述作用
- 當你請求了一個url地址后,它的后面都發生了什么?
- maven的生命周期有哪些?
- 前端的標簽選擇器有哪些?
- 常見的頁面狀態有哪些?
程序設計
- 已知現在要在首頁上添加一個日打賞榜的功能,請說以下該如何實現?
- 已知你現在有一個定時任務,如何保證高可用?
- 如果為了保證高可用,有多個定時任務,如何做到只有一個定時任務正常執行?
- 如果定時任務掛了,如何讓其他定時任務繼續執行?
- 如何讓你設計一個可以抗住大數據高並發的項目,你怎么設計?
- 設計和實現一個支持掛接多個子系統的單點登錄系統。
- 要求掛接多個域名的站點思路
- 一次登錄,在多系統使用思路
- 防跨站攻擊思路
基礎知識
- ==和 equals 的區別?
- string、stringBuilder、SrtingBuffer的區別?
- Object作為父類,它里面有哪些方法?
- HashMap和HashTable的區別?
- map集合的底層數據結構是什么?原理是什么?
- HashMap最大可以存儲多少數據?
- ArrayList 和 LinkedList 的區別是什么?
- ArrayList 和 Vector 的區別是什么?
- Array 和 ArrayList 有何區別?
- 說一下 HashMap 的實現原理?
- 說一下 HashSet 的實現原理?
- 如何決定使用 HashMap 還是 TreeMap?
- List、Set、Map 之間的區別是什么?
- java.util.concurrent包下使用過哪些?
- HashMap的工作原理是什么?還有什么處理哈希沖突的方法?
編程題
- 已知現有兩個常量數組,請將他們變為一個有序的數組
- 如何用一次遍歷的方式,將數組內的數字(重復)進行有序排序
- 寫一個方法,輸入一個文件名和一個字符串,統計這個字符串在這個文件中出現的次數。
- 給定一個整數sum,從有n個有序元素的數組中尋找元素a,b 使得a+b的結果最接近sum,最快的平均時間復雜度是?
面試技術外的問題
- 你們公司是做什么的?
- 你們現在用的框架是什么?
- 你在你們公司主要負責做什么?
- 你為什么離職?
- 你求職會優先考慮哪些?
- 你期望薪資是多少?
- 你目前的薪資多少?
- 你們的五險一金是怎么交的?
- 你了解我們公司嗎?
- 你最快能什么時間入職?
- 你還有哪些問的嗎?
- 你有哪些是你做的Java項目中你感覺最有自豪感的?因為什么?技術難度有哪些?