2020年高級Java程序員面試題彙總,含個人答案總結

目錄

  • JDK
  • Dubbo
  • Zookeeper
  • Strut2
  • Spring系列
  • Redis系列
  • Mysql系列
  • Java多線程
  • 消息中間件
  • 線程池
  • 事物
  • JVM
  • 設計模式
  • 其他
  • 程序設計
  • 基礎知識
  • 編程題
  • 面試技術外的問題

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項目中你感覺最有自豪感的?因爲什麼?技術難度有哪些?

面試答案

轉發此文關注我私信回覆【面試資料】即可領取(轉發+關注後在私信哦)

2019å¹´é«çº§Javaç¨åºåé¢è¯é¢æ±æ»ï¼å«ä¸ªäººç­æ¡æ»ç»

2019年高級Java程序員面試題彙總,含個人答案總結

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章