oppoJava面試題,java聲明全局變量的關鍵字

螞蟻一面

??就做了?道算法題,要求兩?時內完成,給了?度為N的有重復元素的數組,要求輸出第10?的數。典型的TopK問題,快排算法搞定。算法題要注意的是合法性校驗、邊界條件以及異常的處理。另外,如果要寫測試?例,?定要保證測試覆蓋場景盡可能全。加上平時刷刷算法題,這種考核應該沒問題的。

螞蟻二面

  • ?我介紹下唄
  • 開源項?貢獻過代碼么?(Dubbo提過?個打印accesslog的bug算么)
  • ?前在部?做什么,業務簡單介紹下,內部有哪些系統,作?和交互過程說下
  • Dubbo踩過哪些坑,分別是怎么解決的?(說了異常處理時業務異常捕獲的問題,?定義了?個異常攔截器)
  • 開始進?正題,說下你對線程安全的理解(多線程訪問同?個對象,如果不需要考慮額外的同步,調?對象的?為就可以獲得正確的結果就是線程安全)
  • 事務有哪些特性?(ACID)
  • 怎么理解原?性?(同?個事務下,多個操作要么成功要么失敗,不存在部分成功或者部分失敗的情況)
  • 樂觀鎖和悲觀鎖的區別?(悲觀鎖假定會發?沖突,訪問的時候都要先獲得鎖,保證同?個時刻只有線程獲得鎖,讀讀也會阻塞;樂觀鎖假設不會發?沖突,只有在提交操作的時候檢查是否有沖突)這兩種鎖在Java和MySQL分別是怎么實現的?(Java樂觀鎖通過CAS實現,悲觀鎖通過synchronize實現。mysql樂觀鎖通過MVCC,也就是版本實現,悲觀鎖可以通過select… forupdate加上排它鎖)
  • HashMap為什么不是線程安全的?(多線程操作?并發控制,順便說了在擴容的時候多線程訪問時會造成死鎖,會形成?個環,不過擴容時多線程操作形成環的問題再JDK1.8已經解決,但多線程下使?HashMap還會有?些其他問題?如數據丟失,所以多線程下不應該使?HashMap,?應該使?ConcurrentHashMap)怎么讓HashMap變得線程安全?(Collections的synchronize?法包裝?個線程安全的Map,或者直接?ConcurrentHashMap)兩者的區別是什么?(前者直接在put和get?法加了synchronize同步,后者采?了分段鎖以及CAS?持更?的并發)
  • jdk1.8對ConcurrentHashMap做了哪些優化?(插?的時候如果數組元素使?了紅?樹,取消了分段鎖設計,synchronize替代了Lock鎖)為什么這樣優化?(避免沖突嚴重時鏈表多?,提?查詢效率,時間復雜度從O(N)提?到O(logN))
  • redis主從機制了解么?怎么實現的?
  • 有過GC調優的經歷么?(有點虛,答得不是很好)
  • 有什么想問的么?

螞蟻三面

  • 簡單?我介紹下
  • 監控系統怎么做的,分為哪些模塊,模塊之間怎么交互的??的什么數據庫?(MySQL)使?什么存儲引擎,為什么使?InnnoDB?(?持事務、聚簇索引、MVCC)
  • 訂單表有做拆分么,怎么拆的?(垂直拆分和?平拆分)
  • ?平拆分后查詢過程描述下
  • 如果落到某個分?的數據很?怎么辦?(按照某種規則,?如哈希取模、range,將單張表拆分為多張表)
  • 哈希取模會有什么問題么?(有的,數據分布不均,擴容縮容相對復雜 )
  • 分庫分表后怎么解決讀寫壓??(?主多從、多主多從)
  • 拆分后主鍵怎么保證位置?(UUID、Snowflake算法)
  • Snowflake?成的ID是全局遞增唯?么?(不是,只是全局唯?,單機遞增)
  • 怎么實現全局遞增的唯?ID?(講了TDDL的?次取?批ID,然后再本地慢慢分配的做法)
  • Mysql的索引結構說下(說了B+樹,B+樹可以對葉?結點順序查找,因為葉?結點存放了數據結點且有序)
  • 主鍵索引和普通索引的區別(主鍵索引的葉?結點存放了整?記錄,普通索引的葉?結點存放了主鍵ID,查詢的時候需要做?次回表查詢)?定要回表查詢么?(不?定,當查詢的字段剛好是索引的字段或者索引的?部分,就可以不?回表,這也是索引覆蓋的原理)
  • 你們系統?前的瓶頸在哪??
  • 你打算怎么優化?簡要說下你的優化思路
  • 有什么想問我么?

螞蟻四面

  • 介紹下??
  • 為什么要做逆向?
  • 怎么理解微服務?
  • 服務治理怎么實現的?(說了限流、壓測、監控等模塊的實現)
  • 這個不是中間件做的事么,為什么你們部?做?(當時沒有單獨的中間件團隊,微服務剛搞不久,需要進?監控和性能優化)
  • 說說Spring的?命周期吧
  • 說說GC的過程(說了young gc和full gc的觸發條件和回收過程以及對象創建的過程)
  • CMS GC有什么問題?(并發清除算法,浮動垃圾,短暫停頓)
  • 怎么避免產?浮動垃圾?(記得有個VM參數設置可以讓掃描新?代之前進??次young gc,但是因為gc是虛擬機?動調度的,所以不保證?定執?。但是還有參數可以讓虛擬機強制執??次young gc)
  • 強制young gc會有什么問題?(STW停頓時間變?)
  • 知道G1么?(了解?點 )
  • 回收過程是怎么樣的?(young gc、并發階段、混合階段、full gc,說了Remember Set)
  • 你提到的Remember Set底層是怎么實現的?
  • 有什么想問的么?

?結

螞蟻?試?較重視基礎,所以Java那些基本功?定要扎實。螞蟻的?作環境還是挺贊的,因為我?的是穩定性保障部?,還有許多單獨的?組,什么三年1班,很有?春的感覺。?試官基本?平都?較?,基本都P7以上,除了基礎還問了不少架構設計??的問題,收獲還是挺?的。

拼多多

  • ?試前
  • ??
  • ??
  • 三?
  • ?結

憑借這些Java知識文檔我收獲了螞蟻、拼多多、字節跳動Offer

?試前

?完螞蟻后,早就聽聞拼多多這個獨?獸,決定也去??把。?先我在脈脈找了?個拼多多的HR,加了微信聊了下,發了簡歷便開始我的拼多多?試之旅。這?要?常感謝拼多多HR?姐姐,從?試內推到offer確認?直都在幫我,?真的很nice。

拼多多一面:

  • Java中的HashMap、TreeMap解釋下?(TreeMap紅?樹,有序,HashMap?序,數組+鏈表)
  • TreeMap查詢寫?的時間復雜度多少?(O(logN))
  • HashMap多線程有什么問題?(線程安全,死鎖)怎么解決?( jdk1.8?了synchronize + CAS,擴容的時候通過CAS檢查是否有修改,是則重試)重試會有什么問題么?(CAS(Compare And Swap)是??和交換,不會導致線程阻塞,但是因為重試是通過?旋實現的,所以仍然會占?CPU時間,還有ABA的問題)怎么解決?(超時,限定?旋的次數,ABA可以通過原理變量AtomicStampedReference解決,原理利?版本號進???)超過重試次數如果仍然失敗怎么辦?(synchronize互斥鎖)
  • CAS和synchronize有什么區別?都?synchronize不?么?(CAS是樂觀鎖,不需要阻塞,硬件級別實現的原?性;synchronize會阻塞,JVM級別實現的原?性。使?場景不同,線程沖突嚴重時CAS會造成CPU壓?過?,導致吞吐量下降,synchronize的原理是先?旋然后阻塞,線程沖突嚴重仍然有向滔的吞吐量,因為線程都被阻塞了,不會占有CPU )
  • 如果要保證線程安全怎么辦?(ConcurrentHashMap)
  • ConcurrentHashMap怎么實現線程安全的?(分段鎖)
  • get需要加鎖么,為什么?(不?,volatile關鍵字)
  • volatile的作?是什么?(保證內存可?性)
  • 底層怎么實現的?(說了主內存和?作內存,讀寫內存屏障,happen-before,并在紙上畫了線程交互圖)
  • 在多核CPU下,可?性怎么保證?(思考了?會,總線嗅探技術)
  • 聊想聊,系統之間是怎么交互的?
  • 系統并發多少,怎么優化?
  • 給我?張紙,畫了?個九?格,都填了數字,給?個MN矩陣,從1開始逆時針打印這MN個數,要求時間復雜度盡可能低(內?OS:之前貌似碰到過這題,最優解是怎么實現來著)思考中。。。
  • 可以先說下你的思路(想起來了,說了什么時候要變換?向的條件,向右、向下、向左、向上,依此循環)
  • 有什么想問我的?

拼多多二面:

  • ?我介紹下
  • ?上還有其他offer么?(拿了螞蟻的offer)
  • 部?組織結構是怎樣的?(這輪不是技術?么,不過還是??實實說了)
  • 系統有哪些模塊,每個模塊?了哪些技術,數據怎么流轉的?(?試官有點禿頂,?看級別就很?)給了我?張紙,我在上?簡單畫了下系統之間的流轉情況
  • 鏈路追蹤的信息是怎么傳遞的?(RpcContext的attachment,說了Span的結構:parentSpanId +curSpanId)
  • SpanId怎么保證唯?性?(UUID,說了下內部的定制改動)
  • RpcContext是在什么維度傳遞的?(線程)
  • Dubbo的遠程調?怎么實現的?(講了讀取配置、拼裝url、創建Invoker、服務導出、服務注冊以
  • 及消費者通過動態代理、filter、獲取Invoker列表、負載均衡等過程(嘩啦啦講了10多分鐘),我可以喝??么
  • Spring的單例是怎么實現的?(單例注冊表)
  • 為什么要單獨實現?個服務治理框架?(說了下內部剛搞微服務不久,主要對服務進??些監控和性能優化)
  • 誰主導的?內部還在使?么?
  • 你向有想過怎么做成通航么?
  • 有什么想問的么?

拼多多三面:

?????完后就直接HR?了,主要問了些職業發展、是否有其他offer、以及?職意向等問題,順便說了下公司的福利待遇等,都?較常規啦。不過要說的是?上有其他offer或者??經歷會有?定加分

拼多多的?試流程就簡單許多,畢竟是?個成?四年多的公司。?試難度中規中矩,只要基礎扎實應該不是問題。但不得不說?作強度很?,開始?試前HR就提前和我確認能否接受這樣強度的?作,想來的?鐵還是要做好準備

最后

既已說到spring cloud alibaba,那對于整個微服務架構,如果想要進一步地向上提升自己,到底應該掌握哪些核心技能呢?

就個人而言,對于整個微服務架構,像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等這些都是最最核心的知識,架構師必經之路!下圖,是自繪的微服務架構路線體系大綱,如果有還不知道自己該掌握些啥技術的朋友,可根據小編手繪的大綱進行一個參考。

image

如果覺得圖片不夠清晰,也可來找小編分享原件的xmind文檔!

且除此份微服務體系大綱外,我也有整理與其每個專題核心知識點對應的最強學習筆記:

  • 出神入化——SpringCloudAlibaba.pdf

  • SpringCloud微服務架構筆記(一).pdf

  • SpringCloud微服務架構筆記(二).pdf

  • SpringCloud微服務架構筆記(三).pdf

  • SpringCloud微服務架構筆記(四).pdf

  • Dubbo框架RPC實現原理.pdf

  • Dubbo最新全面深度解讀.pdf

  • Spring Boot學習教程.pdf

  • SpringBoo核心寶典.pdf

  • 第一本Docker書-完整版.pdf

  • 使用SpringCloud和Docker實戰微服務.pdf

  • K8S(kubernetes)學習指南.pdf

需要下載的請**點擊傳送門:《出神入化——SpringCloudAlibaba》**

image

另外,如果不知道從何下手開始學習呢,小編這邊也有對每個微服務的核心知識點手繪了其對應的知識架構體系大綱,不過全是導出的xmind文件,全部的源文件也都在此,照樣可免費分享給有需要的你!

204888/java-p7)**

[外鏈圖片轉存中…(img-txiWhDAU-1627101497506)]

另外,如果不知道從何下手開始學習呢,小編這邊也有對每個微服務的核心知識點手繪了其對應的知識架構體系大綱,不過全是導出的xmind文件,全部的源文件也都在此,照樣可免費分享給有需要的你!

image

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385517.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385517.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385517.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

System V 消息隊列

一、System V 消息隊列 有一個隊列,隊列存放各種消息。每個進程可以把數據封存在消息中,再放入隊列。每個進程都可以拿到消息隊列,再從中取出/放入消息。 消息隊列也有管道一樣的不足,就是每個消息的最大長度是有上限的&#xf…

oppoJava面試題,java連接數據庫詳細步驟

美團一面(50分鐘左右) 進程和線程死鎖的必要條件網絡,七層協議TCP和UDP的區別hashmap 詳細講一下hashmap底層是如何解決hash沖突的hashmap和linkedhashmap數據庫的索引,為什么推薦自增id,有什么優點MySQL的引擎&#…

基本TCP套接字編程

1. socket函數原型&#xff1a; #include <sys/socket.h> int socket(int domain, int type, int protocol);2. bind函數原型&#xff1a; #include <sys/socket.h> int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);參數&#xff1a; ? st…

oppoJava面試題,騰訊社招三面多久聯系

梳理知識點&#xff0c;是快速提升技術的關鍵 前面講過&#xff0c;快速提升自己的技術硬實力其實是有方法的。大致就是梳理知識點夯實基礎進階深入學習實戰&#xff0c;下面我會一點點跟大家剖析&#xff0c;本文干貨滿滿&#xff0c;大家仔細閱讀。 ①梳理知識必備&#xff1…

oppoJava面試!傳智播客java基礎案例教程

零基礎如何學習Java&#xff1f; 首先&#xff0c;你要明白一點&#xff0c;Java入門不難&#xff01; 無論你是從事哪個行業&#xff0c;興趣一定是最好的老師&#xff0c;也是你學習的動力。 學習方式1&#xff1a;自學 自學模式其實我個人不建議絕大部分的人選擇&#x…

Redis高級項目實戰!北京java編程入門培訓

Dubbo面試專題 JVM面試專題 Java并發面試專題 Kafka面試專題 MongDB面試專題 MyBatis面試專題 MySQL面試專題 Netty面試專題 RabbitMQ面試專題 Redis面試專題 Spring Cloud面試專題 SpringBoot面試專題 zookeeper面試專題 最后 給大家送一個小福利 資料都是免費分享的&#xf…

poll函數

#include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout);參數&#xff1a; fds&#xff1a;監聽的文件描述符【數組】 struct pllfd {int fd; 待監聽的文件描述符short events; 待監聽的文件描述符對應的監聽事件short revents; 傳入時&…

Redis高級項目實戰,java配置jdk環境時

Spring Security觀后感——手繪思維腦(供參考) Spring Security手繪思維腦圖 手繪的思維導圖&#xff0c;是我自己根據自身的情況讀完這套阿里出品的Spring Security王者晉級文檔之后所繪的&#xff0c;相當于是一個知識的總結與梳理&#xff0c;我將其分為***“核心組件”與“…

select函數(一)

int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 參數&#xff1a; nfds&#xff1a;監控的文件描述符集里最大文件描述符加1&#xff0c;因為此參數會告訴內核檢測前多少個文件文件描述符readfs&#xff1a;監控有讀…

Redis高級項目實戰,阿里P7級別面試經驗總結

第一次壓測 慘不忍睹&#xff0c;平均響應時間150ms&#xff0c;而且在這次壓測過程中還發現其它的問題&#xff0c;后臺報錯&#xff0c;經查是OpenSearch每秒查詢次數限制 優化代碼與配置 1、修改OpenSearch配置&#xff0c;并且將壓測環境中的OpenSearch連接地址改為內網地…

Makefile用法鏈接

Makefile的編寫及四個特殊符號的意義、$、$^、$ <font face"字體" size"字號" color"顏色">這里是需要突出顯示的內容</font> <font color#0099ff size12 face"黑體">黑體</font>

Redis高頻面試筆記:java版本號比較算法

1.三重心智模型 先給大家科普一個概念&#xff0c;“三重心智模型”。 認知科學家斯坦諾維奇&#xff0c;將人的心智模式&#xff0c;分成了三個部分。 第一層是自主心智&#xff0c;自主心智是我們通過進化與內隱學習獲得。比如&#xff0c;我們看到蛇就會害怕&#xff0c;情…

Redis高頻面試筆記:mysql8.0新特性

一、服務發布簡介 分布式系統架構下&#xff0c;服務發布是一件很麻煩的事情&#xff0c;特別是在構建自動發布流程和灰度測試的策略兩個核心方面。通常情況下如果不涉及數據層面的灰度流程&#xff0c;服務可以灰度上線&#xff0c;或者滾動上線&#xff0c;這兩種方式很常用…

Makefile (二)

一、line1的源碼 line1.h #ifndef _LINE_1_H #define _LINE_1_H void line1_print(const char *strMsg); #endifline1.cpp #include "line1.h" #include <stdio.h> void line1_print(const char *strMsg) {printf("This is line1 print %s.\r\n",st…

RocketMQ避坑指南:springcloud教程權威指南

1. Java 堆空間 **發生頻率&#xff1a;**5顆星 造成原因 無法在 Java 堆中分配對象 吞吐量增加 應用程序無意中保存了對象引用&#xff0c;對象無法被 GC 回收 應用程序過度使用 finalizer。finalizer 對象不能被 GC 立刻回收。finalizer 由結束隊列服務的守護線程調用&a…

IO多路復用之epoll

一、epoll函數族 1. 函數epoll_creat&#xff1a; 該函數生成一個epoll專用的文件描述符 #include <sys/epoll.h> int epoll_creae(int size); //epoll上能關注的最大描述符數 2. epoll_ctl&#xff1a;用于控制某個epoll文件描述符事件&#xff0c;可以注冊、修改、刪…

26. 刪除排序數組中的重復項

給定一個排序數組&#xff0c;你需要在原地刪除重復出現的元素&#xff0c;使得每個元素只出現一次&#xff0c;返回移除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須在原地修改輸入數組并在使用 O(1) 額外空間的條件下完成。 示例 1: 給定數組 nums [1,1,2], …

Leetcode 31. Pow(x, n) 解題報告

class Solution {public:double myPow(double x, int n) {double res 1.0;for(int i n; i ! 0; i / 2){if(i % 2 ! 0)res * x;x * x;}return n < 0 ? 1 / res : res;} };

572. 另一個樹的子樹

給定兩個非空二叉樹 s 和 t&#xff0c;檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的一個子樹包括 s 的一個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。 示例 1: 給定的樹 s: 3/ \4 5/ \1 2給定的樹 t&#xff1a; 4 / \1 2返回 true&#x…

二叉樹中序遍歷的三種方法

二叉樹是一種重要的數據結構&#xff0c;對二叉樹的遍歷也很重要。這里簡單介紹三種二叉樹中序遍歷的方法。二叉樹的中序遍歷就是首先遍歷左子樹&#xff0c;然后訪問當前節點&#xff0c;最后遍歷右子樹。對于下面的二叉樹&#xff0c;中序遍歷結果如下&#xff1a; 結果&…