oppoJava面试题,java声明全局变量的关键字
螞蟻一面
??就做了?道算法題,要求兩?時(shí)內(nèi)完成,給了?度為N的有重復(fù)元素的數(shù)組,要求輸出第10?的數(shù)。典型的TopK問題,快排算法搞定。算法題要注意的是合法性校驗(yàn)、邊界條件以及異常的處理。另外,如果要寫測(cè)試?例,?定要保證測(cè)試覆蓋場(chǎng)景盡可能全。加上平時(shí)刷刷算法題,這種考核應(yīng)該沒問題的。
螞蟻二面
- ?我介紹下唄
- 開源項(xiàng)?貢獻(xiàn)過代碼么?(Dubbo提過?個(gè)打印accesslog的bug算么)
- ?前在部?做什么,業(yè)務(wù)簡單介紹下,內(nèi)部有哪些系統(tǒng),作?和交互過程說下
- Dubbo踩過哪些坑,分別是怎么解決的?(說了異常處理時(shí)業(yè)務(wù)異常捕獲的問題,?定義了?個(gè)異常攔截器)
- 開始進(jìn)?正題,說下你對(duì)線程安全的理解(多線程訪問同?個(gè)對(duì)象,如果不需要考慮額外的同步,調(diào)?對(duì)象的?為就可以獲得正確的結(jié)果就是線程安全)
- 事務(wù)有哪些特性?(ACID)
- 怎么理解原?性?(同?個(gè)事務(wù)下,多個(gè)操作要么成功要么失敗,不存在部分成功或者部分失敗的情況)
- 樂觀鎖和悲觀鎖的區(qū)別?(悲觀鎖假定會(huì)發(fā)?沖突,訪問的時(shí)候都要先獲得鎖,保證同?個(gè)時(shí)刻只有線程獲得鎖,讀讀也會(huì)阻塞;樂觀鎖假設(shè)不會(huì)發(fā)?沖突,只有在提交操作的時(shí)候檢查是否有沖突)這兩種鎖在Java和MySQL分別是怎么實(shí)現(xiàn)的?(Java樂觀鎖通過CAS實(shí)現(xiàn),悲觀鎖通過synchronize實(shí)現(xiàn)。mysql樂觀鎖通過MVCC,也就是版本實(shí)現(xiàn),悲觀鎖可以通過select… forupdate加上排它鎖)
- HashMap為什么不是線程安全的?(多線程操作?并發(fā)控制,順便說了在擴(kuò)容的時(shí)候多線程訪問時(shí)會(huì)造成死鎖,會(huì)形成?個(gè)環(huán),不過擴(kuò)容時(shí)多線程操作形成環(huán)的問題再JDK1.8已經(jīng)解決,但多線程下使?HashMap還會(huì)有?些其他問題?如數(shù)據(jù)丟失,所以多線程下不應(yīng)該使?HashMap,?應(yīng)該使?ConcurrentHashMap)怎么讓HashMap變得線程安全?(Collections的synchronize?法包裝?個(gè)線程安全的Map,或者直接?ConcurrentHashMap)兩者的區(qū)別是什么?(前者直接在put和get?法加了synchronize同步,后者采?了分段鎖以及CAS?持更?的并發(fā))
- jdk1.8對(duì)ConcurrentHashMap做了哪些優(yōu)化?(插?的時(shí)候如果數(shù)組元素使?了紅?樹,取消了分段鎖設(shè)計(jì),synchronize替代了Lock鎖)為什么這樣優(yōu)化?(避免沖突嚴(yán)重時(shí)鏈表多?,提?查詢效率,時(shí)間復(fù)雜度從O(N)提?到O(logN))
- redis主從機(jī)制了解么?怎么實(shí)現(xiàn)的?
- 有過GC調(diào)優(yōu)的經(jīng)歷么?(有點(diǎn)虛,答得不是很好)
- 有什么想問的么?
螞蟻三面
- 簡單?我介紹下
- 監(jiān)控系統(tǒng)怎么做的,分為哪些模塊,模塊之間怎么交互的??的什么數(shù)據(jù)庫?(MySQL)使?什么存儲(chǔ)引擎,為什么使?InnnoDB?(?持事務(wù)、聚簇索引、MVCC)
- 訂單表有做拆分么,怎么拆的?(垂直拆分和?平拆分)
- ?平拆分后查詢過程描述下
- 如果落到某個(gè)分?的數(shù)據(jù)很?怎么辦?(按照某種規(guī)則,?如哈希取模、range,將單張表拆分為多張表)
- 哈希取模會(huì)有什么問題么?(有的,數(shù)據(jù)分布不均,擴(kuò)容縮容相對(duì)復(fù)雜 )
- 分庫分表后怎么解決讀寫壓??(?主多從、多主多從)
- 拆分后主鍵怎么保證位置?(UUID、Snowflake算法)
- Snowflake?成的ID是全局遞增唯?么?(不是,只是全局唯?,單機(jī)遞增)
- 怎么實(shí)現(xiàn)全局遞增的唯?ID?(講了TDDL的?次取?批ID,然后再本地慢慢分配的做法)
- Mysql的索引結(jié)構(gòu)說下(說了B+樹,B+樹可以對(duì)葉?結(jié)點(diǎn)順序查找,因?yàn)槿~?結(jié)點(diǎn)存放了數(shù)據(jù)結(jié)點(diǎn)且有序)
- 主鍵索引和普通索引的區(qū)別(主鍵索引的葉?結(jié)點(diǎn)存放了整?記錄,普通索引的葉?結(jié)點(diǎn)存放了主鍵ID,查詢的時(shí)候需要做?次回表查詢)?定要回表查詢么?(不?定,當(dāng)查詢的字段剛好是索引的字段或者索引的?部分,就可以不?回表,這也是索引覆蓋的原理)
- 你們系統(tǒng)?前的瓶頸在哪??
- 你打算怎么優(yōu)化?簡要說下你的優(yōu)化思路
- 有什么想問我么?
螞蟻四面
- 介紹下??
- 為什么要做逆向?
- 怎么理解微服務(wù)?
- 服務(wù)治理怎么實(shí)現(xiàn)的?(說了限流、壓測(cè)、監(jiān)控等模塊的實(shí)現(xiàn))
- 這個(gè)不是中間件做的事么,為什么你們部?做?(當(dāng)時(shí)沒有單獨(dú)的中間件團(tuán)隊(duì),微服務(wù)剛搞不久,需要進(jìn)?監(jiān)控和性能優(yōu)化)
- 說說Spring的?命周期吧
- 說說GC的過程(說了young gc和full gc的觸發(fā)條件和回收過程以及對(duì)象創(chuàng)建的過程)
- CMS GC有什么問題?(并發(fā)清除算法,浮動(dòng)垃圾,短暫停頓)
- 怎么避免產(chǎn)?浮動(dòng)垃圾?(記得有個(gè)VM參數(shù)設(shè)置可以讓掃描新?代之前進(jìn)??次young gc,但是因?yàn)間c是虛擬機(jī)?動(dòng)調(diào)度的,所以不保證?定執(zhí)?。但是還有參數(shù)可以讓虛擬機(jī)強(qiáng)制執(zhí)??次young gc)
- 強(qiáng)制young gc會(huì)有什么問題?(STW停頓時(shí)間變?)
- 知道G1么?(了解?點(diǎn) )
- 回收過程是怎么樣的?(young gc、并發(fā)階段、混合階段、full gc,說了Remember Set)
- 你提到的Remember Set底層是怎么實(shí)現(xiàn)的?
- 有什么想問的么?
?結(jié)
螞蟻?試?較重視基礎(chǔ),所以Java那些基本功?定要扎實(shí)。螞蟻的?作環(huán)境還是挺贊的,因?yàn)槲?的是穩(wěn)定性保障部?,還有許多單獨(dú)的?組,什么三年1班,很有?春的感覺。?試官基本?平都?較?,基本都P7以上,除了基礎(chǔ)還問了不少架構(gòu)設(shè)計(jì)??的問題,收獲還是挺?的。
拼多多
- ?試前
- ??
- ??
- 三?
- ?結(jié)
?試前
?完螞蟻后,早就聽聞拼多多這個(gè)獨(dú)?獸,決定也去??把。?先我在脈脈找了?個(gè)拼多多的HR,加了微信聊了下,發(fā)了簡歷便開始我的拼多多?試之旅。這?要?常感謝拼多多HR?姐姐,從?試內(nèi)推到offer確認(rèn)?直都在幫我,?真的很nice。
拼多多一面:
- Java中的HashMap、TreeMap解釋下?(TreeMap紅?樹,有序,HashMap?序,數(shù)組+鏈表)
- TreeMap查詢寫?的時(shí)間復(fù)雜度多少?(O(logN))
- HashMap多線程有什么問題?(線程安全,死鎖)怎么解決?( jdk1.8?了synchronize + CAS,擴(kuò)容的時(shí)候通過CAS檢查是否有修改,是則重試)重試會(huì)有什么問題么?(CAS(Compare And Swap)是??和交換,不會(huì)導(dǎo)致線程阻塞,但是因?yàn)橹卦囀峭ㄟ^?旋實(shí)現(xiàn)的,所以仍然會(huì)占?CPU時(shí)間,還有ABA的問題)怎么解決?(超時(shí),限定?旋的次數(shù),ABA可以通過原理變量AtomicStampedReference解決,原理利?版本號(hào)進(jìn)???)超過重試次數(shù)如果仍然失敗怎么辦?(synchronize互斥鎖)
- CAS和synchronize有什么區(qū)別?都?synchronize不?么?(CAS是樂觀鎖,不需要阻塞,硬件級(jí)別實(shí)現(xiàn)的原?性;synchronize會(huì)阻塞,JVM級(jí)別實(shí)現(xiàn)的原?性。使?場(chǎng)景不同,線程沖突嚴(yán)重時(shí)CAS會(huì)造成CPU壓?過?,導(dǎo)致吞吐量下降,synchronize的原理是先?旋然后阻塞,線程沖突嚴(yán)重仍然有向滔的吞吐量,因?yàn)榫€程都被阻塞了,不會(huì)占有CPU )
- 如果要保證線程安全怎么辦?(ConcurrentHashMap)
- ConcurrentHashMap怎么實(shí)現(xiàn)線程安全的?(分段鎖)
- get需要加鎖么,為什么?(不?,volatile關(guān)鍵字)
- volatile的作?是什么?(保證內(nèi)存可?性)
- 底層怎么實(shí)現(xiàn)的?(說了主內(nèi)存和?作內(nèi)存,讀寫內(nèi)存屏障,happen-before,并在紙上畫了線程交互圖)
- 在多核CPU下,可?性怎么保證?(思考了?會(huì),總線嗅探技術(shù))
- 聊想聊,系統(tǒng)之間是怎么交互的?
- 系統(tǒng)并發(fā)多少,怎么優(yōu)化?
- 給我?張紙,畫了?個(gè)九?格,都填了數(shù)字,給?個(gè)MN矩陣,從1開始逆時(shí)針打印這MN個(gè)數(shù),要求時(shí)間復(fù)雜度盡可能低(內(nèi)?OS:之前貌似碰到過這題,最優(yōu)解是怎么實(shí)現(xiàn)來著)思考中。。。
- 可以先說下你的思路(想起來了,說了什么時(shí)候要變換?向的條件,向右、向下、向左、向上,依此循環(huán))
- 有什么想問我的?
拼多多二面:
- ?我介紹下
- ?上還有其他offer么?(拿了螞蟻的offer)
- 部?組織結(jié)構(gòu)是怎樣的?(這輪不是技術(shù)?么,不過還是??實(shí)實(shí)說了)
- 系統(tǒng)有哪些模塊,每個(gè)模塊?了哪些技術(shù),數(shù)據(jù)怎么流轉(zhuǎn)的?(?試官有點(diǎn)禿頂,?看級(jí)別就很?)給了我?張紙,我在上?簡單畫了下系統(tǒng)之間的流轉(zhuǎn)情況
- 鏈路追蹤的信息是怎么傳遞的?(RpcContext的attachment,說了Span的結(jié)構(gòu):parentSpanId +curSpanId)
- SpanId怎么保證唯?性?(UUID,說了下內(nèi)部的定制改動(dòng))
- RpcContext是在什么維度傳遞的?(線程)
- Dubbo的遠(yuǎn)程調(diào)?怎么實(shí)現(xiàn)的?(講了讀取配置、拼裝url、創(chuàng)建Invoker、服務(wù)導(dǎo)出、服務(wù)注冊(cè)以
- 及消費(fèi)者通過動(dòng)態(tài)代理、filter、獲取Invoker列表、負(fù)載均衡等過程(嘩啦啦講了10多分鐘),我可以喝??么
- Spring的單例是怎么實(shí)現(xiàn)的?(單例注冊(cè)表)
- 為什么要單獨(dú)實(shí)現(xiàn)?個(gè)服務(wù)治理框架?(說了下內(nèi)部剛搞微服務(wù)不久,主要對(duì)服務(wù)進(jìn)??些監(jiān)控和性能優(yōu)化)
- 誰主導(dǎo)的?內(nèi)部還在使?么?
- 你向有想過怎么做成通航么?
- 有什么想問的么?
拼多多三面:
?????完后就直接HR?了,主要問了些職業(yè)發(fā)展、是否有其他offer、以及?職意向等問題,順便說了下公司的福利待遇等,都?較常規(guī)啦。不過要說的是?上有其他offer或者??經(jīng)歷會(huì)有?定加分
拼多多的?試流程就簡單許多,畢竟是?個(gè)成?四年多的公司。?試難度中規(guī)中矩,只要基礎(chǔ)扎實(shí)應(yīng)該不是問題。但不得不說?作強(qiáng)度很?,開始?試前HR就提前和我確認(rèn)能否接受這樣強(qiáng)度的?作,想來的?鐵還是要做好準(zhǔn)備
最后
既已說到spring cloud alibaba,那對(duì)于整個(gè)微服務(wù)架構(gòu),如果想要進(jìn)一步地向上提升自己,到底應(yīng)該掌握哪些核心技能呢?
就個(gè)人而言,對(duì)于整個(gè)微服務(wù)架構(gòu),像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等這些都是最最核心的知識(shí),架構(gòu)師必經(jīng)之路!下圖,是自繪的微服務(wù)架構(gòu)路線體系大綱,如果有還不知道自己該掌握些啥技術(shù)的朋友,可根據(jù)小編手繪的大綱進(jìn)行一個(gè)參考。
如果覺得圖片不夠清晰,也可來找小編分享原件的xmind文檔!
且除此份微服務(wù)體系大綱外,我也有整理與其每個(gè)專題核心知識(shí)點(diǎn)對(duì)應(yīng)的最強(qiáng)學(xué)習(xí)筆記:
-
出神入化——SpringCloudAlibaba.pdf
-
SpringCloud微服務(wù)架構(gòu)筆記(一).pdf
-
SpringCloud微服務(wù)架構(gòu)筆記(二).pdf
-
SpringCloud微服務(wù)架構(gòu)筆記(三).pdf
-
SpringCloud微服務(wù)架構(gòu)筆記(四).pdf
-
Dubbo框架RPC實(shí)現(xiàn)原理.pdf
-
Dubbo最新全面深度解讀.pdf
-
Spring Boot學(xué)習(xí)教程.pdf
-
SpringBoo核心寶典.pdf
-
第一本Docker書-完整版.pdf
-
使用SpringCloud和Docker實(shí)戰(zhàn)微服務(wù).pdf
-
K8S(kubernetes)學(xué)習(xí)指南.pdf
需要下載的請(qǐng)**點(diǎn)擊傳送門:《出神入化——SpringCloudAlibaba》**
另外,如果不知道從何下手開始學(xué)習(xí)呢,小編這邊也有對(duì)每個(gè)微服務(wù)的核心知識(shí)點(diǎn)手繪了其對(duì)應(yīng)的知識(shí)架構(gòu)體系大綱,不過全是導(dǎo)出的xmind文件,全部的源文件也都在此,照樣可免費(fèi)分享給有需要的你!
204888/java-p7)**
[外鏈圖片轉(zhuǎn)存中…(img-txiWhDAU-1627101497506)]
另外,如果不知道從何下手開始學(xué)習(xí)呢,小編這邊也有對(duì)每個(gè)微服務(wù)的核心知識(shí)點(diǎn)手繪了其對(duì)應(yīng)的知識(shí)架構(gòu)體系大綱,不過全是導(dǎo)出的xmind文件,全部的源文件也都在此,照樣可免費(fèi)分享給有需要的你!
總結(jié)
以上是生活随笔為你收集整理的oppoJava面试题,java声明全局变量的关键字的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java面试2021,java黑马百度云
- 下一篇: 地下城堡3魂之诗手游水果布丁怎么做