2019年高級Java程序員面試題匯總


引言:隨着金九銀十的到來,回首在經歷了兩周的跳槽求職路后,終於成功拿到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、cb、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項目中你感覺最有自豪感的?因為什么?技術難度有哪些?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM