JAVA基礎(chǔ)
JAVA中的幾種基本數(shù)據(jù)類型是什么泡嘴,各自占用多少字節(jié)。
String類能被繼承嗎擎颖,為什么。
String观游,Stringbuffer搂捧,StringBuilder的區(qū)別。
ArrayList和LinkedList有什么區(qū)別懂缕。
講講類的實例化順序允跑,比如父類靜態(tài)數(shù)據(jù),構(gòu)造函數(shù)搪柑,字段聋丝,子類靜態(tài)數(shù)據(jù),構(gòu)造函數(shù)工碾,字段弱睦,當new的時候,他們的執(zhí)行順序渊额。
用過哪些Map類况木,都有什么區(qū)別垒拢,HashMap是線程安全的嗎,并發(fā)下使用的Map是什么,他們內(nèi)部原理分別是什么火惊,比如存儲方式子库,hashcode,擴容矗晃,默認容量等仑嗅。
JAVA8的ConcurrentHashMap為什么放棄了分段鎖,有什么問題嗎张症,如果你來設(shè)計仓技,你如何設(shè)計。
有沒有有順序的Map實現(xiàn)類俗他,如果有脖捻,他們是怎么保證有序的。
抽象類和接口的區(qū)別兆衅,類可以繼承多個類么地沮,接口可以繼承多個接口么,類可以實現(xiàn)多個接口么。
繼承和聚合的區(qū)別在哪羡亩。
IO模型有哪些摩疑,講講你理解的nio ,他和bio畏铆,aio的區(qū)別是啥雷袋,談?wù)剅eactor模型。
反射的原理辞居,反射創(chuàng)建類實例的三種方式是什么楷怒。
反射中,Class.forName和ClassLoader區(qū)別 瓦灶。
描述動態(tài)代理的幾種實現(xiàn)方式鸠删,分別說出相應(yīng)的優(yōu)缺點。
動態(tài)代理與cglib實現(xiàn)的區(qū)別贼陶。
為什么CGlib方式可以對接口實現(xiàn)代理刃泡。
final的用途。
寫出三種單例模式實現(xiàn) 每界。
如何在父類中為子類自動完成所有的hashcode和equals實現(xiàn)捅僵?這么做有何優(yōu)劣家卖。
請結(jié)合OO設(shè)計理念眨层,談?wù)勗L問修飾符public、private上荡、protected趴樱、default在應(yīng)用設(shè)計中的作用馒闷。
深拷貝和淺拷貝區(qū)別。
數(shù)組和鏈表數(shù)據(jù)結(jié)構(gòu)描述叁征,各自的時間復(fù)雜度纳账。
error和exception的區(qū)別,CheckedException捺疼,RuntimeException的區(qū)別疏虫。
請列出5個運行時異常。
在自己的代碼中啤呼,如果創(chuàng)建一個java.lang.String類卧秘,這個類是否可以被類加載器加載?為什么官扣。
說一說你對java.lang.Object對象中hashCode和equals方法的理解翅敌。在什么場景下需要重新實現(xiàn)這兩個方法。
在jdk1.5中惕蹄,引入了泛型蚯涮,泛型的存在是用來解決什么問題。
這樣的a.hashcode() 有什么用卖陵,與a.equals(b)有什么關(guān)系遭顶。
有沒有可能2個不相等的對象有相同的hashcode。
Java中的HashSet內(nèi)部是如何工作的泪蔫。
什么是序列化液肌,怎么序列化,為什么序列化鸥滨,反序列化會遇到什么問題嗦哆,如何解決。
java8的新特性婿滓。
JVM知識
什么情況下會發(fā)生棧內(nèi)存溢出老速。
JVM的內(nèi)存結(jié)構(gòu),Eden和Survivor比例凸主。
JVM內(nèi)存為什么要分成新生代橘券,老年代,持久代卿吐。新生代中為什么要分為Eden和Survivor旁舰。
JVM中一次完整的GC流程是怎樣的,對象如何晉升到老年代嗡官,說說你知道的幾種主要的JVM參數(shù)箭窜。
你知道哪幾種垃圾收集器,各自的優(yōu)缺點衍腥,重點講下cms和G1磺樱,包括原理纳猫,流程,優(yōu)缺點竹捉。
垃圾回收算法的實現(xiàn)原理芜辕。
當出現(xiàn)了內(nèi)存溢出,你怎么排錯块差。
JVM內(nèi)存模型的相關(guān)知識了解多少侵续,比如重排序,內(nèi)存屏障憨闰,happen-before询兴,主內(nèi)存,工作內(nèi)存等起趾。
簡單說說你了解的類加載器诗舰,可以打破雙親委派么,怎么打破训裆。
講講JAVA的反射機制眶根。
你們線上應(yīng)用的JVM參數(shù)有哪些。
g1和cms區(qū)別,吞吐量優(yōu)先和響應(yīng)優(yōu)先的垃圾收集器選擇边琉。
怎么打出線程棧信息属百。
請解釋如下jvm參數(shù)的含義:
-server -Xms512m -Xmx512m -Xss1024K
-XX:PermSize=256m -XX:MaxPermSize=512m -
XX:MaxTenuringThreshold=20XX:CMSInitiatingOccupancyFraction=80 -
XX:+UseCMSInitiatingOccupancyOnly。
開源框架知識
簡單講講tomcat結(jié)構(gòu)变姨,以及其類加載器流程族扰,線程模型等。
tomcat如何調(diào)優(yōu)定欧,涉及哪些參數(shù) 渔呵。
講講Spring加載流程。
Spring AOP的實現(xiàn)原理砍鸠。
講講Spring事務(wù)的傳播屬性扩氢。
Spring如何管理事務(wù)的。
Spring怎么配置事務(wù)(具體說出一些關(guān)鍵的xml 元素)爷辱。
說說你對Spring的理解录豺,非單例注入的原理?它的生命周期饭弓?循環(huán)注入的原理双饥,aop的實現(xiàn)原理,說說aop中的幾個術(shù)語弟断,它們是怎么相互工作的咏花。
Springmvc 中DispatcherServlet初始化過程。
netty的線程模型夫嗓,netty如何基于reactor模型上實現(xiàn)的迟螺。
為什么選擇netty冲秽。
什么是TCP粘包舍咖,拆包矩父。解決方式是什么。
netty的fashwheeltimer的用法排霉,實現(xiàn)原理窍株,是否出現(xiàn)過調(diào)用不夠準時,怎么解決攻柠。
netty的心跳處理在弱網(wǎng)下怎么辦球订。
netty的通訊協(xié)議是什么樣的。
springmvc用到的注解瑰钮,作用是什么冒滩,原理。
springboot啟動機制浪谴。
點擊這里有一套答案版的Spring試題开睡。
操作系統(tǒng)
Linux系統(tǒng)下你關(guān)注過哪些內(nèi)核參數(shù),說說你知道的苟耻。
Linux下IO模型有幾種篇恒,各自的含義是什么。
epoll和poll有什么區(qū)別凶杖。
平時用到哪些Linux命令胁艰。
用一行命令查看文件的最后五行。
用一行命令輸出正在運行的java進程智蝠。
介紹下你理解的操作系統(tǒng)中線程切換過程腾么。
進程和線程的區(qū)別。
top 命令之后有哪些內(nèi)容杈湾,有什么作用哮翘。
線上CPU爆高,請問你如何找到問題所在毛秘。
多線程
多線程的幾種實現(xiàn)方式饭寺,什么是線程安全。
volatile的原理叫挟,作用艰匙,能代替鎖么。
畫一個線程的生命周期狀態(tài)圖抹恳。
sleep和wait的區(qū)別员凝。
sleep和sleep(0)的區(qū)別。
Lock與Synchronized的區(qū)別 奋献。
synchronized的原理是什么健霹,一般用在什么地方(比如加在靜態(tài)方法和非靜態(tài)方法的區(qū)別旺上,靜態(tài)方法和非靜態(tài)方法同時執(zhí)行的時候會有影響嗎),解釋以下名詞:重排序糖埋,自旋鎖宣吱,偏向鎖,輕量級鎖瞳别,可重入鎖征候,公平鎖,非公平鎖祟敛,樂觀鎖疤坝,悲觀鎖。
用過哪些原子類馆铁,他們的原理是什么跑揉。
JUC下研究過哪些并發(fā)工具,講講原理埠巨。
用過線程池嗎历谍,如果用過,請說明原理乖订,并說說newCache和newFixed有什么區(qū)別扮饶,構(gòu)造函數(shù)的各個參數(shù)的含義是什么,比如coreSize乍构,maxsize等甜无。
線程池的關(guān)閉方式有幾種,各自的區(qū)別是什么哥遮。
假如有一個第三方接口岂丘,有很多個線程去調(diào)用獲取數(shù)據(jù),現(xiàn)在規(guī)定每秒鐘最多有10個線程同時調(diào)用它眠饮,如何做到奥帘。
spring的controller是單例還是多例,怎么保證并發(fā)的安全仪召。
用三個線程按順序循環(huán)打印abc三個字母寨蹋,比如abcabcabc。
ThreadLocal用過么扔茅,用途是什么已旧,原理是什么,用的時候要注意什么召娜。
如果讓你實現(xiàn)一個并發(fā)安全的鏈表运褪,你會怎么做。
有哪些無鎖數(shù)據(jù)結(jié)構(gòu),他們實現(xiàn)的原理是什么秸讹。
講講java同步機制的wait和notify檀咙。
CAS機制是什么,如何解決ABA問題璃诀。
多線程如果線程掛住了怎么辦弧可。
countdowlatch和cyclicbarrier的內(nèi)部原理和用法,以及相互之間的差別(比如
countdownlatch的await方法和是怎么實現(xiàn)的)文虏。
對AbstractQueuedSynchronizer了解多少侣诺,講講加鎖和解鎖的流程殖演,獨占鎖和公平所加鎖有什么不同氧秘。
使用synchronized修飾靜態(tài)方法和非靜態(tài)方法有什么區(qū)別。
簡述ConcurrentLinkedQueue和LinkedBlockingQueue的用處和不同之處趴久。
導(dǎo)致線程死鎖的原因丸相?怎么解除線程死鎖。
非常多個線程(可能是不同機器)彼棍,相互之間需要等待協(xié)調(diào)灭忠,才能完成某種工作,問怎么設(shè)計這種協(xié)調(diào)方案座硕。
用過讀寫鎖嗎弛作,原理是什么,一般在什么場景下用华匾。
開啟多個線程映琳,如果保證順序執(zhí)行,有哪幾種實現(xiàn)方式蜘拉,或者如何保證多個線程都執(zhí)行完再拿到結(jié)果萨西。
延遲隊列的實現(xiàn)方式,delayQueue和時間輪算法的異同旭旭。
點擊這里有一套答案版的多線程試題谎脯。
TCP與HTTP
http1.0和http1.1有什么區(qū)別。
TCP三次握手和四次揮手的流程持寄,為什么斷開連接要4次,如果握手只有兩次源梭,會出現(xiàn)什么。
TIME_WAIT和CLOSE_WAIT的區(qū)別稍味。
說說你知道的幾種HTTP響應(yīng)碼废麻,比如200, 302, 404。
當你用瀏覽器打開一個鏈接(如:http://www.javastack.cn)的時候仲闽,計算機做了哪些工作步驟脑溢。
TCP/IP如何保證可靠性,說說TCP頭的結(jié)構(gòu)。
如何避免瀏覽器緩存屑彻。
如何理解HTTP協(xié)議的無狀態(tài)性验庙。
簡述Http請求get和post的區(qū)別以及數(shù)據(jù)包格式。
HTTP有哪些method
簡述HTTP請求的報文格式社牲。
HTTP的長連接是什么意思粪薛。
HTTPS的加密方式是什么,講講整個加密解密流程搏恤。
Http和https的三次握手有什么區(qū)別违寿。
什么是分塊傳送。
Session和cookie的區(qū)別熟空。
點擊這里有一套答案版的試題藤巢。
架構(gòu)設(shè)計與分布式
用java自己實現(xiàn)一個LRU。
分布式集群下如何做到唯一序列號息罗。
設(shè)計一個秒殺系統(tǒng)掂咒,30分鐘沒付款就自動關(guān)閉交易。
如何使用redis和zookeeper實現(xiàn)分布式鎖迈喉?有什么區(qū)別優(yōu)缺點绍刮,會有什么問題,分別適用什么場景挨摸。(延伸:如果知道redlock孩革,講講他的算法實現(xiàn),爭議在哪里)如果有人惡意創(chuàng)建非法連接得运,怎么解決膝蜈。
分布式事務(wù)的原理,優(yōu)缺點澈圈,如何使用分布式事務(wù)彬檀,2pc 3pc 的區(qū)別,解決了哪些問題瞬女,還有哪些問題沒解決窍帝,如何解決,你自己項目里涉及到分布式事務(wù)是怎么處理的诽偷。
什么是一致性hash坤学。
什么是restful,講講你理解的restful报慕。
如何設(shè)計一個良好的API深浮。
如何設(shè)計建立和保持100w的長連接。
解釋什么是MESI協(xié)議(緩存一致性)眠冈。
說說你知道的幾種HASH算法飞苇,簡單的也可以菌瘫。
什么是paxos算法, 什么是zab協(xié)議布卡。
一個在線文檔系統(tǒng)雨让,文檔可以被編輯,如何防止多人同時對同
一份文檔進行編輯更新忿等。
線上系統(tǒng)突然變得異常緩慢栖忠,你如何查找問題。
說說你平時用到的設(shè)計模式贸街。
Dubbo的原理庵寞,有看過源碼么,數(shù)據(jù)怎么流轉(zhuǎn)的薛匪,怎么實現(xiàn)集群捐川,負載均衡,服務(wù)注冊和發(fā)現(xiàn)蛋辈,重試轉(zhuǎn)發(fā)属拾,快速失敗的策略是怎樣的 将谊。
一次RPC請求的流程是什么冷溶。
自己實現(xiàn)過rpc么,原理可以簡單講講尊浓。Rpc要解決什么問題逞频。
異步模式的用途和意義。
編程中自己都怎么考慮一些設(shè)計原則的栋齿,比如開閉原則苗胀,以及在工作中的應(yīng)用。
設(shè)計一個社交網(wǎng)站中的“私信”功能瓦堵,要求高并發(fā)基协、可擴展等等。 畫一下架構(gòu)圖菇用。
MVC模式澜驮,即常見的MVC框架。
聊下曾經(jīng)參與設(shè)計的服務(wù)器架構(gòu)并畫圖惋鸥,談?wù)動龅降膯栴}杂穷,怎么解決的。
應(yīng)用服務(wù)器怎么監(jiān)控性能卦绣,各種方式的區(qū)別耐量。
如何設(shè)計一套高并發(fā)支付方案,架構(gòu)如何設(shè)計滤港。
如何實現(xiàn)負載均衡廊蜒,有哪些算法可以實現(xiàn)。
Zookeeper的用途,選舉的原理是什么山叮。
Zookeeper watch機制原理八堡。
Mybatis的底層實現(xiàn)原理。
請思考一個方案聘芜,實現(xiàn)分布式環(huán)境下的countDownLatch兄渺。
后臺系統(tǒng)怎么防止請求重復(fù)提交。
描述一個服務(wù)從發(fā)布到被消費的詳細過程汰现。
講講你理解的服務(wù)治理挂谍。
如何做到接口的冪等性。
如何做限流策略瞎饲,令牌桶和漏斗算法的使用場景口叙。
什么叫數(shù)據(jù)一致性,你怎么理解數(shù)據(jù)一致性嗅战。
分布式服務(wù)調(diào)用方妄田,不依賴服務(wù)提供方的話,怎么處理服務(wù)方掛掉后驮捍,大量無效資源請求的浪費疟呐,如果只是服務(wù)提供方吞吐不高的時候該怎么做,如果服務(wù)掛了东且,那么一會重啟启具,該怎么做到最小的資源浪費,流量半開的實現(xiàn)機制是什么珊泳。
dubbo的泛化調(diào)用怎么實現(xiàn)的鲁冯,如果是你,你會怎么做色查。
遠程調(diào)用會有超時現(xiàn)象薯演,如果做到優(yōu)雅的控制,JDK自帶的超時機制有哪些秧了,怎么實現(xiàn)的跨扮。
算法
10億個數(shù)字里里面找最小的10個。
有1億個數(shù)字示惊,其中有2個是重復(fù)的好港,快速找到它,時間和空間要最優(yōu)米罚。
2億個隨機生成的無序整數(shù),找出中間大小的值钧汹。
給一個不知道長度的(可能很大)輸入字符串,設(shè)計一種方案录择,將重復(fù)的字符排重拔莱。
遍歷二叉樹碗降。
有3n+1個數(shù)字,其中3n個中是重復(fù)的塘秦,只有1個是不重復(fù)的讼渊,怎么找出來。
寫一個字符串(如:www.javastack.cn)反轉(zhuǎn)函數(shù)尊剔。
常用的排序算法爪幻,快排,歸并须误、冒泡挨稿。 快排的最優(yōu)時間復(fù)雜度,最差復(fù)雜度京痢。冒泡排序的優(yōu)化方案奶甘。
二分查找的時間復(fù)雜度,優(yōu)勢祭椰。
一個已經(jīng)構(gòu)建好的TreeSet臭家,怎么完成倒排序。
什么是B+樹方淤,B-樹钉赁,列出實際的使用場景。
一個單向鏈表臣淤,刪除倒數(shù)第N個數(shù)據(jù)橄霉。
200個有序的數(shù)組,每個數(shù)組里面100個元素邑蒋,找出top20的元素。
單向鏈表按厘,查找中間的那個元素医吊。
數(shù)據(jù)庫知識
數(shù)據(jù)庫隔離級別有哪些,各自的含義是什么逮京,MYSQL默認的隔離級別是是什么卿堂。
什么是幻讀。
MYSQL有哪些存儲引擎懒棉,各自優(yōu)缺點草描。
高并發(fā)下,如何做到安全的修改同一行數(shù)據(jù)策严。
樂觀鎖和悲觀鎖是什么穗慕,INNODB的標準行級鎖有哪2種,解釋其含義妻导。
SQL優(yōu)化的一般步驟是什么逛绵,怎么看執(zhí)行計劃怀各,如何理解其中各個字段的含義。
數(shù)據(jù)庫會死鎖嗎术浪,舉一個死鎖的例子瓢对,mysql怎么解決死鎖。
MYsql的索引原理胰苏,索引的類型有哪些硕蛹,如何創(chuàng)建合理的索引,索引如何優(yōu)化硕并。
聚集索引和非聚集索引的區(qū)別妓美。
select for update 是什么含義,會鎖表還是鎖行或是其他鲤孵。
為什么要用Btree實現(xiàn)壶栋,它是怎么分裂的,什么時候分裂普监,為什么是平衡的贵试。
數(shù)據(jù)庫的ACID是什么。
某個表有近千萬數(shù)據(jù)凯正,CRUD比較慢毙玻,如何優(yōu)化。
Mysql怎么優(yōu)化table scan的廊散。
如何寫sql能夠有效的使用到復(fù)合索引桑滩。
mysql中in 和exists 區(qū)別。
數(shù)據(jù)庫自增主鍵可能的問題允睹。
MVCC的含義运准,如何實現(xiàn)的。
你做過的項目里遇到分庫分表了嗎缭受,怎么做的胁澳,有用到中間件么,比如sharding jdbc等,他們的原理知道么米者。
MYSQL的主從延遲怎么解決韭畸。
消息隊列
消息隊列的使用場景。
消息的重發(fā)蔓搞,補充策略胰丁。
如何保證消息的有序性。
用過哪些MQ喂分,和其他mq比較有什么優(yōu)缺點锦庸,MQ的連接是線程安全的嗎,你們公司的MQ服務(wù)架構(gòu)怎樣的妻顶。
MQ系統(tǒng)的數(shù)據(jù)如何保證不丟失酸员。
rabbitmq如何實現(xiàn)集群高可用蜒车。
kafka吞吐量高的原因。
kafka 和其他消息隊列的區(qū)別幔嗦,kafka 主從同步怎么實現(xiàn)酿愧。
利用mq怎么實現(xiàn)最終一致性。
使用kafka有沒有遇到什么問題邀泉,怎么解決的嬉挡。
MQ有可能發(fā)生重復(fù)消費,如何避免汇恤,如何做到冪等庞钢。
MQ的消息延遲了怎么處理,消息可以設(shè)置過期時間么因谎,過期了你們一般怎么處理基括。
緩存
常見的緩存策略有哪些,如何做到緩存(比如redis)與DB里的數(shù)據(jù)一致性财岔,你們項目中用到了
什么緩存系統(tǒng)风皿,如何設(shè)計的。
如何防止緩存擊穿和雪崩匠璧。
緩存數(shù)據(jù)過期后的更新如何設(shè)計桐款。
redis的list結(jié)構(gòu)相關(guān)的操作。
Redis的數(shù)據(jù)結(jié)構(gòu)都有哪些夷恍。
Redis的使用要注意什么魔眨,講講持久化方式,內(nèi)存設(shè)置酿雪,集群的應(yīng)用和優(yōu)劣勢遏暴,淘汰策略等。
redis2和redis3的區(qū)別执虹,redis3內(nèi)部通訊機制拓挥。
當前redis集群有哪些玩法,各自優(yōu)缺點袋励,場景。
Memcache的原理当叭,哪些數(shù)據(jù)適合放在緩存中茬故。
redis和memcached 的內(nèi)存管理的區(qū)別。
Redis的并發(fā)競爭問題如何解決蚁鳖,了解Redis事務(wù)的CAS操作嗎磺芭。
Redis的選舉算法和流程是怎樣的。
redis的持久化的機制醉箕,aof和rdb的區(qū)別钾腺。
redis的集群怎么同步的數(shù)據(jù)的书聚。
知道哪些redis的優(yōu)化操作侈贷。
Reids的主從復(fù)制機制原理。
Redis的線程模型是什么。
請思考一個方案滚局,設(shè)計一個可以控制緩存總體大小的自動適應(yīng)的本地緩存。
如何看待緩存的使用(本地緩存纤垂,集中式緩存)逸吵,簡述本地緩存和集中式緩存和優(yōu)缺點。
本地緩存在并發(fā)使用時的注意事項厢破。
搜索
elasticsearch了解多少荣瑟,說說你們公司es的集群架構(gòu),索引數(shù)據(jù)大小摩泪,分片有多少笆焰,以及一些調(diào)優(yōu)手段 。elasticsearch的倒排索引是什么见坑。
elasticsearch 索引數(shù)據(jù)多了怎么辦嚷掠,如何調(diào)優(yōu),部署鳄梅。
elasticsearch是如何實現(xiàn)master選舉的叠国。
詳細描述一下Elasticsearch索引文檔的過程。
詳細描述一下Elasticsearch搜索的過程戴尸。
Elasticsearch在部署時粟焊,對Linux的設(shè)置有哪些優(yōu)化方法?
lucence內(nèi)部結(jié)構(gòu)是什么孙蒙。