面試阿里,面試官問我有沒有男朋友?
點選上方“ 開發者技術前線 ”,選擇“星標”
13:11 在看 真愛
作者: 小熙 | 責編: 可可 來源 : 開發者技術前線
剛好五一前後,又是大家 面試的高峰期,本文是Java開發 小熙(妹子) 的面試分享。之前有分享過很多面試: 拿到螞蟻金服 offer, 我不去了 。 身為技術專家的我,面試居然還要靠刷題? , 刷了一個月演算法,薪資終於Double了 等。
為何要面試?
過完年回來 公司的專案很閒,很多人覺得沒意思陸續跳槽走了,我也考慮到自己的發展,從3月底開始面,面到4月底,面了三十家公司,歲很累,但我從不打沒準備的仗, 我是一個喜歡總結經驗的人,每經過一場面試,我都會拿個本子記錄下來,哪些問題是自己之前沒遇到過的,或者哪些問題是新遇到的。 通過一段時間的備戰,面試,拿了幾家offer ,最好的是頭條和阿里,最終我入職了阿里。但可能記得深刻的是阿里面試官問我有沒有男朋友。
準備階段
演算法
Java基礎
面向物件的特徵:繼承、封裝和多型
int 和 Integer 有什麼區別;Integer的值快取範圍
說說反射的用途及實現
Http 請求的 GET 和 POST 方式的區別
MVC設計思想
什麼是Java序列化和反序列化;如何實現Java序列化;或者請描述
Serializable介面的作用
過載和重寫的區別
程序和執行緒
執行緒和程序的概念
並行和併發的概念
建立執行緒的方式及實現
程序間通訊的方式
說說 CountDownLatch、CyclicBarrier 原理和區別
說說 Semaphore 原理
說說 Exchanger 原理
ThreadLocal 原理分析;ThreadLocal為什麼會出現OOM,出現的深
層次原理
講講執行緒池的實現原理
執行緒池的幾種實現方式
執行緒的生命週期;狀態是如何轉移的
鎖機制
什麼是執行緒安全?如何保證執行緒安全?
重入鎖的概念;重入鎖為什麼可以防止死鎖?
產生死鎖的四個條件
如何檢查死鎖
volatile 實現原理
synchronized 實現原理(物件監視器)
synchronized 與 lock 的區別
AQS 同步佇列
CAS 無鎖的概念;樂觀鎖和悲觀鎖
常見的原子操作類
什麼是 ABA 問題;出現 ABA 問題 JDK 是如何解決的
樂觀鎖的業務場景及實現方式
Java 8 併發包下常見的併發類
偏向鎖、輕量級鎖、重量級鎖、自旋鎖的概念
資料庫
DDL、DML、DCL 分別指什麼
explain 命令
髒讀、幻讀、不可重複讀
事務的隔離級別
資料庫的幾大正規化
說說分庫與分表設計
分庫與分錶帶來的分散式困境與對應之策
說說 SQL 優化之道
儲存引擎的 InnoDB 與 MyISAM 區別、優缺點、使用場景
索引類別(B+樹索引、全文索引、雜湊索引);索引的區別
什麼是自適應雜湊索引(AHI)
為什麼要用 B+tree 作為 MySql 索引的資料結構
聚集索引與非聚集索引的區別
limit 20000 載入很慢怎麼解決
常見的幾種分散式 ID 的設計方案
JVM
JVM 執行時記憶體區域劃分
常見的 GC 回收演算法及其含義
常見的 JVM 效能監控和故障處理工具類
JVM 效能調優
類載入器、雙親委派模型
類載入的過程
強引用、軟引用、弱引用、虛引用
Java 記憶體模型 JMM
在對上面的內容做了準備後,我開始投慢慢面試,先從小公司開始面,小公司一般 1-2面技術,大公司 3-5 輪技術,一般都是一面基礎,二面進階,三面優化和場景,四面問規劃,五面hr.
自我評估
面試自我介紹
本人沒太多的優點,雙非本科,只不過大學學的數學專業,邏輯還行,英語水平一般。
優勢:
1 大學拿過奧數三等獎,ACM 大賽二等獎,當你的優秀大學生。
2 良好的溝通交流能力
3.較強的學習能力和邏輯思維能力
簡歷寫上,自我評價潛力好!此處有裝逼的嫌疑。
劣勢:
1. 16年畢業,經驗不多,非常尷尬,上不上,下不下的情況。
2.畢業於雙非本科,只要是本科就基本沒問題,但有的公司要985.211的,並且還要30歲以內的。
3.前一家公司是傳統行業,加入專案組時,專案穩定,每天就是有bug就修復,優化一下,其他時間就是學習的,聊騷各幹各的,工作2年多跟在養老一樣,每天都是 用一句話說就是程式設計5分鐘,扯淡2小時,專案經驗嚴重不足,很怕開發過很難的需求。
這一點是最傷的,很多公司看專案經歷,結果你告訴面試官我寫的需求都是垃圾。
學習方式
我自己情況,專案和學歷肯定無法加分的。我自己對此也有清晰的認識,因此我在平時抓緊空閒時間學習和複習技術點。
1.看面試題
正常人第一步肯定都會看面試題,我也不例外,在看的過程中,我發現有些文章寫的不錯,對我幫助不小值得推薦 。
2.對問題深入理解
在看面試題的過程,你會遇到一些自己沒接觸過的或者以前沒深入學習過的知識,例如最常問的HashMap內部實現原理,這就促使你得開始去看jdk的原始碼或者是學習一些新的東西。看原始碼是很重要的一步,起步很難,但是會讓你收益良多。
3.熟悉專案的程式碼和需求
把專案中不錯的需求拿出來,看會,程式碼熟悉好,將整個功能的流程和涉及的東西吃透。專案是面試中必問的環節,一般是以一個功能點為基礎展開問,因此你必須對這個功能有很深的認識,不能有模糊的地方。如果有時間,能把涉及到的知識點也搞懂最好。
4.網上做題和刷題
頭條會遠端面試, 一般會做題。建議去本文開頭的一些刷題網站多做些題目。
5.總結記錄
把自己每天學到的內容記錄下來,可以讓自己更有動力的複習,技術是一個枯燥的過程,你必須讓自己時刻保持有動力。
投簡歷、約面試環節
1.投簡歷渠道
BOSS直聘、獵聘網。拉鉤等(一般不靠譜),找靠譜獵頭也行。
2.簡歷不要海投
為兩個情況。
1)沒有社招面試經驗:建議採取海投的方式,只要職位要求跟自己比較匹配都可以投,累計面試經驗。
2)社招面試經驗已經足夠:投那些職位匹配、公司滿意的職位。公司評價可以去看準網,企業查等。
3.投簡歷沒下文
簡歷確實亮點不多,學歷不好,專案不行,容易被HR給刷掉,因此他們看得最直接的就是你上家的公司和你畢業的學校,如果你不是從牛逼的公司/學校出來,可能會碰到和我一樣的情況,應對的辦法就是多投。
4.一天約幾家面試合適?
最理想的情況為2家面試,上午一般在10點左右,下午一般在2點左右。建議把理想的公司放下午,因為下午的時間比較充足,可以讓公司更充分的瞭解你。我開始面的時候,每次都是上午面的不好,下午面的不錯。
5.是否該裸辭?
我一開始是邊上班邊投,然後利用調休時間,或者請假去面試。後來,面試機會越來越多,請假太頻繁了,自己都不好意思了,並且自己也已經有足夠的信心,這個時候我選擇了裸辭。
裸辭還有一個原因是,在面試過程中你會發現,遇到公司要人緊急的,如果你的入職流程過長可能錯過這個公司。
6.注意事項
1)千萬別遲到。
2)做好特殊情況處理,帶簡歷、充電寶、紙巾、傘。
面試現場
1 筆試常見的問題
面試常見的問題上面給的面試題連結基本都有。
1 手寫程式碼:手寫程式碼一般考單例、排序、執行緒、消費者生產者 排序。
2 寫SQL很常考察group by、內連線和外連線
2.面試1-5面總結
1)讓你自我介紹
2)做兩道演算法題(刷題必中)
3)問Java基礎知識
4)java 高階進階就是我準備的那些
4)問專案中指責和做了什麼
5)業務情景問題,例如:你的一個功能上了生產環境後,伺服器壓力驟增,該怎麼排查。
6)對職業的規劃
7)你有什麼想問面試官
的
8)問期望待遇
3.常問的知識要點
1
)集合相關問題(必問):
2)執行緒相關問題(必問):
3)JVM相關問題(必問):
4)設計模式相關問題(必問):
5)資料庫相關問題,針對Mysql(必問):
6)主流框架相關問題:
Spring的設計模式。
Spring中AOP。
Spring注入bean的方式。
什麼是IOC,什麼是依賴注入。
Spring是單例還是多例,怎麼修改。
Spring事務隔離級別和傳播性。
介紹下Mybatis/Hibernate的快取機制。
Mybatis的mapper檔案中#和$的區別。
Mybatis的mapper檔案中resultType和resultMap的區別。
Hibernate和Mybatis的區別。
Spring MVC和Struts2的區別。
Mybatis中DAO層介面沒有寫實現類,Mapper中的方法和DAO介面方法是怎麼繫結到一起的,其內部是怎麼實現的 。
7)其他遇到問題:
介紹下B樹、二叉樹。
IO和NIO的區別。
過載和重寫的區別。
棧和佇列。
介面和抽象類的區別。
int和Integer的自動拆箱/裝箱相關問題。 常量池相關問題。
==和equals的區別。
String和StringBuilder、StringBuffer的區別。
靜態變數、例項變數、區域性變數執行緒安全嗎,為什麼。
try、catch、finally都有return語句時執行哪個。
分散式鎖的實現。
分散式session儲存解決方案。
常用的linux命令。
Offer 流程
面試通過當然還有一些後續的環節
1)提交工資流水(大點的公司),學歷,學位照片。
2)定薪
3)體檢通知
4)背調 發offer。
5)入職材料 選擇入職日期。
一些經驗
1 .千萬別裸辭,別裸辭,別裸辭 我同事裸辭了,2個月了到現在還沒找到工作。
2.先投一些普通的小公司,等面出感覺了再去面大公司。
3.自己不會的技術簡歷不要寫
4.很多公司壓待遇,期望待遇適當提高。
5.不要去實習期6個月還打8折的公司,除非你沒有其他選擇了,否則不要去。
6.不要去參加很多大大小小的招聘會,純粹是浪費時間。
7.把面試當作一次技術的交流,不要太在意是否能被錄取。 就當學習。
8.公司一般面完就決定是否錄取了,讓你回去等訊息這種情況一般沒戲,感覺良好也沒用。
9.地方遠的儘量通過電話面試,不然白跑。
10.面試衝刺階段,要保持每天學習,無論是學習新東西還是複習舊東西。
11.無論好的壞的公司,先拿到offer再說,最後看看自己這個公司自己是否值得去。
12.通過面試體驗和麵試官的風格 可以大概判斷入職團隊的情況。
13.拉勾投的簡歷很多會被篩掉,但是拉勾還是面試機會的最主要來源。
13.理想的公司可以多投幾次,不同部門要求不一樣。
14.問到自己有深入研究過的知識,抓住機會好好表現,吹是必須的,不要輕易錯過吹得機會。
15. 大公司可以走獵頭渠道,談待遇靠譜一點。
喜歡就點個好看吧