摘要:以下為大家整理了阿里巴巴史上最全的面試題,涉及大量面試知識點和相關試題。的內存結構,和比例。多線程多線程的幾種實現方式,什么是線程安全。點擊這里有一套答案版的多線程試題。線上系統突然變得異常緩慢,你如何查找問題。
以下為大家整理了阿里巴巴史上最全的 Java 面試題,涉及大量 Java 面試知識點和相關試題。
JAVA基礎
JAVA中的幾種基本數據類型是什么,各自占用多少字節。
String類能被繼承嗎,為什么。
String,Stringbuffer,StringBuilder的區別。
ArrayList和LinkedList有什么區別。
講講類的實例化順序,比如父類靜態數據,構造函數,字段,子類靜態數據,構造函數,字
段,當new的時候,他們的執行順序。
用過哪些Map類,都有什么區別,HashMap是線程安全的嗎,并發下使用的Map是什么,他們
內部原理分別是什么,比如存儲方式,hashcode,擴容,默認容量等。
JAVA8的ConcurrentHashMap為什么放棄了分段鎖,有什么問題嗎,如果你來設計,你如何
設計。
有沒有有順序的Map實現類,如果有,他們是怎么保證有序的。
抽象類和接口的區別,類可以繼承多個類么,接口可以繼承多個接口么,類可以實現多個接口
么。
繼承和聚合的區別在哪。
IO模型有哪些,講講你理解的nio ,他和bio,aio的區別是啥,談談reactor模型。
反射的原理,反射創建類實例的三種方式是什么。
反射中,Class.forName和ClassLoader區別 。
描述動態代理的幾種實現方式,分別說出相應的優缺點。
動態代理與cglib實現的區別。
為什么CGlib方式可以對接口實現代理。
final的用途。
寫出三種單例模式實現 。
如何在父類中為子類自動完成所有的hashcode和equals實現?這么做有何優劣。
請結合OO設計理念,談談訪問修飾符public、private、protected、default在應用設
計中的作用。
深拷貝和淺拷貝區別。
數組和鏈表數據結構描述,各自的時間復雜度。
error和exception的區別,CheckedException,RuntimeException的區別。
請列出5個運行時異常。
在自己的代碼中,如果創建一個java.lang.String類,這個類是否可以被類加載器加
載?為什么。
說一說你對java.lang.Object對象中hashCode和equals方法的理解。在什么場景下需
要重新實現這兩個方法。
在jdk1.5中,引入了泛型,泛型的存在是用來解決什么問題。
這樣的a.hashcode() 有什么用,與a.equals(b)有什么關系。
有沒有可能2個不相等的對象有相同的hashcode。
Java中的HashSet內部是如何工作的。
什么是序列化,怎么序列化,為什么序列化,反序列化會遇到什么問題,如何解決。
java8的新特性。
JVM知識
什么情況下會發生棧內存溢出。
JVM的內存結構,Eden和Survivor比例。
JVM內存為什么要分成新生代,老年代,持久代。新生代中為什么要分為Eden和Survivor。
JVM中一次完整的GC流程是怎樣的,對象如何晉升到老年代,說說你知道的幾種主要的JVM參
數。
你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms和G1,包括原理,流程,優缺點。
垃圾回收算法的實現原理。
當出現了內存溢出,你怎么排錯。
JVM內存模型的相關知識了解多少,比如重排序,內存屏障,happen-before,主內存,工作
內存等。
簡單說說你了解的類加載器,可以打破雙親委派么,怎么打破。
講講JAVA的反射機制。
你們線上應用的JVM參數有哪些。
g1和cms區別,吞吐量優先和響應優先的垃圾收集器選擇。
怎么打出線程棧信息。
請解釋如下jvm參數的含義:
-server -Xms512m -Xmx512m -Xss1024K
-XX:PermSize=256m -XX:MaxPermSize=512m -
XX:MaxTenuringThreshold=20XX:CMSInitiatingOccupancyFraction=80 -
XX:+UseCMSInitiatingOccupancyOnly。
開源框架知識
簡單講講tomcat結構,以及其類加載器流程,線程模型等。
tomcat如何調優,涉及哪些參數 。
講講Spring加載流程。
Spring AOP的實現原理。
講講Spring事務的傳播屬性。
Spring如何管理事務的。
Spring怎么配置事務(具體說出一些關鍵的xml 元素)。
說說你對Spring的理解,非單例注入的原理?它的生命周期?循環注入的原理,aop的實現原
理,說說aop中的幾個術語,它們是怎么相互工作的。
Springmvc 中DispatcherServlet初始化過程。
netty的線程模型,netty如何基于reactor模型上實現的。
為什么選擇netty。
什么是TCP粘包,拆包。解決方式是什么。
netty的fashwheeltimer的用法,實現原理,是否出現過調用不夠準時,怎么解決。
netty的心跳處理在弱網下怎么辦。
netty的通訊協議是什么樣的。
springmvc用到的注解,作用是什么,原理。
springboot啟動機制。
點擊這里有一套答案版的Spring試題。
操作系統
Linux系統下你關注過哪些內核參數,說說你知道的。
Linux下IO模型有幾種,各自的含義是什么。
epoll和poll有什么區別。
平時用到哪些Linux命令。
用一行命令查看文件的最后五行。
用一行命令輸出正在運行的java進程。
介紹下你理解的操作系統中線程切換過程。
進程和線程的區別。
top 命令之后有哪些內容,有什么作用。
線上CPU爆高,請問你如何找到問題所在。
多線程
多線程的幾種實現方式,什么是線程安全。
volatile的原理,作用,能代替鎖么。
畫一個線程的生命周期狀態圖。
sleep和wait的區別。
sleep和sleep(0)的區別。
Lock與Synchronized的區別 。
synchronized的原理是什么,一般用在什么地方(比如加在靜態方法和非靜態方法的區別,靜
態方法和非靜態方法同時執行的時候會有影響嗎),解釋以下名詞:重排序,自旋鎖,偏向鎖,輕
量級鎖,可重入鎖,公平鎖,非公平鎖,樂觀鎖,悲觀鎖。
用過哪些原子類,他們的原理是什么。
JUC下研究過哪些并發工具,講講原理。
用過線程池嗎,如果用過,請說明原理,并說說newCache和newFixed有什么區別,構造函
數的各個參數的含義是什么,比如coreSize,maxsize等。
線程池的關閉方式有幾種,各自的區別是什么。
假如有一個第三方接口,有很多個線程去調用獲取數據,現在規定每秒鐘最多有10個線程同
時調用它,如何做到。
spring的controller是單例還是多例,怎么保證并發的安全。
用三個線程按順序循環打印abc三個字母,比如abcabcabc。
ThreadLocal用過么,用途是什么,原理是什么,用的時候要注意什么。
如果讓你實現一個并發安全的鏈表,你會怎么做。
有哪些無鎖數據結構,他們實現的原理是什么。
講講java同步機制的wait和notify。
CAS機制是什么,如何解決ABA問題。
多線程如果線程掛住了怎么辦。
countdowlatch和cyclicbarrier的內部原理和用法,以及相互之間的差別(比如
countdownlatch的await方法和是怎么實現的)。
對AbstractQueuedSynchronizer了解多少,講講加鎖和解鎖的流程,獨占鎖和公平所
加鎖有什么不同。
使用synchronized修飾靜態方法和非靜態方法有什么區別。
簡述ConcurrentLinkedQueue和LinkedBlockingQueue的用處和不同之處。
導致線程死鎖的原因?怎么解除線程死鎖。
非常多個線程(可能是不同機器),相互之間需要等待協調,才能完成某種工作,問怎么設計這種協調方案。
用過讀寫鎖嗎,原理是什么,一般在什么場景下用。
開啟多個線程,如果保證順序執行,有哪幾種實現方式,或者如何保證多個線程都執行完
再拿到結果。
延遲隊列的實現方式,delayQueue和時間輪算法的異同。
點擊這里有一套答案版的多線程試題。
TCP與HTTP
http1.0和http1.1有什么區別。
TCP三次握手和四次揮手的流程,為什么斷開連接要4次,如果握手只有兩次,會出現什么。
TIME_WAIT和CLOSE_WAIT的區別。
說說你知道的幾種HTTP響應碼,比如200, 302, 404。
當你用瀏覽器打開一個鏈接(如:http://www.javastack.cn)的時候,計算機做了哪些工作步驟。
TCP/IP如何保證可靠性,說說TCP頭的結構。
如何避免瀏覽器緩存。
如何理解HTTP協議的無狀態性。
簡述Http請求get和post的區別以及數據包格式。
HTTP有哪些method
簡述HTTP請求的報文格式。
HTTP的長連接是什么意思。
HTTPS的加密方式是什么,講講整個加密解密流程。
Http和https的三次握手有什么區別。
什么是分塊傳送。
Session和cookie的區別。
點擊這里有一套答案版的試題。
架構設計與分布式
用java自己實現一個LRU。
分布式集群下如何做到唯一序列號。
設計一個秒殺系統,30分鐘沒付款就自動關閉交易。
如何使用redis和zookeeper實現分布式鎖?有什么區別優缺點,會有什么問題,分別適用什么
場景。(延伸:如果知道redlock,講講他的算法實現,爭議在哪里)
如果有人惡意創建非法連接,怎么解決。
分布式事務的原理,優缺點,如何使用分布式事務,2pc 3pc 的區別,解決了哪些問題,還有
哪些問題沒解決,如何解決,你自己項目里涉及到分布式事務是怎么處理的。
什么是一致性hash。
什么是restful,講講你理解的restful。
如何設計一個良好的API。
如何設計建立和保持100w的長連接。
解釋什么是MESI協議(緩存一致性)。
說說你知道的幾種HASH算法,簡單的也可以。
什么是paxos算法, 什么是zab協議。
一個在線文檔系統,文檔可以被編輯,如何防止多人同時對同
一份文檔進行編輯更新。
線上系統突然變得異常緩慢,你如何查找問題。
說說你平時用到的設計模式。
Dubbo的原理,有看過源碼么,數據怎么流轉的,怎么實現集群,負載均衡,服務注冊
和發現,重試轉發,快速失敗的策略是怎樣的 。
一次RPC請求的流程是什么。
自己實現過rpc么,原理可以簡單講講。Rpc要解決什么問題。
異步模式的用途和意義。
編程中自己都怎么考慮一些設計原則的,比如開閉原則,以及在工作中的應用。
設計一個社交網站中的“私信”功能,要求高并發、可擴展等等。 畫一下架構圖。
MVC模式,即常見的MVC框架。
聊下曾經參與設計的服務器架構并畫圖,談談遇到的問題,怎么解決的。
應用服務器怎么監控性能,各種方式的區別。
如何設計一套高并發支付方案,架構如何設計。
如何實現負載均衡,有哪些算法可以實現。
Zookeeper的用途,選舉的原理是什么。
Zookeeper watch機制原理。
Mybatis的底層實現原理。
請思考一個方案,實現分布式環境下的countDownLatch。
后臺系統怎么防止請求重復提交。
描述一個服務從發布到被消費的詳細過程。
講講你理解的服務治理。
如何做到接口的冪等性。
如何做限流策略,令牌桶和漏斗算法的使用場景。
什么叫數據一致性,你怎么理解數據一致性。
分布式服務調用方,不依賴服務提供方的話,怎么處理服務方掛掉后,大量無效資源請求
的浪費,如果只是服務提供方吞吐不高的時候該怎么做,如果服務掛了,那么一會重啟,該怎
么做到最小的資源浪費,流量半開的實現機制是什么。
dubbo的泛化調用怎么實現的,如果是你,你會怎么做。
遠程調用會有超時現象,如果做到優雅的控制,JDK自帶的超時機制有哪些,怎么實現的。
算法
10億個數字里里面找最小的10個。
有1億個數字,其中有2個是重復的,快速找到它,時間和空間要最優。
2億個隨機生成的無序整數,找出中間大小的值。
給一個不知道長度的(可能很大)輸入字符串,設計一種方案,將重復的字符排重。
遍歷二叉樹。
有3n+1個數字,其中3n個中是重復的,只有1個是不重復的,怎么找出來。
寫一個字符串(如:www.javastack.cn)反轉函數。
常用的排序算法,快排,歸并、冒泡。 快排的最優時間復雜度,最差復雜度。冒泡排序的
優化方案。
二分查找的時間復雜度,優勢。
一個已經構建好的TreeSet,怎么完成倒排序。
什么是B+樹,B-樹,列出實際的使用場景。
一個單向鏈表,刪除倒數第N個數據。
200個有序的數組,每個數組里面100個元素,找出top20的元素。
單向鏈表,查找中間的那個元素。
數據庫知識
數據庫隔離級別有哪些,各自的含義是什么,MYSQL默認的隔離級別是是什么。
什么是幻讀。
MYSQL有哪些存儲引擎,各自優缺點。
高并發下,如何做到安全的修改同一行數據。
樂觀鎖和悲觀鎖是什么,INNODB的標準行級鎖有哪2種,解釋其含義。
SQL優化的一般步驟是什么,怎么看執行計劃,如何理解其中各個字段的含義。
數據庫會死鎖嗎,舉一個死鎖的例子,mysql怎么解決死鎖。
MYsql的索引原理,索引的類型有哪些,如何創建合理的索引,索引如何優化。
聚集索引和非聚集索引的區別。
select for update 是什么含義,會鎖表還是鎖行或是其他。
為什么要用Btree實現,它是怎么分裂的,什么時候分裂,為什么是平衡的。
數據庫的ACID是什么。
某個表有近千萬數據,CRUD比較慢,如何優化。
Mysql怎么優化table scan的。
如何寫sql能夠有效的使用到復合索引。
mysql中in 和exists 區別。
數據庫自增主鍵可能的問題。
MVCC的含義,如何實現的。
你做過的項目里遇到分庫分表了嗎,怎么做的,有用到中間件么,比如sharding jdbc等,他
們的原理知道么。
MYSQL的主從延遲怎么解決。
消息隊列
消息隊列的使用場景。
消息的重發,補充策略。
如何保證消息的有序性。
用過哪些MQ,和其他mq比較有什么優缺點,MQ的連接是線程安全的嗎,你們公司的MQ服務
架構怎樣的。
MQ系統的數據如何保證不丟失。
rabbitmq如何實現集群高可用。
kafka吞吐量高的原因。
kafka 和其他消息隊列的區別,kafka 主從同步怎么實現。
利用mq怎么實現最終一致性。
使用kafka有沒有遇到什么問題,怎么解決的。
MQ有可能發生重復消費,如何避免,如何做到冪等。
MQ的消息延遲了怎么處理,消息可以設置過期時間么,過期了你們一般怎么處理。
緩存
常見的緩存策略有哪些,如何做到緩存(比如redis)與DB里的數據一致性,你們項目中用到了
什么緩存系統,如何設計的。
如何防止緩存擊穿和雪崩。
緩存數據過期后的更新如何設計。
redis的list結構相關的操作。
Redis的數據結構都有哪些。
Redis的使用要注意什么,講講持久化方式,內存設置,集群的應用和優劣勢,淘汰策略等。
redis2和redis3的區別,redis3內部通訊機制。
當前redis集群有哪些玩法,各自優缺點,場景。
Memcache的原理,哪些數據適合放在緩存中。
redis和memcached 的內存管理的區別。
Redis的并發競爭問題如何解決,了解Redis事務的CAS操作嗎。
Redis的選舉算法和流程是怎樣的。
redis的持久化的機制,aof和rdb的區別。
redis的集群怎么同步的數據的。
知道哪些redis的優化操作。
Reids的主從復制機制原理。
Redis的線程模型是什么。
請思考一個方案,設計一個可以控制緩存總體大小的自動適應的本地緩存。
如何看待緩存的使用(本地緩存,集中式緩存),簡述本地緩存和集中式緩存和優缺點。
本地緩存在并發使用時的注意事項。
搜索
elasticsearch了解多少,說說你們公司es的集群架構,索引數據大小,分片有多少,以及一些
調優手段 。elasticsearch的倒排索引是什么。
elasticsearch 索引數據多了怎么辦,如何調優,部署。
elasticsearch是如何實現master選舉的。
詳細描述一下Elasticsearch索引文檔的過程。
詳細描述一下Elasticsearch搜索的過程。
Elasticsearch在部署時,對Linux的設置有哪些優化方法?
lucence內部結構是什么。
關注以下公眾號回復 "答案" 獲取全部面試題整理及參考答案。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76882.html
摘要:更是中高級面試過程中經常會問的技術,無論你是否用過,你都必須熟悉。下面我為大家準備了一些常見的的面試題,一些是我經常問別人的,一些是我過去面試遇到的一些問題,總結給大家,希望對大家能有所幫助。 想往高處走,怎么能不懂 Dubbo? Dubbo是國內最出名的分布式服務框架,也是 Java 程序員必備的必會的框架之一。Dubbo 更是中高級面試過程中經常會問的技術,無論你是否用過,你都必須...
摘要:好不容易在月號這天中午點左右接到了來自阿里的面試電話。這里會不斷收集和更新基礎相關的面試題,目前已收集題。面試重難點的和的打包過程多線程機制機制系統啟動過程,啟動過程等等掃清面試障礙最新面試經驗分享,此為第一篇,開篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開發面試題總結 各大公司 Jav...
閱讀 3925·2021-10-12 10:12
閱讀 2886·2021-09-10 11:18
閱讀 3672·2019-08-30 15:54
閱讀 2808·2019-08-30 15:53
閱讀 638·2019-08-30 13:54
閱讀 965·2019-08-30 13:21
閱讀 2260·2019-08-30 12:57
閱讀 1687·2019-08-30 11:10