我面試過別人,也被別人面試過。二者都讓我獲益良多!
今年受疫情影響,金三銀四基本變成了很多公司裁員節流的開始,一整年都十分沉寂。明年金三銀四是許多業內人士公認的人才流動觸底反彈的時間,如果你準備在這段時間面試跳槽,將會有不菲的收穫。下面來分享一下我今年阿里Java面試的經驗,希望你能從中得到收穫。
面試對象
面試官的時候
比如我面試別人我喜歡問項目中他用到了哪些,然後針對用到的技術去問一些問題,或者說對於某些場景的一些技術實現方案是我特別喜歡問的,比如當你的接口服務數據被人截包了,你如何防止數據惡意提交? 相對來說,Java的底層和基礎會問的少一點,當然問的少不是代表不問,而是說側重點在於你的所做過的項目和你的設計思路如何。當然,懂基礎和底層更好,這樣能讓你知其然,更知其所以然,寫出來的代碼和程序更具有健壯性和可維護性。所以說,基礎還是很重要的。
被面試的時候
自己出去面試,怎麼說呢,其實還是挺緊張的,原以爲自己不會因此緊張或者焦慮,實際上,還是有的,在沒找到合適的工作的時候,甚至晚上有點睡不着覺,總覺着有什麼事壓在心頭,睡覺都不安心。既然睡不着,那還是看看資料吧,我有個習慣,睡前看點問題,第二天早上就能想到答案,睡前記點資料,第二天早上就能記得特別深刻。
廢話不多說,直接和大家分享下阿里Java面試的經驗吧。
面試技巧
先簡單說三點面試技巧:
1、背熟你的簡歷
原因:面試的第一個問題,一般都是讓你簡單介紹下你自己,或者介紹一下你最近的項目,而一個面試者,如果連自己的簡歷都無法熟知,對裏面提到的項目、技術都無法描述清楚的話,我想沒有哪家公司會接受這樣的,哪怕你是超級人才,你自我表述不行,估計也會爲此頭疼。
2、深入瞭解並熟記部分Java基礎知識
原因:大部分公司無論面試初級還是高級,無論是筆試還是面試,都會問到一系列基礎題,這些基礎題大概涵括jvm、字符串、集合、線程等等,如果說每一個讓你死記硬揹你肯定記不住,那麼就是理解中記憶了,拿JVM來說 ,如果讓你談談你對JVM的理解, 那麼你首先得知道JVM有哪些結構組成,每個結構用來做什麼的,然後考慮一個Java對象從創建到回收,如何途徑JVM這些結構的。
3、保持自信心和沉重冷靜的心態
原因:面試過程中,自信是少不了的,相信你可以, 面試的路上可以自己對自己說一句: I belive I can ! 反正我就是這麼做的,自我的心裏暗示吧,其實面對面試官的時候,你自信的狀態也會讓面試官覺得你是個很有底氣的人,至少從感覺上會給你打個高分。
面試真題
一面
自我介紹
map怎麼實現hashcode和equals,爲什麼重寫equals必須重寫hashcode
使用過concurrent包下的哪些類,使用場景等等。
concurrentHashMap怎麼實現?concurrenthashmap在1.8和1.7裏面有什麼區別
CountDownLatch、LinkedHashMap、AQS實現原理
線程池有哪些RejectedExecutionHandler,分別對應的使用場景
多線程的鎖?怎麼優化的?偏向鎖、輕量級鎖、重量級鎖?
組合索引?B+樹如何存儲的?
爲什麼緩存更新策略是先更新數據庫後刪除緩存
OOM說一下?怎麼排查?哪些會導致OOM?
OSI七層結構,每層結構都是幹什麼的?
java的線程安全queue需要注意的點
死鎖的原因,如何避免
二面
jvm虛擬機老年代什麼情況下會發生gc,給你一個場景,一臺4核8G的服務器,每隔兩個小時就要出現一次老年代gc,現在有日誌,怎麼分析是哪裏出了問題
數據庫索引有哪些?底層怎麼實現的?數據庫怎麼優化?
數據庫的事務,四個性質說一下,分別有什麼用,怎麼實現的?
服務器如何負載均衡,有哪些算法,哪個比較好,一致性哈希原理,怎麼避免DDOS攻擊請求打到少數機器
volatile講講
哪些設計模式?裝飾器、代理講講?
redis集羣會嗎?
mysql存儲引擎
事務隔離級別
不可重複度和幻讀,怎麼避免,底層怎麼實現(行鎖表鎖)
三面
項目介紹
分佈式鎖是怎麼實現的
MySQL有哪幾種join方式,底層原理是什麼
Redis有哪些數據結構?底層的編碼有哪些?有序鏈表採用了哪些不同的編碼?
Redis擴容,失效key清理策略
Redis的持久化怎麼做,aof和rdb,有什麼區別,有什麼優缺點。
MySQL數據庫怎麼實現分庫分表,以及數據同步?
單點登錄如何是實現?
談談SpringBoot和SpringCloud的理解
未來的技術職業怎麼規劃?
爲什麼選擇阿里?
所有面試真題詳解爲方便學習已整理成文檔:
如果大家感覺有用的話我這邊可以免費分享給大家,可以以下方式來獲取。另外方便的話幫忙轉發一下讓需要的程序員朋友看到。
還是那句話,如果你尋求一個改變工作現狀的機會,那明年的金三銀四絕對是個好時間。如果你已經在準備金三銀四了,不妨現在就開始學習起來。