如何成為一個更好的Java開發者?穩進大廠
阿新 • • 發佈:2021-07-30
如何成為一個更好的Java開發者?穩進大廠
頭條二面
二輪技術面,17:00~20:25,晚飯時間hr 小姐姐還特貼心的帶我體驗了一把傳說中的頭條餐廳,不超過半小時
- 聊專案,畫專案架構圖,畫一個使用者從發起請求 到接收到響應 中間經過哪些服務 每個服務做什麼事情 的流程圖
- 講專案中的難點、挑戰,你是如何解決的
- redis 中有幾種型別 & 各自底層怎麼實現的 & 專案中哪個地方用了什麼型別,怎麼使用的
- redis如何實現分散式鎖,zk如何實現分散式鎖,兩者的區別。如果service還沒執行完,分散式鎖在redis中已經過期了,怎麼解決這種問題
- synchronized底層實現,加在方法上和加在同步程式碼塊中編譯後的區別、類鎖、物件鎖
- 鎖升級的過程
- java執行時區域 及 各個區域的作用、對GC的瞭解、java記憶體模型 及 為什麼要這麼設計
- 對索引的理解,組合索引,索引的最佳實踐
- countDownLatch用過沒有,在專案中如何使用的,對aqs 的瞭解
- 寫生產者消費者問題,考慮高併發的情況,可以使用Java 類庫,白紙寫程式碼
- 如下圖所示
- 設計一個發號器,考慮叢集和高併發的情況,要求發號器生成的id是遞增趨勢,通過id可以區分出來是今天生成的id還是昨天生成的id,但是生成的id中不能直接帶有日期,要具有一定的混淆功能,白紙寫程式碼
- 一個二位陣列,每個元素都可以往上下左右四個方向走,尋找最長遞增路徑。如下圖所示,最長遞增路徑即紅色字型路徑。白紙寫程式碼。
美團四面
電話面試(40分鐘)+現場三輪技術面試(3.5小時)+hrbp面試(30分鐘)
- 資料庫和快取的一致性問題。先更新資料庫,再更新快取,若更新完資料庫了,還沒有更新快取,此時有請求過來了,訪問到了快取中的資料,怎麼辦?
- 聚簇索引/非聚簇索引,mysql索引底層實現,為什麼不用B-tree,為什麼不用hash,葉子結點存放的是資料還是指向資料的記憶體地址,使用索引需要注意的幾個地方
- mysql預設的事務隔離級別,mvcc,rr怎麼實現的,rc如何實現的
- mysql間隙鎖有沒有了解,死鎖有沒有了解,寫一段會造成死鎖的sql語句,死鎖發生瞭如何解決,mysql有沒有提供什麼機制去解決死鎖
- 談下對GC的瞭解,何為垃圾,有哪些GC演算法,有哪些垃圾回收器,cms和g1的區別,emm,還有一個直擊靈魂的問題,看過cms的原始碼嗎,笑cry
- 有沒有排查過線上oom的問題,如何排查的
- 有沒有使用過jvm自帶的工具,如何使用的
- 假設有下圖所示的一個full gc 的圖,縱向是記憶體使用情況,橫向是時間,你如何排查這個full gc的問題,怎麼去解決你說出來的這些問題。
- 說說對java中集合類的理解,專案中用過哪些,哪個地方用的,如何使用的
- 對CAS的理解,CAS帶來的問題,如何解決這些問題
- volatile底層、synchronized底層、鎖升級的過程、MESI
- ehcache支援哪些快取
- juc有研究沒有,講一講
- 聊專案,畫專案架構圖,畫一個使用者從發起請求 到接收到響應 中間經過哪些服務 每個服務做什麼事情 的流程圖
- 講專案中的難點、挑戰,如何解決的,專案這一塊會問的特別細
- 如何保證RocketMQ 訊息的順序性,如何解決重複消費問題
- 專案中如何保證介面的冪等操作
- 講一講對redis 的瞭解,專案中如何使用的,哪個地方使用的,為什麼要使用
- 哨兵機制、redis兩種備份方式的區別,專案中用的哪種,為什麼
- 講一講對分散式鎖的瞭解
- 專案中系統監控怎麼做的
- 如何理解Spring中的AOP 和 IOC,以及DI,讀過Spring原始碼沒有
- 讀過MyBatis原始碼沒有
- 說一個你瞭解最多的框架,說出你的理解
- 如何理解分散式事務,為什麼會出現這個問題,如何去解決,瞭解哪些分散式事務中介軟體
- 聊一聊對分庫分表的理解
- hystrix功能 & 在專案中怎麼使用的 & hystrix 怎麼檢測斷路器是否要開啟/關閉 & hystrix 實現原理,除hystrix之外的其他熔斷限流中介軟體有了解沒有,瞭解多少說多少
- dubbo有了解沒有
- 怎麼理解java 中和 mysql 中的樂觀鎖、悲觀鎖
- 一致性hash
京東
電話面試(30分鐘)+現場兩輪技術面試(1小時40分鐘),面完12:50,說讓我先回來,後續hr 電話和我聯絡,一週後一面的面試官問我還考慮京東嗎,對不起,已經不考慮了,希望以後有機會再合作
- 一個final修飾的屬性,定義的時候沒有初始化,在無參建構函式中初始化,可以嗎,為什麼
- 說說對java中集合類的理解,專案中用過哪些,哪個地方用的,如何使用的,為什麼不用其他的集合類
- hashMap,concurrentHashMap底層實現,
- list刪除是怎麼實現的,遍歷的時候可以刪除嗎,為什麼
- redis中有哪些資料結構,瞭解過其底層怎麼實現的嗎,和java中相似的資料結構的對比
- redis是單執行緒的還是多執行緒的,為什麼這麼快
- redis hash中某個key過大,變為String型別的大key,怎麼處理,使用中如何避免出現這種問題
- 設計模式在專案中哪個地方用到了,怎麼使用的,能不能畫一個你熟悉的設計模式的UML圖,手寫單例模式,手寫靜態內部類實現的單例模式
- 講一講mysql索引,實際工作中,哪些場景用了b+tree索引,哪些場景用了hash索引
- explain 可以看到哪些資訊,什麼資訊說明什麼,explain的結果列講一下
- Spring原始碼看過沒有,會多少講多少
- MyBatis原始碼看過沒有,會多少講多少
- cas,cas的缺點,如何解決
- aqs,countDownLatch如何實現
- 執行緒池如何實現,核心執行緒數和最大執行緒數設定成多少,為什麼這麼設定,專案中哪個地方使用了執行緒池,使用時需要注意什麼
- mysql事務隔離級別,幻讀,髒讀,專案中用什麼事務隔離級別,為什麼
- volatile底層原理、synchronized實現機制,
- 對XA、TCC的理解,瞭解哪些分散式事務框架,有什麼缺點
- feign 和 dubbo,瞭解多少說多少
- eureka 和 zookeeper,瞭解多少說多少
- hystrix 和 sentinel,瞭解多少說多少
- Spring cloud alibaba,瞭解多少說多少
- 對分庫分表、讀寫分離的瞭解,瞭解多少說多少
- 畫一下java 執行緒幾個狀態 及 狀態之間互相轉換的圖
- 聊專案,畫專案架構圖,畫一個使用者從發起請求 到接收到響應 中間經過哪些服務 每個服務做什麼事情 的流程圖,講資料庫設計 具體到部分表中有哪些欄位
- emm 我們部門體量比較大,可能需要加班,到凌晨兩三點的那種,也可能通宵,通宵是大促期間,你能接受嗎
- emm 也會加班到十點,這個不是大促期間,但也不是每天,非常態情況,你能接受嗎,你在哪裡住,過來要多久,有男朋友嗎
- 一起去吃午飯吧,我們這邊有員工餐廳,不了不了,我回家吃飯吧
下面是面試tmj 之外的公司中遇到的一些問題哈,tmj 中已經被問到的就不再重複寫了,只寫一下個別公司中我還記得的面試題(重點總結寫演算法)
演算法題
- [1,1,2,2,3,4,4,5,5,5] 找出不重複的元素(黃包車)
- 反轉連結串列,要求時間複雜度O(N),空間複雜度O(1) (火幣)
- 非遞迴實現斐波那契數列 (愛奇藝)
- 這一週股市價格為[2,6,1,4,8],求哪一天買入哪一天賣出,可獲得最大收益,最大收益為多少 (愛奇藝)
- 按照箭頭方向查詢二叉樹 (金山雲)
表a b c之間用id關聯,求陰影部分的資料 (金山雲)
- 一個整形無序陣列,裡面三個數只和等於一個目標值,求這三個數 (小米)
- 連結串列問題 (小米)
- 撲克牌問題 (小米)
- 有十張撲克牌,從上面開始抽,抽出一張放桌子上,然後再抽出一張放撲克牌的最下面,這樣迴圈往復的操作,直到手裡的牌都沒有了。這時,桌子上牌的順序正好是1 2 3 4 5 6 7 8 9 10。要求寫程式碼求出原順序
- 手寫大頂堆 (linkedMe)
- 手寫LRU 演算法 (火幣)
- 字串相加 (滴滴)
- 兩個數字型別的字串,直接轉int或者double肯定都放不下,然後求這兩個數的和,返回值還是字串,15分鐘時間,要求無bug
- 尋找目標值位置 (滴滴)
- 有一個二維陣列,陣列橫向有序,縱向有序,求目標值的位置,10分鐘時間
- 求字串“efabcbaefehiabcba”中最長的迴文數,不去重(美團)
- 反轉int型別的值x,不要借用String,只用int 即可。&& 針對該程式,寫出其應有的測試用例 (美團)
- top K 問題(每日一淘)
寫在最後
以上分享的全部資料都可免費分享領取—— 【點選這裡下載】
還有一份JAVA核心知識點整理(PDF):JVM,JAVA集合,JAVA多執行緒併發,JAVA基礎,Spring原理,微服務,Netty與RPC,網路,日誌,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,設計模式,負載均衡,資料庫,一致性雜湊,JAVA演算法,資料結構,加密演算法,分散式快取,Hadoop,Spark,Storm,YARN,機器學習,雲端計算...