前言
呼!終于拿到阿里offer了,可以放松一下休息休息了,想想這將近一個月的面試經歷,實在是太難了!

背景
普通本科,非985,非211的一個普通本科,應屆生,在學校的成績算不上有多好(平常玩樂居多,大學嘛,你懂得!),本來自己的能力也就找個相對來說的小公司,這次能拿到阿里offer是我萬萬沒想到的!
突遭疫情
剛進2020年,疫情突然爆發,以迅雷不及掩耳之勢席卷全國!替國家擔憂是肯定的,總不能希望國家來個生化危機吧~~
擔憂以外就是開心了,畢竟可以痛痛快快的打游戲了~
ps:很多人都懂我的想法吧
擔憂前程
平常還是有關系一些博客什么的,能看到一些有意思的東西,還有一些看上去很牛逼的技術(可以拿去和同學吹牛逼)!看到了疫情裁員等等文章,我開始著急了!
被裁掉的程式員這么多,再加上今年和我一起畢業的“程式員”,我還能找到作業嗎?
于是我找到了上一屆的學長(阿里P6),問他我這樣的情況該怎么學習,才能脫離困境!
學長也是例外的給力,首先給了我一份阿里大佬整理的學習檔案,這份檔案涵蓋了Java基礎、網路、資料庫、多執行緒、JVM、設計模式、演算法、Spirng、微服務、zookeeper、kafka、MQ、Hadoop、Spack、分布式等超多面試常問的核心知識點,還有學長自己整理的面試合集,學習視頻等等,經過長達6個月的學習、將近一個月的面試最終將自己的技術提升到了一個非常高的層次(僅僅想想過的層次)拿到了阿里的offer
分享下阿里七面程序吧
阿里淘系 七面 工程專案經驗基本為0 所以被死磕Java
總結起來:面試官喜歡拋出一個大點,看你能講多廣多深
一面: 90mins
講專案
講一個集合框架整體框架
分Collection和Map兩大類全部講一遍,每一個介面和對應實作類,他們類各自的特點,性質,基本引數,能講多深講多深
arraylist和hashset區別
為什么hashmap要在8的時候樹華
根據泊松分布概率(原始碼注釋里寫了)
hashmap執行緒安全的方式
hashtable和concurrenthashmap的各自特點,能講多深講多深
為什么hashtable被棄用了,cch1.7之前和1.8之后的區別
鎖的分類
樂觀鎖、悲觀鎖、自旋鎖、讀寫鎖、排它鎖、共享鎖、分段鎖等等各自特點,以及它們在java中具體的實作方式
Spring IOC的底層實作
XML+dom4j+工廠+單例
索引不適用的條件
索引列上有函式,不滿足最左前綴,使用了不等號,使用了范圍查詢等等
索引的分類
B-Tree索引,Hash索引,全文索引,單值索引、唯一索引、復合索引、聚簇索引、非聚簇索引等等,以及它們各自的特點
二面:40mins
講專案
執行緒池了解多少
executors創建的幾種執行緒池,直接new ThreadPoolExecutor,7個引數
執行緒池拒絕策略分別使用在什么場景
Spring AOP的底層實作
動態代理,newProxyInstance,cglib,ASM
講一下代理模式
動態代理,靜態代理
你都了解什么設計模式,他們在JDK中如何體現的
工廠,責任鏈,觀察者,建造,代理,單例,原型等等在JDK中對應的體現,,,
三面coding:2h
千萬級資料量的list找一個資料(多執行緒),搶紅包
四面:50mins
講專案
講一下JVM堆記憶體管理
堆疊上分配->TLAB->新生代、老年代->可達性分析->GC演算法->所有垃圾回收器及其優缺點和特點
那到底多大的物件會被直接扔到老年代
G1兩個region不是連續的,而且之間還有可達的參考,我現在要回收其中一個,另一個會被怎么處理
聽說過CMS的并發預處理和并發可中斷預處理嗎
平常怎么學習的和職業規劃
五面coding:2h
百萬級int資料量的一個array求和(fork/join)
六面交叉面:20mins
深挖科研專案
七面hr:20min
聊人生
面試肯定不是只面了阿里,騰訊、美團、位元組大廠也都有過面試,拿到了好幾個offer,最后根據多方面的條件選擇了阿里
再分享一下這段時間整理的面試題
JAVA基礎
- 面向物件和面向程序的區別
- Java語言有哪些特點?
- 關于JVM JDK和JRE最詳細通俗的解答
- Oracle JDK和OpenJDK的對比
- Java和C+ +的區別?
- 什么是Java程式的主類應用程式和小程式的主類有何不同?
- Java應用程式與小程式之間有哪些差別?
- 字符型常量和字串常量的區別?
- 構造器Constructor是否可被override?
- 多載和重寫的區別
- Java面向物件編程三大特性:封裝繼承多型
- String StringBuffer 和 StringBuilder 的區別是什么? String 為什么是不可變的?
- 自動裝箱與拆箱
- 在一個靜態方法內呼叫一個非靜態成員為什么是非法的?
- 在Java中定義一個不做事且沒有引數的構造方法的作用
- import java和javax有什么區別?
- 介面和抽象類的區別是什么?
- 成員變數與區域變數的區別有哪些?
- 創建一個物件用什么運算子?物件物體與物件參考有何不同?
- 什么是方法的回傳值?回傳值在類的方法里的作用是什么?
- 一個類的構造方法的作用是什么? 若一個類沒有宣告構造方法,該程式能正確執行嗎? 為什么?
- 構造方法有哪些特性?
- 靜態方法和實體方法有何不同
- 物件的相等與指向他們的參考相等,兩者有什么不同?
- 在呼叫子類構造方法之前會先呼叫父類沒有引數的構造方法其目的是?
- ==與equals(重要)
- hashCode與equals (重要)
- 為什么Java中只有值傳遞?
- 簡述執行緒、程式、行程的基本概念,以及他們之間關系是什么?
- 執行緒有哪些基本狀態?
- 關于final關鍵字的一些總結
多執行緒與高并發
- 什么是執行緒和行程?
- 請簡要描述執行緒與行程的關系,區別及優缺點?
- 說說并發與并行的區別?
- 為什么要使用多執行緒呢?
- 使用多執行緒可能帶來什么問題?
- 說說執行緒的生命周期和狀態?
- 什么是背景關系切換?
- 什么是執行緒死鎖?如何避免死鎖?
- 說說sleep0方法和wait0方法區別和共同點?
- 為什么我們呼叫 start() 方法時會執行 run() 方法,為什么我們不能直接呼叫 run() 方法?
- volatile關鍵字
- ThreadLocal
- 執行緒池
- Atomic原子類
- AQS
- Reference
JVM
- 介紹下Java記憶體區域(運行時資料區)
- 說一下Java物件的創建程序
- 物件的訪問定位有哪兩種方式?
- 說一下堆記憶體中物件的分配的基本策略
- Minor Gc利和Full GC有什么不同呢?
- 如何判斷物件是否死亡?(兩種方法)
- 簡單的介紹一-下強參考,軟參考,弱參考,虛參考
- 如何判斷一 個常量是廢棄常量?
- 如何判斷一個類是無用的類?
- 垃圾收集有哪些演算法,各自的特點?
- HotSpot為什么要分為新生代和老年代?
- 常見的垃圾回收器有哪些?
面試題肯定不止這些,不過頭條文章篇幅有限制,就展示這些吧,面試題和答案都整理成了PDF檔案,需要的朋友文末自取!

學長分享的阿里大佬整理的Java核心知識點手冊
為啥分享出來?說不定你以后也進了阿里并且和我同一個部門呢,多個朋友多條路!(進阿里后的感悟,人脈很重要)
Java基礎
這份手冊真的超級nice,重點都展示的非常透徹、學起來非常輕松

網路
網路這塊挺重要的,剛開始我也沒意識到這點,還是在學長的提點下學的

資料庫

多執行緒與高并發
手冊還附帶學習圖譜,很詳細,也很清楚,就是不知道最后發出去后怎么樣,,,


JVM

演算法

就展示這么多吧,我想已經足夠你了解這份手冊了,篇幅限制,我也沒辦法,,,
最后
前面也有提到過,阿里面試問的很深,其實不只是阿里,其他大廠也一樣,另外每個大廠又有不同的側重點,像位元組跳動非常重視演算法,四面下來問的演算法題不少!
上面提到的學習手冊還有整理的面試資料全部免費分享給大家,需要的朋友加下方小助理VX即可免費領取到

100%領取到,領取不到的可以在文章下面罵我!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/184461.html
標籤:java
