Java互聯網面試彙總和答案-互聯網wiki

基礎

java基礎

  • String爲何是final
  • java中的幾種基本數據類型是什麼_各自佔用多少字節
  • string_stringbuffer_stringbuilder的區別★★★★★
  • Vector,ArrayList, LinkedList 的區別★★★
  • 講講類的實例化順序
  • HashSet 和 HashMap 的比較
  • HashTable, TreeMap,HashMap,ConcurrentHashMap 區別★★★★★
  • HashMap有什麼線程安全問題 ★★★
  • HashMap是怎麼擴容的(擴容多少,已有元素怎麼處理的)★★★
  • JAVA8 的 ConcurrentHashMap 爲何放棄了分段鎖
  • 有沒有有順序的Map實現類,若是有,他們是怎麼保證有序的
  • 講講你理解的 nio,他和 bio 的區別是啥
  • Java NIO和IO的主要區別★★★
  • nio的底層實現原理 ★★★★★
  • 談談reactor反應堆模型★
  • 反射的原理
  • 反射建立類實例的三種方式是什麼★★★
  • 反射中,Class.forName 和ClassLoader.loadClass()區別
  • 描述動態代理的幾種實現方式,分別說出相應的優缺點
  • jdk動態代理與cglib實現的區別
  • 爲何CGlib方式能夠對接口實現代理
  • 如何在父類中爲子類自動完成全部的 hashcode和equals實現?這麼作有何優劣
  • 深拷貝和淺拷貝區別★★★
  • 數組和鏈表數據結構描述,各自的時間複雜度
  • error和exception的區別,CheckedException,RuntimeException的區別
  • 請列出 5 個運行時異常
  • 在本身的代碼中,若是建立一個 java.lang.String 類,這個類是否能夠被類加載器加載?
  • 說一說你對 java.lang.Object 對象中 hashCode 和 equals 方法的理解。在什麼場景下須要從新實現這兩個方法
  • 在jdk1.5中,引入了泛型,泛型的存在是用來解決什麼問題
  • Switch可否用string作參數
  • 序列化和反序列化★★★
  • 寫出三種單例模式實現
  • 有沒有可能 2 個不相等的對象有相同的 hashcode
  • Java的四種引用類型,強弱軟虛,用到的場景
  • Hashcode的做用★★★
  • object經常使用的方法
  • OverLoad 與 Override 的區別
  • static 方法能不能被 overload,override?
  • Collection 與 Collections 的區別
  • 瞭解哪些經常使用庫?★★★
  • final 的用途
  • java8的新特性
  • java9的新特性
  • java10的新特性
  • 字符流和字節流的區別
  • Servlet是不是線程安全?若是不安全怎麼處理 ?★★★
  • stringbuffer內部的數據結構在字符串變化時怎麼操做★★★★★
  • new一個Object對象佔用多少內存

JVM

  • 怎麼理解內存泄漏和內存溢出?★★★
  • Java中會存在內存泄漏嗎★
  • 內存泄露、溢出的異同★
  • 如何檢測內存泄露?★
  • 如何避免內存泄露?★★★
  • 如何避免內存溢出?★★
  • 內存溢出的緣由是什麼?★
  • 什麼狀況下會發生棧內存溢出?
  • 出現了內存溢出OOM,你怎麼排錯★
  • JVM的工做原理(內存模型)★★★★
  • Eden和Survivor比例
  • 常見JVM參數列表★★★★★
  • JVM內存爲何要分紅新生代,老年代,持久代。新生代中爲何要分爲Eden和Survivor?★
  • jvm中一次完整的 GC流程是怎樣的?★★★
  • 你知道哪幾種垃圾收集器,各自的優缺點,重點講下 cms,包括原理,流程,優缺點★★★★★
  • JVM爲何須要GC
  • 簡單說說你瞭解的類加載器★★★
  • 能夠打破雙親委派麼,怎麼打破
  • 常見垃圾回收算法★★★★★
  • 垃圾回收算法的實現原理
  • 大家線上應用的JVM參數有哪些?
  • 怎麼打出線程棧信息
  • JVM崩潰緣由查找?(jvm內存鏡像文件分析,經常使用jvm性能分析命令)
  • jvm內存哪些是線程共享,哪些是線程獨享
  • 怎麼打出線程棧信息
  • 如何使對象 GC 後再活一次
  • GC 如何判斷對象失去引用

多線程

  • thread類經常使用方法 ★★★
  • Java 實現多線程的方式有哪些 ★★★
  • 什麼是線程安全★★★
  • volatile的原理,做用,能代替鎖麼 ★★★
  • 畫一個線程的生命週期狀態圖 ★★★
  • sleep和wait的區別
  • Lock與Synchronized的區別 ★★★★★
  • ReentrantLock 獲取鎖定的四種方式
  • 解釋如下名詞:重排序,自旋鎖,偏向鎖,輕量級鎖,可重入鎖,公平鎖,非公平鎖,樂觀鎖,悲觀鎖
  • 重排序
  • 用過哪些原子類,他們的原理是什麼 ★★★★★
  • 線程池原理,並說說newCache和newFixed有什麼區別,構造函數的各個參數的含義是什麼 ★★★★★
  • 線程池的關閉方式有幾種,各自的區別是什麼
  • 假若有一個第三方接口,有不少個線程去調用獲取數據,如今規定每秒鐘最多有10個線程同時調用它,如何作到
  • spring的controller是單例仍是多例,怎麼保證併發的安全
  • 用三個線程按順序循環打印 abc 三個字母,好比 abcabcabc
  • ThreadLocal原理是什麼,用的時候要注意什麼 ★★★
  • AQS同步器的實現原理(AbstractQueuedSynchronizer)★★★
  • countdowlatch內部原理和用法(好比countdownlatch的await方法是怎麼實現的)
  • cyclicbarrier 的內部原理和用法
  • Lock鎖的實現原理
  • Synchronized對象鎖和類鎖的區別
  • synchronized的原理是什麼 ★★★★★
  • 進程和線程的區別
  • 若是讓你實現一個併發安全的鏈表,你會怎麼作
  • 多線程若是線程掛住了怎麼辦
  • 簡述ConcurrentLinkedQueue和LinkedBlockingQueue 的用處和不一樣之處
  • Queue添加數據方法add()put()offer()不一樣之處
  • 致使線程死鎖的緣由?怎麼解除線程死鎖
  • 編寫一段死鎖代碼
  • 用過讀寫鎖嗎,原理是什麼,通常在什麼場景下用
  • 兩個進程可否共享內存空間
  • 鎖的等級:方法鎖、對象鎖、類鎖
  • 多線程模擬實現生產者/消費者模型
  • 開啓多個線程,如何保證順序執行,有哪幾種實現方式,或者如何保證多個線程都執行完再拿到結果
  • 延遲隊列的實現方式,delayQueue 和時間輪算法的異同
  • 很是多個線程(多是不一樣機器)相互之間須要等待協調,才能完成某種工做,問怎麼設計這種協調方案
  • 怎麼實現分佈式鎖(redis+zookeeper) ★★★★★
  • 什麼是鎖升級降級
  • 線程池隊列滿的時候怎麼處理 ★★★
  • java線程能被中斷麼,中斷必定能成功麼
  • 線程啓動用 start 方法仍是 run★★★
  • 線程經常使用的併發類及關鍵字 ★★★★★
  • 有哪些無鎖數據結構,無鎖實現的原理是什麼 ★★★★★
  • i++是否是線程安全,爲何 ★★★

jdk1.7源碼

  • HashMap的實現原理
  • HashSet的實現原理
  • Hashtable的實現原理
  • LinkedHashMap的實現原理
  • LinkedHashSet 的實現原理
  • ArrayList的實現原理
  • LinkedList的實現原理
  • ConcurrentHashMap的實現原理

開源框架與技術

tomcat

  • 簡單講講 tomcat結構
  • tomcat啓動流程
  • tomcat怎麼處理請求,流程是怎樣的
  • tomcat如何調優
  • maxThreads、maxConnections、acceptAccount區別
  • tomcat默認支持併發數,怎麼修改?
  • tomcatNIO線程模型

spring

  • Spring加載流程(bean初始化)
  • Spring事務管理總結
  • spring的事務傳播屬性以及隔離級別
  • Springmvc中DispatcherServlet初始化過程
  • 爲何要用Spring
  • 簡述一下Spring結構
  • 什麼是IOC
  • AOP的實現原理
  • Spring的生命週期
  • BeanFactory和ApplicationContext區別
  • Spring實例化Bean的方式
  • Spring各類事務實現及區別
  • Spring編程事務與聲明事務的區別
  • SpringMVC的工做原理
  • Spring怎麼配置事務(具體說出一些關鍵的xml元素)
  • springmvc用到的註解,做用是什麼,原理
  • springboot啓動機制
  • Spring循環依賴的處理(單例、多例狀態下的處理,懶加載必定能處理掉循環依賴麼?)

netty

  • netty的線程模型是什麼?netty是如何基於reactor模型上實現的
  • netty的HashedWheelTimer 的用法,實現原理,是否出現過調用不夠準時,怎麼解決
  • netty的心跳處理在弱網下怎麼辦
  • netty的通信協議是什麼樣的
  • netty原理

dubbo

  • 說下Dubbo的架構圖和組件★★★
  • Dubbo容錯機制有哪些?分別適用那些場景?★★★
  • Dubbo線程模型★★★
  • Dubbo負載均衡策略與算法★★★
  • Dubbo結果緩存
  • dubbo怎麼服務降級 ★★★
  • dubbo怎麼優雅停機 ★★★
  • dubbo怎麼自動dump線程池
  • Dubbo 的原理★★★
  • dubbo如何一條連接併發多個調用
  • Dubbo的網絡協議是什麼
  • 講下Dubbo服務註冊與發現的基本流程★
  • Dubbo有臺節點掛了是怎麼處理的★
  • dubbo的優缺點是什麼
  • dubbo怎麼修改失敗重試次數,默認是多少
  • dubbo內部機制,數據怎麼流轉的
  • dubbo遇到那些坑
  • Dubbo運行時,忽然全部的zookeeper所有宕機,Dubbo是否還會繼續提供服務
  • Dubbo源碼
  • Dubbo使用zookeeper註冊中心★★★
  • Dubbo怎麼使用redis做爲註冊中心
  • Dubbo最佳實踐
  • Dubbo調優經驗★★★

zookeeper

  • Zookeeper的用途是什麼
  • Zookeeper選舉的原理
  • zookeeper原理
  • zookeeper的同步流程
  • zookeeper角色
  • zookeeper的Leader工做流程
  • zookeeper的Follower工做流程 Zookeeper Watch機制原理
  • zookeeper數據一致性
  • 什麼是zab協議
  • zookeeper使用場景
  • 爲何zookeeper不用paxos,而是用的zab算法

mybatis

  • Mybatis的底層實現原理
  • mapper接口調用的原理
  • hibernate和mybatis最本質的區別
  • Mybatis中#和$的區別
  • elasticsearch[編輯 | 編輯源代碼]
  • 你對elasticsearch瞭解多少
  • 說說大家公司 es 的集羣架構,索引數據大小,分片有多少
  • elasticsearch怎麼調優
  • elasticsearch 的倒排索引是什麼
  • elasticsearch 索引數據多了怎麼辦

kafka

  • kafka 吞吐量高的緣由
  • kafka生產數據時的分組策略
  • kafka如何保證數據的生產完成
  • kafka的broker如何保存數據
  • partition如何分佈在不一樣的broker上
  • 如何保證kafka消費者消費數據是全局有序的
  • kafka中segment的命名方式
  • kafka的message物理結構
  • kakka在partition中如何經過offset查找message
  • kafka和其餘消息隊列的區別
  • kafka的主從同步機制
  • 使用 kafka 有沒有遇到什麼問題,怎麼解決的
  • kafka性能調優
  • kafka怎麼保證消息可靠性
  • kafka常見問題

RabbitMq

  • rabbitmq 如何實現集羣高可用

ActiveMQ

  • ActiveMQ的原理

nginx

  • nginx是作什麼的
  • nginx怎麼配置
  • nginx怎麼調優

spring boot##

  • SpringBoot核心功能
  • SpringBoot優缺點
  • SpringBoot幾個經常使用的註解
  • springboot啓動機制
  • spring boot自動配置是怎麼實現的
  • springboot知識點整理

spring cloud

  • 簡單說下你對Spring Cloud的理解
  • spring cloud經常使用組件及其做用是什麼

網絡

http

  • HTTP/1.1與HTTP/1.0的區別
  • HTTPS的加密方式是什麼,講講整個加密解密流程
  • HTTP請求報文和HTTP響應報文
  • 經常使用的http方法
  • 經常使用的http響應碼詳解
  • 如何避免瀏覽器緩存
  • 簡述Http請求get和post的區別
  • 什麼是HTTP2.0
  • Http 如何處理長鏈接
  • http和tcp的區別

TCP

  • 什麼是TCP協議
  • TCP協議的三次握手和四次揮手
  • TIME_WAIT和CLOSE_WAIT的區別
  • TCP協議如何來保證傳輸的可靠性
  • 說說TCP頭的結構
  • 什麼是長鏈接?短鏈接?

架構

系統架構

  • 用java本身實現一個LRU
  • 設計一個秒殺系統
  • 設計一個訂單系統,30分鐘沒付款就自動關閉交易
  • 如何使用 redis 和 zookeeper 實現分佈式鎖?有什麼區別優缺點,會有什麼問題,分別適用什麼場景
  • 講講redlock算法實現,爭議在哪裏
  • 若是有人惡意建立非法鏈接,怎麼解決
  • 一個在線文檔系統,文檔能夠被編輯,如何防止多人同時對同一份文檔進a行編輯更新
  • 線上系統忽然變得異常緩慢,你如何查找問題
  • 異步模式的用途和意義
  • 如何設計一套高併發支付方案,架構如何設計
  • 如何設計創建和保持 100w 的長鏈接
  • 設計一個社交網站中的「私信」功能,要求高併發、可擴展等等。 畫一下架構圖
  • 聊下曾經參與設計的服務器架構並畫圖,談談遇到的問題,怎麼解決的
  • 應用服務器怎麼監控性能,各類方式的區別
  • 如何實現負載均衡,有哪些算法能夠實現
  • 設計一個能夠控制緩存整體大小的自動適應的本地緩存
  • 後臺系統怎麼防止請求重複提交
  • 描述一個服務從發佈到被消費的詳細過程
  • 如何優化線程數

數據架構

  • 常見的緩存策略有哪些,如何作到緩存與 DB 裏的數據一致性,大家項目中用到了什麼緩存系統,如何設計的
  • 緩存數據過時後的更新如何設計
  • 如何防止緩存擊穿和雪崩
  • 大家作過度表分庫嗎,怎麼作的
  • 有一個訂單系統,訂單日增長1000萬,怎麼設計表
  • 分佈式、高併發[編輯 | 編輯源代碼]
  • 分佈式集羣下如何作到惟一序列號ID
  • 分佈式事務的原理,優缺點,如何使用分佈式事務
  • 什麼是paxos算法
  • 什麼是zab算法
  • 一次RPC請求的流程是什麼
  • 本身實現過rpc麼,原理能夠簡單講講,Rpc要解決什麼問題
  • 請思考一個方案,實現分佈式環境下的 countDownLatch
  • 如何作限流策略,令牌桶和漏斗算法的使用場景
  • 分佈式服務調用方,不依賴服務提供方的話,怎麼處理服務方掛掉後,大量無效資源請求的浪費,若是隻是服務提供方吞吐不高的時候該怎麼作,若是服務掛了,那麼一會重啓,該怎麼作到最小的資源浪費,流量半開的實現機制是什麼
  • 什麼分佈式鎖? redis、zookeeper怎麼實現分佈式鎖
  • 若是設計高可用高併發系統
  • 高併發下1個數頻繁更改(更改頻率1000次-10000次)應該怎麼處理?
  • 分佈式當中如何避免對同一條修改的衝突?
  • 接口限流怎麼作

系統設計、設計模式

  • 常見設計原則
  • 編程中本身都怎麼考慮一些設計原則的,好比開閉原則,以及在工做中的應用
  • OO 的設計原則
  • 請結合 OO 設計理念,談談訪問修飾符 public、private、protected、default 在應用設計中的做用
  • 如何作到接口的冪等性
  • 說說你平時用到的設計模式
  • 工廠模式
  • 代理模式
  • 適配模式
  • 策略模式

性能優化

  • 線上系統忽然變得異常緩慢,你如何查找問題
  • 講下你作過那些性能優化的措施

微服務

  • 講下你理解的微服務?
  • 微服務與SOA的區別是什麼?
  • 微服務的模塊怎麼劃分?

消息隊列

  • MQ的基本原理
  • MQ消息可靠性保證
  • MQ怎麼解決冪等性
  • MQ系統的數據如何保證不丟失
  • 用過哪些 MQ,和其餘 mq 比較有什麼優缺點,MQ 的鏈接是線程安全的嗎
  • 怎麼利用 mq 實現最終一致性
  • MQ有可能發生重複消費,如何避免,如何作到冪等
  • MQ 的消息延遲了怎麼處理,消息能夠設置過時時間麼,過時了大家通常怎麼處理
  • 消息隊列滿了怎麼處理
  • 如何本身設計一個消息中間件
  • kafka,activemq,rabbitmq本質區別是啥

數據庫

關係型數據庫

  • 數據庫隔離級別有哪些,各自的含義是什麼,MYSQL默認的隔離級別是是什麼★★★
  • 不可重複讀與幻讀的區別
  • MYSQL有哪些存儲引擎,各自優缺點,myisam與innodb區別★★★
  • 樂觀鎖和悲觀鎖是什麼,以及各自的優略勢
  • INNODB的標準行級鎖有哪2種,解釋其含義
  • SQL優化的通常步驟是什麼★★★
  • 怎麼看執行計劃,如何理解其中各個字段的含義
  • 數據庫會死鎖嗎,舉一個死鎖的例子,mysql怎麼解決死鎖★★★
  • MYsql的索引原理
  • MYsql的索引數據結構
  • MYsql多列索引(複合索引)的生效規則
  • 索引的類型有哪些,如何建立合理的索引,索引如何優化
  • 彙集索引和非彙集索引的區別,怎麼存儲的
  • select for update是什麼含義,會鎖表仍是鎖行或是其餘
  • Btree原理
  • Btree怎麼分裂的,何時分裂,爲何是平衡的
  • 數據庫的ACID是什麼★★★
  • 某個表有近千萬數據,CRUD比較慢,如何優化
  • Mysql怎麼優化tablescan
  • mysql中in和exists區別
  • 數據庫自增主鍵可能的問題
  • MVCC的含義
  • 怎麼解決MYSQL的主從同步延遲★★★
  • 你作過的項目裏遇到分庫分表了嗎,怎麼作的
  • sharding jdbc的原理知道麼
  • sharding jdbc怎麼生成惟一主鍵
  • sharding jdbc架構
  • 說下mysql架構是怎樣的
  • 說下mysql內存分配
  • update語句的底層實現是怎樣的
  • mysql行級鎖必定會鎖定指定行麼
  • 說下JDBC 鏈接步驟
  • MySQL事務實現原理

非關係型數據庫

  • Redis的數據結構都有哪些
  • redis的string結構相關的操做
  • redis的list結構相關的操做
  • redis的hash結構相關的操做
  • 講講持久化方式 ,aof和rdb的區別
  • redis2和redis3的區別
  • redis3內部通信機制
  • redis主鍵失效原理
  • redis集羣有哪些玩法,各自優缺點,場景
  • Redis的Sentinel實現機制與原理
  • redis的集羣怎麼同步的數據的
  • redis的主從複製的原理
  • Redis集羣怎麼擴容
  • 什麼是Redis集羣的分庫和分片
  • Redis的併發競爭問題如何解決,瞭解Redis事務的CAS操做嗎
  • Redis的選舉算法和流程是怎樣的
  • 知道哪些redis的優化操做
  • redis常見性能問題和解決方案
  • Redis的底層原理
  • Redis的線程模型是什麼
  • Redis爲何使用單進程單線程方式也這麼快
  • Redis的緩存策略和主鍵失效機制
  • Redis的回收策略
  • Redis相比memcached有哪些優點
  • Redis的回收策略
  • Memcache的原理,哪些數據適合放在緩存中
  • redis和memcached的區別
  • Redis 的七個原則
  • 分佈式下,怎麼保證redis和mysql數據一致性
  • Redis使用場景
  • 使用Redis遇到那些問題、故障

算法

  • 什麼是一致性 hash算法?
  • 說說你知道的幾種hash算法
  • 什麼是paxos算法
  • 什麼是zab算法
  • 什麼是二叉樹算法
  • 什麼是紅黑樹算法
  • 二叉樹和二叉查找樹的區別是什麼?
  • 手寫各類排序算法,如冒泡、快速等
  • 算法的時間複雜度是什麼?
  • 說出常見的負載均衡算法?
  • 寫出常見排序算法(快排、冒泡)
  • 二分法查找

項目

項目開發

  • 大家項目是怎麼打包部署
  • 項目出現亂碼怎麼解決
  • 大家是怎麼管理分支的,出現衝突怎麼解決
  • 項目中遇到那些難題挑戰,怎麼解決
  • 線上出了問題怎麼排查,分析的過程和方法
  • 說說你最滿意的一個項目的架構
  • 畫出大家項目的架構圖

業務問題

  • 分佈式服務狀況下,怎麼保證一個新聞一天一個用戶只能點贊一次
  • 微信紅包怎麼實現
相關文章
相關標籤/搜索