在四面阿里Java崗,成功成爲阿里人之前,我都做了哪些準備?

一面

一面面試老師是個小姑娘,人特別好(不僅僅指長相啊)。

問了mysql的索引

Redis的string類型

爲什麼使用rabbitmq

rabbitmq有哪些部件,如何保證準確性跟一致性。

算法問了兩道

快排

無序數組計算每個位置大於前面的多少個數字(歸併排序)

二面

二面就開始偏向項目了,

如何進行jvm調優(然後我巴拉巴拉,老師說你寫下具體的參數跟請求命令)

cpu滿了重啓系統後好了,但是一會又滿了,如何具體解決。(老師有點嚴格,一直說我不要聽原理,你給我說具體的命令)

然後問了如何設置秒殺系統

如何設置銀行系統,會碰到什麼問題

爲什麼項目中使用了mongodb

同樣兩個算法

一個文本距離計算

(用動態規劃解決)

一個是無序數組可以存儲多少雨水問題


三面

沒有問技術

就是聊了聊怎麼學習的

看了那些書

如何設置一個搶紅包的功能

以及自己項目中碰到了哪些問題,如何解決的

項目的技術選型以及爲什麼要選擇它

然後最手寫一個算法

實現對hashmap增強,加上過期自動刪除還有淘汰策略實現最短過期時間刪除

HR面

技術規劃

還投了哪些公司

阿里瞭解

爲什麼考研

項目中最大的收穫

這裏是我四面阿里成功之前,刷過的面試題;分享給大家!因爲算法系列的比較多,所以我整理了PDF。需要的話可以關注我,文檔點擊這裏獲取

Java基礎

JAVA 中的幾種數據類型是什麼,各自佔用多少字節。

String 類能被繼承嗎,爲什麼。

兩個對象的 hashCode() 相同,則 equals() 也一定爲 true,對嗎?

String 屬於基礎的數據類型嗎?

Java 中操作字符串都有哪些類?它們之間有什麼區別?

Java 中 IO 流分爲幾種?

BIO、NIO、AIO 有什麼區別?

用過哪些 Map 類,都有什麼區別,HashMap 時線程安全的嗎,併發下使用的 Map 是什麼,他們的內部原理分別是什麼,比如存儲方法,hashcode,擴容,默認容量等。

如何將字符串反轉?

抽象類必須要有抽象方法嗎?

普通類和抽象類有哪些區別?

抽象類能使用 final 修飾嗎?

ArrayList 和 LinkedList 有什麼區別?

ConcurrentHashMap的數據結構(必考)

volatile作用(必考)

Atomic類如何保證原子性(CAS操作)(必考)

爲什麼要使用線程池(必考)


Redis

Redis的應用場景

Redis支持的數據類型(必考)

zset跳錶的數據結構(必考)

Redis的數據過期策略(必考)

Redis的LRU過期策略的具體實現

如何解決Redis緩存雪崩,緩存穿透問題

Redis的持久化機制(必考)

Redis爲什麼是單線程的?

什麼是緩存穿透?怎麼解決?

Redis持久化有幾種方式?

Redis爲什麼這麼快?(必考)

Redis怎麼實現分佈式鎖?

Redis如何做內存優化?

Redis淘汰策略有哪些?

Redis常見的性能問題有哪些?該如何解決?

Redis的使用要注意什麼?

ZooKeeper

CAP定理

ZAB協議

leader選舉算法和流程

zookeeper 是什麼?

zookeeper 有幾種部署模式?

zookeeper 怎麼保證主從節點的狀態同步?

Mysql

事務的基本要素

事務隔離級別(必考)

如何解決事務的併發問題(髒讀,幻讀)(必考)

MVCC多版本併發控制(必考)

binlog,redolog,undolog都是什麼,起什麼作用

InnoDB的行鎖/表鎖

myisam和innodb的區別,什麼時候選擇myisam

爲什麼選擇B+樹作爲索引結構(必考)

索引B+樹的葉子節點都可以存哪些東西(必考)

查詢在什麼時候不走(預期中的)索引(必考)

sql如何優化

explain是如何解析sql的

order by原理

JVM

運行時數據區域(內存模型)(必考)

垃圾回收機制(必考)

垃圾回收算法(必考)

Minor GC和Full GC觸發條件

GC中Stop the world(STW)

各垃圾回收器的特點及區別

雙親委派模型

JDBC和雙親委派模型關係

JVM 中一次完整的 GC 流程是什麼樣子的,對象如何晉升到老年代,說說你知道的幾種主要的 JVM 參數

Spring

Spring的IOC/AOP的實現(必考)

動態代理的實現方式(必考)

Spring如何解決循環依賴(三級緩存)(必考)

Spring的後置處理器

Spring的@Transactional如何實現的(必考)

Spring的事務傳播級別

BeanFactory和ApplicationContext的聯繫和區別

其他

高併發系統的限流如何實現

高併發秒殺系統的設計

負載均衡如何設計

操作系統篇

進程和線程的區別

進程同步的幾種方式

線程間同步的方式

什麼是緩衝區溢出。有什麼危害,其原因是什麼

進程中有哪幾種狀態

分頁和分段有什麼區別

多線程篇

多線程的幾種實現方式,什麼是線程安全

volatile 的原理,作用,能代替鎖嗎?

sleep 和 wait 的區別

sleep(0)的意義

Lock 和 Synchronized 的區別

synchronized 的原理是什麼,一般用在什麼地方(比如加載靜態方法和非靜態方法的區別)

補充

另外還會考一些計算機網絡之類的。像消息隊列,RPC框架這種考的比較少。計算機網絡就是分層啊,tcp/udp啊,三次握手之類的。操作系統就是進程與線程啊,進程的數據結構以及如何通信之類的。

數據結構的排序算法也比較常考,考的話一定會讓你手寫個快排。剩下的算法題就靠LeetCode的積累了。其實非算法崗考的算法題都蠻簡單的,很多題完全就是考察你智力是否正常,稍微難點的涉及到一些算法思想的按照LeetCode題目類型的分類,每種題做一兩道基本就能完全應付面試了。

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