你不知道面試JavaP7崗的那些事:通過阿里巴巴,螞蟻金服的面試,順利拿下offer

16年剛畢業,交給我的第一個任務是學習codis的負載均衡策略,並將其應用到公司自研的分佈式緩存上。codis是go寫的,我第一反應是我能看懂嗎。但還是硬着頭皮去看了源碼,我印象非常深刻,codis的負載均衡是用三個嵌套的for循環寫的,go語言並沒有成爲障礙,反而給我很多自信。但這僅僅是個開始。更難的是如何管理集羣,擴容、縮容、遷移時集羣狀態的管理。

最初我沒掌握方法,一股腦的寫,發現實現了A功能,但B功能有問題了,深刻體會到了改了一個bug,引入新bug的痛苦。我把很多功能和判斷寫在一起,導致這一問題。探索的過程花了很久,最終我慢慢領悟了一些方法,先將流程肢解開,畫流程圖,像八爪魚一樣,將每個圖中每個塊(步驟)用一個函數實現,將所有函數按照流程拼在一起,後面當我發現bug,只在拼接的方法上做了調整,並沒有修改太多代碼。

經過三個月的開發和測試,完全跑通。這個項目在當年獲得了壹錢包年度優秀項目提名,看着其他項目都是百人規模,而這個項目的核心成員只有3、4個人時,自豪感油然而生。這裏我也非常感謝我的領導。

我的建議是勇於承擔任務,逼着自己做些有挑戰的工作。

自我介紹Java都學了些什麼?

答:集合、IO、多線程、框架等等說說多線程吧答:說了一下多線程的實現,同步,優化說一下線程池,線程池裏面的線程的狀態有哪些?數據結構學了些什麼?Hashmap和hashtable的區別?Hashmap的數據結構,Hash的具體實現(這塊答得不好)設計模式有了解嗎?

答:談了一下單例模式、工廠模式、代理模式,順便說了一下Spring的AOP是基於代理模式的,可以實現日誌記錄等功能。數據庫事務你瞭解嗎?髒讀是什麼,幻讀是什麼?

1.mysql的三大引擎是啥?

mysql常用的引擎有InnoDB,MyISAM,Memory,
**默認是InnoDBInnoDB:**磁盤表,支持事務,支持行級鎖,
B+Tree索引ps:優點: 具有良好的ACID特性。適用於高併發,更新操作比較多的表。需要使用事務的表。對自動災難恢復有要求的表。缺點:讀寫效率相對MYISAM比較差。佔用的磁盤空間比較大。
**mysql的4大特性+4種隔離級別:**MyISAM:磁盤表,不支持事務,支持表級鎖,B+Tree索引ps: 優點:佔用空間小,處理速度快(相對InnoDB來說)缺點:不支持事務的完整性和併發性MEMORY(Heap):內存表,不支持事務,表級鎖,Hash索引,不支持Blob,Text大類型ps: 優點:速度要求快的,臨時數據缺點:丟失以後,對項目整體沒有或者負面影響不大的時候。

2.redis的hash算法用的是啥?
redis應該是使用一致性hash算法—MurmurHash3 算法,具有低碰撞率優點,google改進的版本cityhash也是redis中用到的哈希算法。現有的主流的大數據系統都是用的 MurmurHash本身或者改進3,nosql爲啥比sql快?Nosql是非關係型數據庫,因爲不需要滿足關係數據庫數據一致性等複雜特性所以速度快;sql是關係型數據庫,功能強大,但是效率上有瓶頸

3.什麼是索引爲啥nosql沒索引?

nosql有索引滴索引分爲聚簇索引和非聚簇索引兩種,聚簇索引是按照數據存放的物理位置爲順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對於單行的檢索很快。

聚簇索引:有主鍵時,根據主鍵創建聚簇索引;沒有主鍵時,會用一個唯一且不爲空的索引列做爲主鍵,成爲此表的聚簇索引;如果以上兩個都不滿足那innodb自己創建一個虛擬的聚集索引

非聚簇索引:非聚簇索引都是輔助索引,像複合索引、前綴索引、唯一索引

4.B+樹和B樹區別?

B樹的非葉子節點存儲實際記錄的指針,而B+樹的葉子節點存儲實際記錄的指

B+樹的葉子節點通過指針連起來了, 適合掃描區間和順序查找。

5.Java容器有哪些?哪些是同步容器,哪些是併發容器?

6.ArrayList和LinkedList的插入和訪問的時間複雜度?

7.java反射原理, 註解原理?

8.新生代分爲幾個區?使用什麼算法進行垃圾回收?爲什麼使用這個算法?

9.HashMap在什麼情況下會擴容,或者有哪些操作會導致擴容?

10.HashMap push方法的執行過程?

11.HashMap檢測到hash衝突後,將元素插入在鏈表的末尾還是開頭?

12.1.8還採用了紅黑樹,講講紅黑樹的特性,爲什麼人家一定要用紅黑樹而不是AVL、B樹之類的?

13.https和http區別,有沒有用過其他安全傳輸手段?

14.線程池的工作原理,幾個重要參數,然後給了具體幾個參數分析線程池會怎麼做,最後問阻塞隊列的作用是什麼?

15.linux怎麼查看系統負載情況?

16.請詳細描述springmvc處理請求全流程?18. spring 一個bean裝配的過程?

17.講一講AtomicInteger,爲什麼要用CAS而不是synchronized?

螞蟻花唄二面

1.查詢中哪些情況不會使用索引?

2.數據庫索引,底層是怎樣實現的,爲什麼要用B樹索引?

3.Mysql主從同步的實現原理?4. MySQL是怎麼用B+樹?

5.談談數據庫樂觀鎖與悲觀鎖?

6.有使用過哪些NoSQL數據庫?MongoDB和Redis適用哪些場景?

7.描述分佈式事務之TCC服務設計?

8.Redis和memcache有什麼區別?Redis爲什麼比memcache有優勢?

9.考慮redis的時候,有沒有考慮容量?大概數據量會有多少?

螞蟻花唄三面

1.介紹項目

2.各種聊項目,從項目的架構設計到部署流程。

3.solr和mongodb的區別,存數據爲什麼不用solr?

4.還是要聊項目

5.談談分佈式鎖、以及分佈式全局唯一ID的實現比較?

6.集羣監控的時候,重點需要關注哪些技術指標?這些指標如何優化?

7.從千萬的數據到億級的數據,會面臨哪些技術挑戰?你的技術解決思路?

8.最近兩年遇到的最大的挫折,從挫折中學到了什麼?

9.最近有沒有學習過新技術?

10.有啥想問我的?

基本就是這些問題,倒是不難,就是問的很抽象很宏觀,差不都是自己一直在說,然後面試官聽到你說的關鍵點就提出來具體問問。

如果你想突破自己的天花板,那一定要別人付出更多,這個過程是很辛苦的。如果你做好了充足的準備,那就自信的表達你的觀點,不要因爲不自信讓面試官覺得你掌握的不紮實。如果你不會或拿不準,如實告知即可,遇到不會的很正常,不要不懂裝懂。如果你認準了一條路,堅持走下去,你一定會獲得很多收穫。

答案解析:多線程面試專題以及答案.pdf
在這裏插入圖片描述
設計模式面試題專題及答案PDF
在這裏插入圖片描述
面試必備悲觀鎖與樂觀鎖PDF
在這裏插入圖片描述
Redis面試題專題及答案上PDF
在這裏插入圖片描述
SpringBoot面試題專題及答案PDF
在這裏插入圖片描述
Spring Mvc面試題專題及答案PDF
在這裏插入圖片描述
由於篇幅限制,小編就把大綱整理了一下,小編已經把面試資料整理全啦,感謝大家的喜歡和支持。
在這裏插入圖片描述

發佈了52 篇原創文章 · 獲贊 5 · 訪問量 8756
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章