阿里面試題合集118道送答案(新總結):天貓+螞蟻金服+阿里巴巴

每一年的雙11,都是阿里新技術的演練場,也是阿里技術人一年一度的大秀秀場。

作爲國內互聯網技術的典型代表,阿里巴巴的技術一直備受着大家的關注。能進入阿里工作,是很多開發者們的目標與夢想,爲幫助開發者們提升面試技能、高效通關一線互聯網公司的面試,我們走訪了多位阿里巴巴資深技術專家以及阿里高級Java候選人,提煉總結了這份面試真題,一次整體放出送給大家。

看看自己能答對多少,如果能回答70%的題目,就大膽去阿里以及各互聯網公司試試身手吧。

本篇建議大家收藏、備用~

【阿里、天貓、螞蟻面試題目】
涵蓋:開源、Java集合、JVM、NIO、Dubbo、秒殺系統、高併發、分佈式、鎖、redis、MySQL、Linux、hashMap、中間件等。

自我介紹及工作經歷
自己優勢技術在哪些方面(釘釘)
用過哪些中間件。
做過工作流引擎沒有。
NIO的底層實現。
JVM基礎(必問),JVM GC原理,JVM怎麼實現回收內存。
線程池原理(天貓、螞蟻)
鎖的機制升降級(天貓、螞蟻)
Dubbo的原理,序列化相關問題。
Dubbo如何一條鏈接併發多個調用。
分佈式事務一致性。
從系統層面考慮,分佈式從哪些緯度考慮(天貓)
微信紅包怎麼實現。
海量數據分析。
API接口與SDI接口的區別(API是提供給別人的接口)。
Hadoop底層怎麼實現(天貓)
threadLocal,線程池,hashMap/hashTable/coccurentHashMap等(天貓)
秒殺系統的設計(天貓)
虛擬機,IO相關知識點(天貓)
Linux的命令(天貓)
一個整形數組,給定一個數,在數組中找出兩個數的和等於這個數,並打印出來,我寫的時間複雜度高,要求O(n)。(天貓)
n個整數,找出連續的m個數加和是最大。(天貓)
更重視開源技術(螞蟻金服上海)
1000個線程同時運行,怎麼防止不卡(航旅)
並列的併發消費問題(航旅)
高併發量大的話怎麼處理熱點,數據等(螞蟻金服)
如何獲取一個本地服務器上可用的端口
流量控制相關問題(螞蟻金服)
數據庫TPS是多少,是否進行測試過(天貓)
數據庫鎖隱原理(螞蟻金服網商)
分佈式鎖,redis緩存,spring aop,系統架構圖,MySQL的特性(信息平臺)
緩存擊穿有哪些方案解決(天貓)
Java怎麼挖取回收器相關原理(財富)
Java的集合都有哪些,都有什麼特點(信息平臺)
場景,同時給10萬個人發工資,怎麼樣設計併發方案,能確保在1分鐘內全部發完 打個比方會提出類似的場景(信息平臺)
【阿里巴巴面試題目】
涵蓋:一致性哈希算法、CAP、session、線程池、反射機制、http協議、Java虛擬機、分佈式系統、TCP/IP、OSI、棧、堆、分佈式系統設計等。

Java事件機制包括哪三個部分?分別介紹下。
使用線程池的原因?
線程池的作用有哪些?
幾種常見的線程池及其各自的使用場景是怎樣的。
線程池都有哪幾種工作隊列?
怎麼理解無界隊列和有界隊列?
線程池中的幾種重要的參數及流程說明。
什麼是反射機制?
說說反射機制的作用。
反射機制會不會有性能問題?
你怎麼理解http協議?
說說http協議的工作流程。
http有哪些請求提交方式?
http中的200,302,403,404,500,503都代表什麼狀態?
http get和post有什麼區別?
你怎麼理解cookie和session,有哪些不同點?
什麼是web緩存?有什麼優點?
什麼是https,說說https的工作原理?
什麼是http代理服務器,有什麼用?
什麼是虛擬主機及實現原理?
什麼是Java虛擬機,爲什麼要使用?
說說Java虛擬機的生命週期及體系結構。
說一說Java內存區域。
什麼是分佈式系統?
分佈式系統你會考慮哪些方面?
爲什麼說TCP/IP協議是不可靠的?
OSI有哪七層模型?TCP/IP是哪四層模型。
講一講TCP協議的三次握手和四次揮手流程。
爲什麼TCP建立連接協議是三次握手,而關閉連接卻是四次握手呢?爲什麼不能用兩次握手進行連接?
爲什麼TCP TIME_WAIT狀態還需要等2MSL後才能返回到CLOSED狀態?
什麼是DoS、DDoS、DRDoS攻擊?如何防禦?
描述一下Java異常層次結構。
什麼是檢查異常,不受檢查異常,運行時異常?並分別舉例說明。
finally塊一定會執行嗎?
正常情況下,當在try塊或catch塊中遇到return語句時,finally語句塊在方法返回之前還是之後被執行?
try、catch、finally語句塊的執行順序。
Java虛擬機中,數據類型可以分爲哪幾類?
怎麼理解棧、堆?堆中存什麼?棧中存什麼?
爲什麼要把堆和棧區分出來呢?棧中不是也可以存儲數據嗎?
在Java中,什麼是是棧的起始點,同是也是程序的起始點?
爲什麼不把基本類型放堆中呢?
Java中的參數傳遞時傳值呢?還是傳引用?
Java中有沒有指針的概念?
Java中,棧的大小通過什麼參數來設置?
一個空Object對象的佔多大空間?
對象引用類型分爲哪幾類?
講一講垃圾回收算法。
如何解決內存碎片的問題?
如何解決同時存在的對象創建和對象回收問題?
講一講內存分代及生命週期。
什麼情況下觸發垃圾回收?
如何選擇合適的垃圾收集算法?
JVM有哪三種垃圾回收器?
JVM中最大堆大小有沒有限制?
如何進行JVM調優?有哪些方法?
堆大小通過什麼參數設置?
吞吐量優先選擇什麼垃圾回收器?響應時間優先呢?
如何理解內存泄漏問題?有哪些情況會導致內存泄露?如何解決?
從分佈式系統部署角度考慮,分哪幾層?
如何解決業務層的數據訪問問題?
爲了解決數據庫服務器的負擔,如何做數據庫的分佈?
什麼是著名的拜占庭將軍問題?
講講CAP理念。
怎麼理解強一致性、單調一致性和最終一致性?
分佈式系統設計你會考慮哪些策略?
最常見的數據分佈方式是什麼?
談一談一致性哈希算法。
paxos是什麼?
什麼是Lease機制?
如何理解選主算法?
【阿里巴巴面試題目含答案】
1.mysql的三大引擎是啥?

mysql常用的引擎有InnoDB,MyISAM,Memory,默認是InnoDB

InnoDB:磁盤表,支持事務,支持行級鎖,B+Tree索引

ps:優點: 具有良好的ACID特性。適用於高併發,更新操作比較多的表。需要使用事務的表。對自動災難恢復有要求的表。

缺點:讀寫效率相對MYISAM比較差。佔用的磁盤空間比較大。

mysql的4大特性+4種隔離級別:

MyISAM:磁盤表,不支持事務,支持表級鎖,B+Tree索引

ps: 優點:佔用空間小,處理速度快(相對InnoDB來說)

缺點:不支持事務的完整性和併發性

MEMORY(Heap):內存表,不支持事務,表級鎖,Hash索引,不支持Blob,Text大類型

ps: 優點:速度要求快的,臨時數據

缺點:丟失以後,對項目整體沒有或者負面影響不大的時候。

2.redis的hash算法用的是啥?

redis應該是使用一致性hash算法---MurmurHash3 算法,具有低碰撞率優點,google改進的版本cityhash也是redis中用到的哈希算法。

現有的主流的大數據系統都是用的 MurmurHash本身或者改進。

3.nosql爲啥比sql快?

Nosql是非關係型數據庫,因爲不需要滿足關係數據庫數據一致性等複雜特性所以速度快;

sql是關係型數據庫,功能強大,但是效率上有瓶頸。

4.什麼是索引爲啥nosql沒索引?nosql有索引滴

索引分爲聚簇索引和非聚簇索引兩種,聚簇索引是按照數據存放的物理位置爲順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對於單行的檢索很快。

聚簇索引:有主鍵時,根據主鍵創建聚簇索引;沒有主鍵時,會用一個唯一且不爲空的索引列做爲主鍵,成爲此表的聚簇索引;如果以上兩個都不滿足那innodb自己創建一個虛擬的聚集索引

非聚簇索引:非聚簇索引都是輔助索引,像複合索引、前綴索引、唯一索引。

5.B+樹和B樹區別?

B樹的非葉子節點存儲實際記錄的指針,而B+樹的葉子節點存儲實際記錄的指針

B+樹的葉子節點通過指針連起來了, 適合掃描區間和順序查找。

【阿里巴巴面試經驗總結】
總結下來,阿里集團各子公司的面試題目主要集中在:

Java高級(虛擬機、併發線程、NIO等)。
中間件環節也是必問,特別喜歡問Redis的數據存儲、持久化、集羣等。
後端重點就是MySQL數據庫的掌握情況,從索引、sql慢查詢、長事務等性能優化入手面試。
自己實操過的項目,要提前覆盤下,也是必問的,從容從設計,到編碼,以及後續的部署等,如果都能快速回答,可以給面試官留下好的印象。
平時多積累點算法的面試題目,涉及到的主要在大數據的範圍。
類似秒殺這樣的併發項目,也一定要準備,這裏會考你對高併發場景的技術知識點掌握。
建議全程保持微笑,即便遇見不會的問題,坦然回答,建議面試完虛心請教面試官(留下好的學習印象)。
以上,是阿里系高級Java研發的最新面試題118道目,面試題目涉及範圍比較廣泛,從技術基礎到項目經驗,從技術廣度到技術深度,全方位深度挖掘候選人的技能水平。建議大家在參加任何一家公司的面試之前,都要多花時間溫故而知新,準備充分,這樣在面試過程中會從容很多,也能提高拿到offer的概念。

資料獲取通道:https://docs.qq.com/doc/DS0ljdVdNYm1CWWN3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章