Java專案開發如何設計整體架構
一面:
-
個人介紹加專案介紹20分鐘
-
微服務架構是什麼,它的優缺點?
-
ACID CAP BASE理論
-
分散式一致性協議,二段、三段、TCC,優缺點
-
RPC過程
-
服務註冊中心宕機了怎麼辦?
-
微服務還有其他什麼元件
-
分散式架構與微服務的關係
-
你有什麼問題要問我的?
二面:
-
各種排序演算法、未排序常規資料查詢第K大的數,時間複雜度。
-
二叉樹的深度
-
虛擬記憶體分頁瞭解不?
-
程序和執行緒區別?
-
第一二三正規化是什麼?
-
一個表一千個列值為true和false,寫sql 查詢 有300個列值為true的行。
-
髒讀和幻讀是什麼?
-
什麼物件會從新生代晉升到老年代
-
一個任務分成十個任務,最後彙總計算,不能用fork/join
-
開源框架原始碼瞭解不?
-
資料建模兩道、個人題開放性題
-
對安全方面瞭解多少?
-
安全協議有哪些 、https是啥?
-
介紹你做的專案和其中的難點。
三面:
-
從ConcurrentHashMap一路問到鎖&鎖優化->LongAdder->偽共享->快取行填充->cas等諸多技術細節;
-
從hystrix一路問到原理->自己如何實現->如何優化->響應流程式設計(reactive streams);
-
從簡單的生產者消費者模式設計到如何高效健壯實現等等。
四面:
-
如何倒序輸出單向連結串列?
-
個人直接想法是用棧先進後出的特點,把連結串列資料讀到棧裡然後輸出。
-
有更好的實現方式嗎?
-
主要問專案情況,然後根據一個專案,問如果量級擴大1000倍,你會怎麼做?有哪些優化措施?高效能&高可用措施?
五面:
-
個人的職業規劃是什麼?
-
你遇到的最大問題或者是困難是什麼?
-
你如何看待我們公司?
-
你能為我們公司帶來什麼?
-
你的優缺點是什麼?
面試總結:
-
技術基礎必須紮實:演算法、資料結構、作業系統等,螞蟻金服面試對技術的基礎非常重視,基礎紮實的同學有利於在前兩輪突出重圍。
-
技術寬度:主要集中在高併發、多執行緒、分散式架構,大以及常用中介軟體(快取等)的選型和比較。
-
技術原理深入:重點還是提前準備好JVM、多執行緒高併發這塊。
-
參與的專案總結:你需要清楚你所做專案的關鍵細節、優化、特點、原理。
-
很多所用第三方庫&中介軟體等的原理,即使你不知道,也要有自己的想法能夠說出如何代替實現,比如單點登入的替代方案。
最後
很多程式設計師,整天沉浸在業務程式碼的 CRUD 中,業務中沒有大量資料做併發,缺少實戰經驗,對併發僅僅停留在瞭解,做不到精通,所以總是與大廠擦肩而過。
我把私藏的這套併發體系的筆記和思維腦圖分享出來,理論知識與專案實戰的結合,我覺得只要你肯花時間用心學完這些,一定可以快速掌握併發程式設計。
不管是查缺補漏還是深度學習都能有非常不錯的成效,需要的話記得幫忙點個贊支援一下
整理不易,覺得有幫助的朋友可以幫忙點贊分享支援一下小編~