蚂蚁金服面试总结
上個月參加了螞蟻金服的一面、二面感覺自身還存在很多問題,今天稍微總結下自身存在的不足,以便以后再接再厲。
某天早上在Boss上投了一份簡歷,中午就來了面試的電話。說是螞蟻金服的面試官。
然后就開始了螞蟻金服公司一面:
- 項目中那些部分是覺得有挑戰性的。會對你的回答進行提問。
- 因為項目的原因我回答了有關最短路徑搜索,就問了深搜、廣搜、A*方面的算法
- A*相對廣搜有那些優勢和你的實現方式
- 怎么理解A*中局部最優和全局最優的關系
- HTTP的流轉流程和每一層做了什么操作,做了什么優化(面試的時候沒有了解深入,后面瘋狂復習了)
- HTTP的缺點和優化方式
- JVM的運行時的區域劃分,每個區域有什么作用
- 出現內存溢出的時候怎么進行排查?什么時候會出現方法區溢出?怎么進行排查?
- 出現線程堵塞的時候怎么進行排查?
- 項目中使用過那些設計模式?每個設計模式有什么優點在哪里用的比較多,結合項目或者源碼分析一下。
- 談談你最熟悉的開源代碼
- Dubbo、spring中令人印象深刻代碼設計。dubbo大概可以分為幾層?
- 實現自定義注解需要那幾個步驟,spring在自定義注解上做了哪些優化
- 你們公司自己封裝的自定義注解和springMVC有什么區別,缺點是什么
- 如果讓你設計一個并發任務管理系統,你會分為那幾個部分,每個部分有什么作用。每個部分怎么進行協作
- 選出一個模塊講講你該怎么具體實現。
- JDK的集合類了解多少?hashmap怎么解決hash沖突?
- ConcurrentHashMap怎么實現并發
- 對鎖了解多少,分別講講是怎么實現的。
- 公平鎖和非公平鎖的區別。獨占鎖和共享鎖的區別和實現。
- AQS的了解
- 談談高并發的了解,可以分為哪幾個方面的優化?
- 限流使用什么算法限流?
- 數據庫層面使用什么方法?
- 如果數據庫分庫分表怎么變別某條sql放在哪里
- 擴容的時候處理新老數據
- 有什么問題想問
- 問:勝任這個工作需要有哪些技術,你們項目用了那些技術棧
- 問:面試中自己身上有哪些不足
- 問:能否請教下二面需要強化一下哪些知識
過了大半個月終于收到了二面的通知,是現場面試。
螞蟻金服二面:
- 請在和黑板上畫一下你現在負責的項目的架構
- 項目中有沒有特別難或者你覺得很有挑戰性的問題
- 請寫一下A*的原理和偽代碼
- 對java內存模型了解多少
- 堆是怎么劃分的
- 新建一個大對象放到堆里的步驟是什么
- 遇到內存溢出問題怎么排查和解決
- 遇到棧溢出怎么解決
- 你最熟悉的jdk源碼是什么
- 把200W個對象放到HashMap中應該注意哪些細節
- 把一個對象從上面的集合中取出來要注意哪些細節
- 請手寫一個多線程求10W數據總和的偽代碼
一面是電話面試,差不多進行了100分鐘(內心是崩潰的),從面試內容(有部分內容忘記或者忽略了)中也可以看出一面是點出發,來考察面試者的知識廣度和深度。問題也都是一些網上比較多的問題,其中比較考驗能力的是讓你設計一個并發監控系統比較靈活,需要從看過的系統或者書籍來類比出需要哪些模塊和怎么實現這些模塊。還好我看過dubbo的注冊模塊稍微講了一下。
二面相對一面時間短,所以面試官都是直接提問你最熟悉的項目,算法,源碼等方面。并會更具你的回答來進行提問或者出題,相對于一面最大的不同是較為靈活。如我回答最熟悉的jdk源碼是hashMap時,面試官直接扔給我一個題目讓我回答注意點,這樣既可以考你對源碼的了解程度,同時也看你對其中的注意點的概括和理解程度。
目前還沒有收到二面的結果,感覺自己已經涼涼。
從兩次面試中我也發現自己存在的問題:
總結
- 上一篇: 2022Java最新真实面试题汇总
- 下一篇: 不可多得的干货!互联网公司常用分库分表方