每一年的雙11走触,都是阿里新技術(shù)的演練場瞒御,也是阿里技術(shù)人一年一度的大秀秀場羽德。
作為國內(nèi)互聯(lián)網(wǎng)技術(shù)的典型代表几莽,阿里巴巴的技術(shù)一直備受著大家的關(guān)注。能進(jìn)入阿里工作宅静,是很多開發(fā)者們的目標(biāo)與夢想章蚣,為幫助開發(fā)者們提升面試技能、高效通關(guān)一線互聯(lián)網(wǎng)公司的面試姨夹,我們走訪了多位阿里巴巴資深技術(shù)專家以及阿里高級Java候選人纤垂,提煉總結(jié)了這份面試真題,一次整體放出送給大家磷账。
看看自己能答對多少峭沦,如果能回答70%的題目,就大膽去阿里以及各互聯(lián)網(wǎng)公司試試身手吧逃糟。
本篇建議大家收藏吼鱼、備用~
【阿里、天貓绰咽、螞蟻面試題目】
涵蓋:開源菇肃、Java集合、JVM取募、NIO琐谤、Dubbo、秒殺系統(tǒng)玩敏、高并發(fā)斗忌、分布式、鎖旺聚、redis织阳、MySQL、Linux砰粹、hashMap陈哑、中間件等。
1.自我介紹及工作經(jīng)歷伸眶。
2.自己優(yōu)勢技術(shù)在哪些方面。
3.用過哪些中間件刽宪。
4.做過工作流引擎沒有厘贼。
5.NIO的底層實(shí)現(xiàn)。
6.JVM基礎(chǔ)(必問)圣拄,JVM GC原理嘴秸,JVM怎么實(shí)現(xiàn)回收內(nèi)存。
7.線程池原理是怎樣的?
8.鎖的機(jī)制升降級岳掐。
9.Dubbo原理凭疮、以及序列化等相關(guān)問題。
10.Dubbo如何一條鏈接并發(fā)多個(gè)調(diào)用串述。
11.說說你對分布式事務(wù)一致性的理解执解。
12.從系統(tǒng)層面考慮,分布式應(yīng)該考慮哪些緯度纲酗。
13.微信紅包的實(shí)現(xiàn)原理衰腌。
14.海量數(shù)據(jù)分析怎樣實(shí)現(xiàn)。
15.API接口(提供給他人使用)與SDI接口的區(qū)別是什么觅赊。
16.如何實(shí)現(xiàn)Hadoop底層(天貓)
17.threadLocal右蕊,線程池,hashMap/hashTable/coccurentHashMap等(天貓)
18.談?wù)勅绾卧O(shè)計(jì)秒殺系統(tǒng)吮螺。
19.虛擬機(jī)饶囚、IO等相關(guān)知識點(diǎn)。
20.Linux命令鸠补。
21.一個(gè)整形數(shù)組萝风,給定一個(gè)數(shù),在數(shù)組中找出兩個(gè)數(shù)的和等于這個(gè)數(shù)莫鸭,并打印出來闹丐,我寫的時(shí)間復(fù)雜度高,要求O(n)被因。
22.n個(gè)整數(shù)卿拴,找出連續(xù)的m個(gè)數(shù)加和是最大。
23.開源技術(shù)了解多少梨与。
24.1000個(gè)線程同時(shí)運(yùn)行堕花,怎么防止不卡。
25.并列的并發(fā)消費(fèi)問題粥鞋。
26.大量高并發(fā)量情況下缘挽,如何處理熱點(diǎn)、數(shù)據(jù)等呻粹。
27.如何獲取一個(gè)本地服務(wù)器上可用的端口壕曼。
28.流量控制相關(guān)問題。
29.數(shù)據(jù)庫TPS是多少等浊。
30.數(shù)據(jù)庫鎖隱的原理腮郊。
31.分布式鎖、Redis緩存筹燕,Spring aop轧飞,系統(tǒng)架構(gòu)圖衅鹿,MySQL的特性。
32.緩存擊穿的解決方案有哪些过咬。
33.Java怎么挖取回收器相關(guān)原理大渤。
34.Java集合都有哪些,以及其特點(diǎn)是什么掸绞。
35.高并發(fā)場景相關(guān)題目:同時(shí)給10萬個(gè)人發(fā)工資泵三,你會(huì)怎么去設(shè)計(jì)并發(fā)方案,以確保在1分鐘內(nèi)全部發(fā)完集漾,打個(gè)比方會(huì)提出類似的場景切黔。
【阿里巴巴面試題目】
涵蓋:一致性哈希算法、CAP具篇、session纬霞、線程池、反射機(jī)制驱显、http協(xié)議诗芜、Java虛擬機(jī)、分布式系統(tǒng)埃疫、TCP/IP伏恐、OSI、棧栓霜、堆翠桦、分布式系統(tǒng)設(shè)計(jì)等。
1.Java事件機(jī)制包括哪三個(gè)部分胳蛮?分別介紹下狸捕。
2.使用線程池的原因绘证?
3.線程池的作用有哪些签餐?
4.幾種常見的線程池及其各自的使用場景是怎樣的菱鸥。
5.線程池都有哪幾種工作隊(duì)列?
6.怎么理解無界隊(duì)列和有界隊(duì)列抚垄?
7.線程池中的幾種重要的參數(shù)及流程說明蜕窿。
8.什么是反射機(jī)制?
9.說說反射機(jī)制的作用呆馁。
10.反射機(jī)制會(huì)不會(huì)有性能問題桐经?
11.你怎么理解http協(xié)議?
12.說說http協(xié)議的工作流程浙滤。
13.http有哪些請求提交方式阴挣?
14.http中的200,302,403,404,500,503都代表什么狀態(tài)?
15.http get和post有什么區(qū)別瓷叫?
16.你怎么理解cookie和session屯吊,有哪些不同點(diǎn)?
17.什么是web緩存摹菠?有什么優(yōu)點(diǎn)盒卸?
18.什么是https,說說https的工作原理次氨?
19.什么是http代理服務(wù)器蔽介,有什么用?
20.什么是虛擬主機(jī)及實(shí)現(xiàn)原理煮寡?
21.什么是Java虛擬機(jī)虹蓄,為什么要使用?
22.說說Java虛擬機(jī)的生命周期及體系結(jié)構(gòu)幸撕。
23.說一說Java內(nèi)存區(qū)域薇组。
24.什么是分布式系統(tǒng)?
25.分布式系統(tǒng)你會(huì)考慮哪些方面坐儿?
26.為什么說TCP/IP協(xié)議是不可靠的律胀?
27.OSI有哪七層模型?TCP/IP是哪四層模型貌矿。
28.TCP協(xié)議的三次握手炭菌,四次揮手流程。
29.為什么TCP建立連接協(xié)議是三次握手逛漫,而關(guān)閉連接卻是四次握手呢黑低?為什么不能用兩次握手進(jìn)行連接?
30.為什么TCP TIME_WAIT狀態(tài)還需要等2MSL后才能返回到CLOSED狀態(tài)酌毡?
31.什么是DoS克握、DDoS、DRDoS攻擊阔馋?如何防御玛荞?
32.描述一下Java異常層次結(jié)構(gòu)。
33.什么是檢查異常呕寝,不受檢查異常勋眯,運(yùn)行時(shí)異常?并分別舉例說明下梢。
34.finally塊一定會(huì)執(zhí)行嗎客蹋?
35.正常情況下,當(dāng)在try塊或catch塊中遇到return語句時(shí)孽江,finally語句塊在方法返回之前還是之后被執(zhí)行讶坯?
36.try、catch岗屏、finally語句塊的執(zhí)行順序辆琅。
37.Java虛擬機(jī)中漱办,數(shù)據(jù)類型可以分為哪幾類?
38.怎么理解棧婉烟、堆娩井?堆中存什么?棧中存什么似袁?
39.為什么要把堆和棧區(qū)分出來呢洞辣?棧中不是也可以存儲數(shù)據(jù)嗎?
40.在Java中昙衅,什么是是棧的起始點(diǎn)扬霜,同是也是程序的起始點(diǎn)?
41.為什么不把基本類型放堆中呢而涉?
42.Java中的參數(shù)傳遞時(shí)傳值呢著瓶?還是傳引用?
43.Java中有沒有指針的概念婴谱?
44.Java中蟹但,棧的大小通過什么參數(shù)來設(shè)置?
45.一個(gè)空Object對象的占多大空間谭羔?
46.對象引用類型分為哪幾類华糖?
47.講一講垃圾回收算法。
48.如何解決內(nèi)存碎片的問題瘟裸?
49.如何解決同時(shí)存在的對象創(chuàng)建和對象回收問題客叉?
50.講一講內(nèi)存分代及生命周期。
51.什么情況下觸發(fā)垃圾回收话告?
52.如何選擇合適的垃圾收集算法兼搏?
53.JVM有哪三種垃圾回收器?
54.JVM中最大堆大小有沒有限制沙郭?
55.如何進(jìn)行JVM調(diào)優(yōu)佛呻?有哪些方法?
56.堆大小通過什么參數(shù)設(shè)置病线?
57.吞吐量優(yōu)先選擇什么垃圾回收器吓著?響應(yīng)時(shí)間優(yōu)先呢?
58.如何理解內(nèi)存泄漏問題送挑?有哪些情況會(huì)導(dǎo)致內(nèi)存泄露绑莺?如何解決?
59.從分布式系統(tǒng)部署角度考慮惕耕,分哪幾層纺裁?
60.如何解決業(yè)務(wù)層的數(shù)據(jù)訪問問題?
61.為了解決數(shù)據(jù)庫服務(wù)器的負(fù)擔(dān)司澎,如何做數(shù)據(jù)庫的分布欺缘?
62.什么是著名的拜占庭將軍問題栋豫?
63.講講CAP理念。
64.怎么理解強(qiáng)一致性谚殊、單調(diào)一致性和最終一致性笼才?
65.分布式系統(tǒng)設(shè)計(jì)你會(huì)考慮哪些策略?
66.最常見的數(shù)據(jù)分布方式是什么络凿?
67.談一談一致性哈希算法。
68.paxos是什么昂羡?
69.什么是Lease機(jī)制絮记?
70.如何理解選主算法?
【阿里巴巴面試題目含答案】
1.mysql的三大引擎是啥虐先?
mysql常用的引擎有InnoDB怨愤,MyISAM,Memory蛹批,默認(rèn)是InnoDB
InnoDB:磁盤表撰洗,支持事務(wù),支持行級鎖腐芍,B+Tree索引
ps:優(yōu)點(diǎn): 具有良好的ACID特性差导。適用于高并發(fā),更新操作比較多的表猪勇。需要使用事務(wù)的表设褐。對自動(dòng)災(zāi)難恢復(fù)有要求的表。
缺點(diǎn):讀寫效率相對MYISAM比較差泣刹。占用的磁盤空間比較大助析。
mysql的4大特性+4種隔離級別:
MyISAM:磁盤表,不支持事務(wù)椅您,支持表級鎖外冀,B+Tree索引
ps: 優(yōu)點(diǎn):占用空間小,處理速度快(相對InnoDB來說)
缺點(diǎn):不支持事務(wù)的完整性和并發(fā)性
MEMORY(Heap):內(nèi)存表掀泳,不支持事務(wù)雪隧,表級鎖,Hash索引开伏,不支持Blob,Text大類型
ps: 優(yōu)點(diǎn):速度要求快的膀跌,臨時(shí)數(shù)據(jù)
缺點(diǎn):丟失以后,對項(xiàng)目整體沒有或者負(fù)面影響不大的時(shí)候固灵。
2.redis的hash算法用的是啥捅伤?
redis應(yīng)該是使用一致性hash算法---MurmurHash3 算法,具有低碰撞率優(yōu)點(diǎn)巫玻,google改進(jìn)的版本cityhash也是redis中用到的哈希算法丛忆。
現(xiàn)有的主流的大數(shù)據(jù)系統(tǒng)都是用的 MurmurHash本身或者改進(jìn)祠汇。
3.nosql為啥比sql快?
Nosql是非關(guān)系型數(shù)據(jù)庫熄诡,因?yàn)椴恍枰獫M足關(guān)系數(shù)據(jù)庫數(shù)據(jù)一致性等復(fù)雜特性所以速度快可很;
sql是關(guān)系型數(shù)據(jù)庫,功能強(qiáng)大凰浮,但是效率上有瓶頸我抠。
4.什么是索引為啥nosql沒索引?nosql有索引滴
索引分為聚簇索引和非聚簇索引兩種袜茧,聚簇索引是按照數(shù)據(jù)存放的物理位置為順序的菜拓,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度笛厦,而非聚簇索引對于單行的檢索很快纳鼎。
聚簇索引:有主鍵時(shí),根據(jù)主鍵創(chuàng)建聚簇索引裳凸;沒有主鍵時(shí)贱鄙,會(huì)用一個(gè)唯一且不為空的索引列做為主鍵,成為此表的聚簇索引姨谷;如果以上兩個(gè)都不滿足那innodb自己創(chuàng)建一個(gè)虛擬的聚集索引
非聚簇索引:非聚簇索引都是輔助索引逗宁,像復(fù)合索引、前綴索引梦湘、唯一索引疙剑。
5.B+樹和B樹區(qū)別?
B樹的非葉子節(jié)點(diǎn)存儲實(shí)際記錄的指針践叠,而B+樹的葉子節(jié)點(diǎn)存儲實(shí)際記錄的指針
B+樹的葉子節(jié)點(diǎn)通過指針連起來了, 適合掃描區(qū)間和順序查找言缤。
【阿里巴巴面試經(jīng)驗(yàn)總結(jié)】
總結(jié)下來,阿里集團(tuán)各子公司的面試題目主要集中在:
1.高級Java禁灼,譬如虛擬機(jī)管挟、并發(fā)線程、分布式弄捕、NIO等僻孝。
2.中間件方面,譬如Redis的實(shí)現(xiàn)原理守谓、集群穿铆、數(shù)據(jù)存儲、持久化等斋荞。
3.后端部分荞雏,譬如候選人的MySQL數(shù)據(jù)庫的掌握情況,從索引、sql慢查詢凤优、長事務(wù)等性能優(yōu)化方面悦陋。
4.自己實(shí)操過的項(xiàng)目,是面試中的重點(diǎn)筑辨,從容從設(shè)計(jì)到編碼俺驶,以及后續(xù)環(huán)境部署等等。
5.大數(shù)據(jù)相關(guān)的算法題目必問棍辕。
6.秒殺暮现、高并發(fā)項(xiàng)目也是必問的,主要考查候選人對高并發(fā)場景的技術(shù)知識點(diǎn)掌握程度楚昭。
7.面試過程中自信很重要送矩,即便遇到不會(huì)的問題,也坦然回答哪替,在面試結(jié)束虛心請教面試官,可以給面試官留下謙遜愛學(xué)習(xí)的印象菇怀。
以上凭舶,是阿里系高級Java研發(fā)的最新面試題118道,面試題目涉及范圍比較廣泛爱沟,從技術(shù)基礎(chǔ)到項(xiàng)目經(jīng)驗(yàn)帅霜,從技術(shù)廣度到技術(shù)深度,全方位深度挖掘候選人的技能水平呼伸。建議大家在參加任何一家公司的面試之前身冀,都要多花時(shí)間溫故而知新,準(zhǔn)備充分括享,這樣在面試過程中會(huì)從容很多搂根,也能提高拿到offer的概率。
覺得有用請點(diǎn)贊支持下铃辖,送大家【阿里高級Java必考題目與答案】用于參考剩愧,關(guān)注+私信回復(fù)【阿里】,立即得到答案鏈接地址~
我是Mike陳睿娇斩,專注分享:BAT架構(gòu)技術(shù)干貨連載+BAT面試真題及答案等純技術(shù)干貨仁卷。
------end------
簡書號推薦閱讀:
BAT架構(gòu)師所具備的完整Java技術(shù)知識圖譜
Kafka、RocketMQ犬第、RabbitMQ的優(yōu)劣勢比較