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

引言:隨着金九銀十的到來,回首在經歷了兩週的跳槽求職路後,終於成功拿到offer,距今已經入職快一個月了,所以,這幾天抽空將以前的面試題作了個彙總,一方面本身之後回顧學習用,一方面爲你們奉送上一份秋收的福利。java

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項目中你感受最有自豪感的?由於什麼?技術難度有哪些?
相關文章
相關標籤/搜索