每一年的雙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的概念。
覺得有用請點贊支援下,謝謝。
送大家【阿裡進階Java必考題目與答案】用于參考,,需要擷取資料文檔的朋友 可以關注+轉發後點選這裡免費領取