欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

意難平的大廠一二三輪5年社招面經(jīng)

前言

免責(zé)宣言,以下為博主朋友面試滴滴支付崗社招后端開發(fā)工程師崗位的真實(shí)經(jīng)歷,如有雷同,你是真的。本次延續(xù)上篇不一樣面經(jīng)系列的宗旨,不僅會(huì)介紹題目和題解,還會(huì)分析面試官為什么這么提問(wèn),最后結(jié)合朋友的個(gè)人體驗(yàn)來(lái)做一個(gè)面試總結(jié)。對(duì)了,以下我朋友視角書寫時(shí)可能會(huì)由于筆誤不小心寫成第一人稱視角,請(qǐng)不要誤會(huì)。

一面

問(wèn)答

  1. 你說(shuō)過(guò)有封裝過(guò)一些組件,具體講解下封裝了什么,有什么用
  2. 組件里面應(yīng)用最多的是哪些部分
  3. 你在組件中對(duì)于多線程是如何封裝的
  4. JVM線上問(wèn)題有沒(méi)有遇到特別棘手的問(wèn)題
  5. 聊一下訂單交付這個(gè)項(xiàng)目,具體是干什么的
  6. 說(shuō)一下重構(gòu)前后的一個(gè)變化,重構(gòu)的意義在哪,定時(shí)如何轉(zhuǎn)實(shí)時(shí)
  7. Java類生命周期,類加載器有哪些,類加載機(jī)制有哪些,如何破除雙親委派
  8. JVM內(nèi)存區(qū)域劃分
  9. CMS和G1的相同點(diǎn)和不同點(diǎn)
  10. 什么時(shí)候進(jìn)行FullGC,F(xiàn)ullGC的回收范圍
  11. MySQL的隔離級(jí)別,各自有什么特點(diǎn)和問(wèn)題,MySQL默認(rèn)是什么
  12. innodb如何解決可重復(fù)讀的問(wèn)題,innodb會(huì)出現(xiàn)幻讀嗎,幻讀如何解決
  13. innodb有哪些索引結(jié)構(gòu),B+樹和B樹紅黑樹有什么優(yōu)勢(shì)
  14. 如何解決一個(gè)慢查詢的SQL
  15. 數(shù)據(jù)庫(kù)分片有了解過(guò)嗎--沒(méi)答出來(lái)
  16. 緩存有用過(guò)哪些
  17. 如何解決熱點(diǎn)Key問(wèn)題,緩存穿透、擊穿、雪崩
  18. 布隆過(guò)濾器原理
  19. 算法題:字符串相加
  20. 算法題:****

首先介紹下JD,據(jù)我模糊的印象是招聘的滴滴支付團(tuán)隊(duì)的Java后端,據(jù)三面面試官介紹,支付屬于核心崗位(插播一下,云雨雪投另一個(gè)核心,也就是網(wǎng)約車部門,簡(jiǎn)歷被拒了),內(nèi)部細(xì)分為業(yè)務(wù)和技術(shù)中臺(tái)兩塊,這個(gè)JD是面向業(yè)務(wù)的。上一篇面經(jīng)有關(guān)于云雨雪的個(gè)人及工作經(jīng)歷介紹,這里不再贅述。

前三個(gè)問(wèn)題是基于我的自我介紹提出的問(wèn)題,SDK封裝的經(jīng)歷算是我的一個(gè)加分項(xiàng),面試官感興趣就提問(wèn)了,這里,注意,感興趣的時(shí)候就奠定了一個(gè)良好的溝通氛圍,印象分上來(lái)了。這里沒(méi)有答案,屬于個(gè)人獨(dú)特經(jīng)歷不細(xì)說(shuō)了。這里特別強(qiáng)調(diào)一下,一定要好好自我介紹,把簡(jiǎn)歷上的亮點(diǎn)再?gòu)?qiáng)調(diào)一下,有時(shí)候你自我介紹太快,人面試官簡(jiǎn)歷還沒(méi)看完呢,咋問(wèn)你,那不就尬住了嘛。

第四個(gè)也是常規(guī)必問(wèn)了,我一般會(huì)簡(jiǎn)要提到我遇到的三種線上問(wèn)題,OOM、CPU占用高和數(shù)據(jù)庫(kù)線上違規(guī)操作。我一般會(huì)快速過(guò)一遍每種問(wèn)題大致怎么解決,比如OOM我處理過(guò)堆內(nèi)存溢出、元空間溢出和直接內(nèi)存溢出,CPU占用率高用傳統(tǒng)和工具兩種解決方法,如何監(jiān)控告警介紹下整個(gè)流程。這其實(shí)有點(diǎn)啰嗦,但是面試本質(zhì)就是推銷自己,盡可能地展示自己,多說(shuō)點(diǎn)沒(méi)壞處。我一般會(huì)在最后,視情況詢問(wèn)面試官想了解哪方面的,或者我會(huì)主動(dòng)找一個(gè)元空間溢出或者直接內(nèi)存溢出這樣少見(jiàn)的案例進(jìn)行講解。

五和六就是必問(wèn)的項(xiàng)目經(jīng)歷,推薦大家一定要找一個(gè)最有意義的項(xiàng)目挖掘一下,全程主導(dǎo)或者參與的最好。這里講的是一個(gè)集合了大數(shù)據(jù)、重構(gòu)和性能優(yōu)化三個(gè)特性的項(xiàng)目,非常優(yōu)質(zhì),偶爾我會(huì)聊聊別的項(xiàng)目,比如看板、門戶和日志收集系統(tǒng)。在五年工作中我其實(shí)做了茫茫多的項(xiàng)目,很多很多的業(yè)務(wù)CRUD,但是說(shuō)實(shí)話,鋪到簡(jiǎn)歷上真沒(méi)啥說(shuō)的,太簡(jiǎn)單了,所以寫的時(shí)候我都進(jìn)行了整合和忽略。也建議大家簡(jiǎn)歷上少一些這種毫無(wú)意義和亮點(diǎn)的項(xiàng)目,除非是簡(jiǎn)歷鋪不滿兩頁(yè),需要湊版面。

?[順便推個(gè)機(jī)會(huì)]

大廠搖人,前、后端/測(cè)試機(jī)會(huì),偶爾有加班,加班有加班費(fèi),穩(wěn)定性較高,薪酬待遇還不錯(cuò)。?

  1. Java類生命周期,類加載器有哪些,類加載機(jī)制有哪些,如何破除雙親委派 類的生命周期分為加載-連接-初始化-使用-卸載,連接可細(xì)化為驗(yàn)證、加載、解析。 JVM提供了三種類加載機(jī)制,分別是全盤負(fù)責(zé)、緩存機(jī)制和雙親委派機(jī)制。
  • 全盤負(fù)責(zé)的意思是,當(dāng)前類加載器加載了某個(gè)類,那這個(gè)類依賴和引用的類默認(rèn)都將由該加載器加載。
  • 緩存機(jī)制則是緩存所有加載過(guò)的類,當(dāng)程序需要某個(gè)類時(shí)先從緩存中找,找不到就加載類再放到緩存中。
  • 雙親委派機(jī)制的意思是在加載某個(gè)類時(shí),會(huì)向上尋找最頂端的父類先加載,如果加載不了再向下傳遞由子類加載。這樣加載有一個(gè)好處,比如我亂寫一個(gè)String類想要搞破壞頂?shù)鬔DK里的String,因?yàn)橛须p親委派機(jī)制的原因,加載String類會(huì)優(yōu)先從JDK里面找到加載。因此代碼中只要不是我顯式指定要用我自己的String類,那就是默認(rèn)用JDK中的String類,不會(huì)造成混亂。 一是使用自定義類加載器,重寫loadClass方法,二是使用Java的Instrumentation API,修改字節(jié)碼邏輯。這類問(wèn)題既然是基于框架的,那么最好的辦法就是重寫框架提供的接口或者使用SPI機(jī)制,類似的都可以這么回答。
  1. JVM內(nèi)存區(qū)域劃分 JVM內(nèi)存結(jié)構(gòu)用于描述運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu),主要區(qū)域劃分為堆和棧,堆用來(lái)管理數(shù)據(jù)的存儲(chǔ)、棧用來(lái)管理方法的運(yùn)行。具體根據(jù)線程共享分為兩類,線程私有的程序計(jì)數(shù)器、虛擬機(jī)棧、本地方法棧,線程共享的有堆、方法區(qū)。
  2. CMS和G1的相同點(diǎn)和不同點(diǎn) 相同點(diǎn)就是都是并發(fā)垃圾回收器,目的是盡量減小停頓時(shí)間。區(qū)別是CMS只用了標(biāo)記清除算法,G1使用分代算法,混合使用。
  3. 什么時(shí)候進(jìn)行FullGC,F(xiàn)ullGC的回收范圍 時(shí)機(jī)是三個(gè)節(jié)點(diǎn),老年代、方法區(qū)空間不足和顯式調(diào)用GC,回收范圍是整個(gè)堆內(nèi)存空間。

七八九十就是經(jīng)典的JVM模塊,在JAVA知識(shí)點(diǎn)中,JVM屬于必問(wèn),其他例如基礎(chǔ)、集合、多線程、JUC有幾率問(wèn)到。這里我知識(shí)體系構(gòu)建系列有完整解答,這里重點(diǎn)提一下兩個(gè)不常見(jiàn)問(wèn)題的解答。如何破除雙親委派?什么時(shí)候進(jìn)行FullGC,F(xiàn)ullGC的回收范圍?時(shí)機(jī)是三個(gè)節(jié)點(diǎn),老年代、方法區(qū)空間不足和顯式調(diào)用GC,回收范圍是整個(gè)堆內(nèi)存空間。

  1. MySQL的隔離級(jí)別,各自有什么特點(diǎn)和問(wèn)題,MySQL默認(rèn)是什么 默認(rèn)可重復(fù)讀。未提交讀能讀到未提交事務(wù)的數(shù)據(jù),主要問(wèn)題是臟讀。已提交讀,多次重復(fù)讀可能讀出不同的數(shù)據(jù)??芍貜?fù)讀會(huì)有幻讀問(wèn)題。串行話就是性能差,全加鎖。
  2. innodb如何解決可重復(fù)讀的問(wèn)題,innodb會(huì)出現(xiàn)幻讀嗎,幻讀如何解決 通過(guò)MVCC解決,默認(rèn)隔離級(jí)別會(huì)出現(xiàn)幻讀,解決的話通過(guò)快照讀和加鎖的當(dāng)前讀解決。
  3. innodb有哪些索引結(jié)構(gòu),B+樹和B樹紅黑樹有什么優(yōu)勢(shì) B+樹和HASH結(jié)構(gòu)兩種。相對(duì)B樹,單內(nèi)存頁(yè)節(jié)點(diǎn)數(shù)更多,查詢效率更穩(wěn)定,相比紅黑樹層級(jí)不高,查詢效率高。
  4. 如何解決一個(gè)慢查詢的SQL 體系問(wèn)題,詳見(jiàn)之前寫的如何挖掘項(xiàng)目亮點(diǎn)那篇文章

十一到十五是MySQL模塊,這一塊也是常問(wèn),這里問(wèn)題都比較簡(jiǎn)單,常規(guī)八股。面試題的話,我真實(shí)回答不是這樣的,限于篇幅,這里只是給一個(gè)答案的方向,具體答案可以從我的知識(shí)體系系列博客看。這里面試官問(wèn)了我知不知道數(shù)據(jù)庫(kù)分片,我反問(wèn)了下是不是分庫(kù)分表,他說(shuō)不是,emmm,是不是滴滴有什么特別的東西,不太清楚這個(gè)。

  1. 緩存有用過(guò)哪些
  2. 如何解決熱點(diǎn)Key問(wèn)題,緩存穿透、擊穿、雪崩 緩存穿透是指用戶請(qǐng)求緩存和數(shù)據(jù)庫(kù)不存在的數(shù)據(jù),可以使用業(yè)務(wù)攔截、緩存空值和布隆過(guò)濾器三種方法,緩存擊穿是緩存失效高并發(fā)讀取,可以讓緩存永不過(guò)期或者定時(shí)主動(dòng)更新兩種方法。緩存雪崩是大批量key到期或者redis掛了,可以設(shè)置不同的過(guò)期時(shí)間同時(shí)均分key到不同的redis節(jié)點(diǎn),避免過(guò)熱,redis掛了就是熔斷降級(jí),本地緩存。
  3. 布隆過(guò)濾器原理 布隆過(guò)濾器是由一個(gè)位數(shù)組和多個(gè)哈希函數(shù)構(gòu)成。原理是判斷數(shù)據(jù)通過(guò)多個(gè)哈希函數(shù)計(jì)算后,在位數(shù)組對(duì)應(yīng)下標(biāo)都為1時(shí)說(shuō)明存在,否則不存在。因?yàn)槎鄠€(gè)不同的元素存儲(chǔ)時(shí)會(huì)產(chǎn)生相同的索引,所以存在誤判的情況。

字符串相加這個(gè)是leetcode原題,不要抖機(jī)靈強(qiáng)轉(zhuǎn)數(shù)字相加******************。因?yàn)樽龅帽容^快,面試官需要熬到1小時(shí),所以就又讓我做了一道題,leetcode原題,****。做題形式都是在leetcode官網(wǎng)做的,我登錄了賬號(hào),然后通過(guò)滴滴會(huì)議軟件投屏的。

感受

滴滴嚴(yán)格來(lái)說(shuō)是面試的第三家大廠,此刻到了11月,有了一個(gè)月左右的面試經(jīng)驗(yàn),每周大概兩三個(gè)面試,其實(shí)比較少,這還包括二面三面的。為啥不海投呢?在職確實(shí)沒(méi)時(shí)間,特別是我10-11月天天加班到11點(diǎn)還通宵加班,周末也加班,屬實(shí)沒(méi)心力找面試。平心而論,錯(cuò)失了很多機(jī)會(huì),從現(xiàn)在來(lái)看,當(dāng)時(shí)的面試狀態(tài)絕對(duì)是一個(gè)小巔峰,如果有機(jī)會(huì)應(yīng)該多投幾個(gè)一起面試。

話說(shuō)回來(lái),滴滴一面過(guò)程中我就感覺(jué)我能過(guò)了,因?yàn)榛卮鸬暮芎?,我的知識(shí)面廣度和深度相對(duì)來(lái)說(shuō)還可以,所以聊起來(lái)就是談天說(shuō)地,喜笑顏開。整個(gè)面試給我感覺(jué)比較好,滴滴給我的感覺(jué)就像百度一樣,很有技術(shù)范兒,一面協(xié)作同事面嘛,如果有這樣的同事我感覺(jué)還挺安心的。這里針對(duì)面試感覺(jué)特別聊一下,雖然不是特別準(zhǔn),但是一般出現(xiàn)兩種情況說(shuō)明面試不通過(guò)的幾率很高。首先是面試官全程盤問(wèn)式的態(tài)度,或者很快進(jìn)入了代碼題階段亦或者直接反問(wèn),有什么問(wèn)題想問(wèn)的,這種就說(shuō)明面試官對(duì)你的感覺(jué)不好,你身上沒(méi)有他感興趣或者想了解的地方。

二面

問(wèn)答

  1. 跑路理由
  2. 你在供應(yīng)鏈業(yè)務(wù)是做什么的,項(xiàng)目?jī)?nèi)容啥樣的,開發(fā)模式和流程咋樣的
  3. 看你大數(shù)據(jù)方面做得多,簡(jiǎn)單介紹下為什么做大數(shù)據(jù)
  4. 為什么要用到TIDB,數(shù)據(jù)量如何
  5. TIDB如何部署的,節(jié)點(diǎn)如何分配
  6. 為什么用TIDB,與傳統(tǒng)數(shù)據(jù)庫(kù)優(yōu)勢(shì)在哪
  7. NoSQL很好擴(kuò)容,那么TIDB是如何做到無(wú)縫擴(kuò)容的
  8. 為什么不用MySQL+Redis,而是用TIDB?
  9. 緩存需要考慮數(shù)據(jù)一致性問(wèn)題,TIDB如何保證數(shù)據(jù)一致性問(wèn)題的---沒(méi)回答出來(lái)
  10. 因?yàn)闆](méi)答上上一個(gè)問(wèn)題,我主動(dòng)扯到了緩存數(shù)據(jù)庫(kù)一致性問(wèn)題---開始深挖,噩夢(mèng)開始
  11. 緩存穿透問(wèn)題,預(yù)熱帶來(lái)的問(wèn)題
  12. 本地緩存和分布式緩存的實(shí)現(xiàn)思路有哪些,結(jié)構(gòu)區(qū)別在哪--沒(méi)有細(xì)聊
  13. 本地緩存應(yīng)用場(chǎng)景,對(duì)比分布式有什么優(yōu)點(diǎn)和缺點(diǎn)
  14. 本地緩存有哪些,怎么實(shí)現(xiàn)的,如果讓你來(lái)設(shè)計(jì)一個(gè)本地緩存需要考慮哪些問(wèn)題
  15. 本地緩存多節(jié)點(diǎn)更新時(shí),如何考慮其他節(jié)點(diǎn)本地緩存的更新,guava里是如何做的--我這里答的自相矛盾
  16. 有沒(méi)有哪些寫得好的組件分享一下
  17. 面試官說(shuō)他之前也寫過(guò)日志收集這么一套東西,他覺(jué)得相對(duì)簡(jiǎn)單,就是配置一下,問(wèn)了我的一個(gè)設(shè)計(jì)思路
  18. NIO、IO多路復(fù)用怎么玩的,epoll解決了什么問(wèn)題
  19. Kafka的批處理是什么
  20. 代碼題:多線程循環(huán)打印
  21. 如何保證一個(gè)系統(tǒng)的穩(wěn)定性-事前事中事后,他在教我,說(shuō)我缺少這方面的經(jīng)驗(yàn)

一二三是對(duì)我過(guò)往的業(yè)務(wù)經(jīng)歷感興趣,因?yàn)槲铱煳迥甓荚谕患夜荆瑤缀趺看味婊蛘呷娑紩?huì)問(wèn)到我這個(gè)問(wèn)題。因?yàn)榇髷?shù)據(jù)兼職的人比較少,很多人也會(huì)對(duì)大數(shù)據(jù)這塊感興趣,特別是TiDB,我發(fā)現(xiàn)真挺多公司在用。特別是用過(guò)的人,總會(huì)問(wèn)我TiDB的東西,這里簡(jiǎn)要總結(jié)下,一個(gè)新技術(shù)或者中間件會(huì)怎么提問(wèn)。選型理由,如何部署,和之前區(qū)別在哪,有什么好處和壞處,原理和架構(gòu)設(shè)計(jì)。四五六簡(jiǎn)單回答一下TiDB的優(yōu)點(diǎn)和缺點(diǎn),優(yōu)點(diǎn)自然是分布式架構(gòu)天然支持大數(shù)據(jù)量、簡(jiǎn)單的命令提高了運(yùn)維效率、同時(shí)自帶的看板提高了可觀測(cè)性。缺點(diǎn)自然是需要更強(qiáng)更多的硬件資源、小數(shù)據(jù)量下分布式網(wǎng)絡(luò)開銷的影響表現(xiàn)不如MySQL以及兼容性問(wèn)題。

七是個(gè)好問(wèn)題,涉及到了TiDB的原理。架構(gòu)上TiDB分為四大組件,PD、TiDB、TiKV和TiFlash,TiDB是整個(gè)架構(gòu)的中樞,負(fù)責(zé)執(zhí)行、優(yōu)化等SQL處理,PD負(fù)責(zé)元信息管理和集群的調(diào)度,TiKV和TiFlash都是存儲(chǔ)組件。在存儲(chǔ)中將數(shù)據(jù)分割成許多小的區(qū)塊(Region),每個(gè) Region 由多個(gè)副本(replica)組成,這些副本通過(guò) Raft 協(xié)議保證數(shù)據(jù)的一致性和高可用性。擴(kuò)容時(shí),新節(jié)點(diǎn)可以接管一些現(xiàn)有 Region 的副本,從而分散負(fù)載。

八同樣是個(gè)好問(wèn)題,眾所周知,越多的技術(shù)層級(jí)會(huì)帶來(lái)越多穩(wěn)定性上的問(wèn)題,同時(shí)增加了代碼的復(fù)雜度。

問(wèn)題九難到我了,答了個(gè)亂七八糟,沒(méi)說(shuō)出來(lái)重點(diǎn)。事后總結(jié)一下,大致分為四點(diǎn)。一是內(nèi)置分布式事務(wù),多節(jié)點(diǎn)二階段提交保證一致性。二是TiKV設(shè)計(jì)了分片和副本的概念,使用 Raft 協(xié)議來(lái)管理數(shù)據(jù)的復(fù)制和一致性。三是和MySQL類似的MVCC機(jī)制保證讀寫。四是TiDB有定時(shí)做一致性檢查,有問(wèn)題會(huì)觸發(fā)數(shù)據(jù)修復(fù)機(jī)制。

如何保證數(shù)據(jù)庫(kù)和緩存的數(shù)據(jù)一致性

如果數(shù)據(jù)量級(jí)很小,可以全量數(shù)據(jù)裝載進(jìn)緩存,定時(shí)刷入數(shù)據(jù)庫(kù),有一個(gè)缺陷是如果緩存宕機(jī),數(shù)據(jù)庫(kù)可能不是最新的數(shù)據(jù)。通常對(duì)緩存的操作分為修改和刪除兩種,修改有兩個(gè)問(wèn)題,一是異常,修改數(shù)據(jù)庫(kù)和緩存只要有一個(gè)出現(xiàn)異常,雙方的值都會(huì)不一樣,二是并發(fā)帶來(lái)的修改丟失問(wèn)題。刪除可以避免修改異常帶來(lái)的問(wèn)題,但是也不能解決并發(fā)的問(wèn)題,解決可以通過(guò)延時(shí)雙刪。通常會(huì)采用旁路緩存模式,也就是先更新數(shù)據(jù)庫(kù),再刪除緩存,先刪除緩存的話容易在并發(fā)時(shí)緩存寫入舊值。后刪除緩存同樣會(huì)存在問(wèn)題,在緩存剛好失效的情況下,讀請(qǐng)求先于寫請(qǐng)求讀取數(shù)據(jù)庫(kù),此時(shí)寫請(qǐng)求更新數(shù)據(jù)庫(kù),然后刪除緩存,最后讀請(qǐng)求寫入舊緩存。但這種極端條件不容易滿足,還不如考慮刪除緩存失敗的情況,刪除失敗可以考慮重試,重試最好異步可以走消息隊(duì)列。如果要保證強(qiáng)一致性,就要考慮分布式事務(wù),比如2PC,3PC之類的一致性協(xié)議,但是性能降低了,為了保證性能,還是考慮最終一致性。

十到十五是針對(duì)緩存的提問(wèn),看來(lái)這塊應(yīng)該是面試官擅長(zhǎng)或者感興趣的地方,問(wèn)的很多。緩存數(shù)據(jù)庫(kù)一致性問(wèn)題回答如上,緩存穿透場(chǎng)景,我提到了兩個(gè),業(yè)務(wù)攔截和預(yù)熱。緊接著追問(wèn)我預(yù)熱會(huì)有什么問(wèn)題,我說(shuō)還需要定時(shí)更新保證不失效,后面還問(wèn)了啥忘了。從這里的一些表現(xiàn),面試官直接跟我說(shuō)是不是缺少高并發(fā)的經(jīng)驗(yàn),我說(shuō)是的,老哥戳著我肺管子了,哈哈。又問(wèn)了本地緩存和分布式緩存,我介紹了我常用的Caffeine和Redis,簡(jiǎn)要介紹了下數(shù)據(jù)結(jié)構(gòu)及原理,沒(méi)有細(xì)問(wèn)。接著問(wèn)了本地緩存相比分布式的優(yōu)劣勢(shì),優(yōu)勢(shì)自然是無(wú)網(wǎng)絡(luò)開銷和穩(wěn)定性強(qiáng),缺點(diǎn)顯而易見(jiàn),占堆內(nèi)存。然后又問(wèn)我本地緩存有哪些,我說(shuō)了還用過(guò)GuavaCache,數(shù)據(jù)結(jié)構(gòu)都是ConCurrentHashMap的變種配合不同的驅(qū)逐策略。讓我自己設(shè)計(jì)的話,我回答了會(huì)從數(shù)據(jù)結(jié)構(gòu)選擇、線程安全、驅(qū)逐策略三方面考慮。

十五這里我沒(méi)答出來(lái),因?yàn)槲毅铝耍镜鼐彺嬖谖矣∠笾芯褪菦](méi)法多節(jié)點(diǎn)更新,事后查了也確實(shí)沒(méi)有,我懷疑是不是我問(wèn)題理解錯(cuò)了,應(yīng)該是問(wèn)我分布式緩存應(yīng)該如何設(shè)計(jì)。這一塊我相信讀者也能感覺(jué)出來(lái),這就是面試?yán)飼?huì)有的連環(huán)炮環(huán)節(jié),面試官會(huì)根據(jù)知識(shí)點(diǎn)圍攻型的提問(wèn),很多情況下已經(jīng)脫離了常規(guī)的八股和場(chǎng)景題了,更多的是考驗(yàn)技術(shù)積累。所以我一直做的是去構(gòu)建自己的知識(shí)體系,而不是背題,題是背不完的,Java這個(gè)生態(tài)太廣了,連環(huán)炮一開總會(huì)挖到你夠不著的地方,更不用說(shuō)有些面試官自己也說(shuō)不上,就是想看看你有沒(méi)有金點(diǎn)子。這里簡(jiǎn)單提一個(gè)屬于我的面試經(jīng)驗(yàn),如何去規(guī)避連環(huán)炮。在面對(duì)連環(huán)炮的開場(chǎng)基礎(chǔ)問(wèn)題時(shí),我會(huì)隨機(jī)應(yīng)變根據(jù)問(wèn)題的基礎(chǔ),自動(dòng)去擴(kuò)展問(wèn)題的廣度和深度,按照答案->原理->實(shí)戰(zhàn)->擴(kuò)展四步走完成一段較長(zhǎng)的論述,通常這么一段下來(lái)就會(huì)有一種面試官說(shuō)一句,我說(shuō)幾十句的效果。為什么這么做?一是完美地展示了自己知識(shí)范圍內(nèi)的廣度和深度,避免連環(huán)炮問(wèn)到不會(huì)的地方。二是壓縮了面試官的提問(wèn)時(shí)間,這也是很重要的,不一樣面經(jīng)第一篇就提到了,面試有時(shí)間限制,各個(gè)模塊的考察也有時(shí)間限制,我占用了這部分時(shí)間,面試官如果沒(méi)有意外就會(huì)認(rèn)為這個(gè)模塊及格,進(jìn)入下一模塊。

十六十七就是想要知道我覺(jué)得我自己寫的組件里最滿意的技術(shù)組件是啥,我說(shuō)了日志收集,感興趣可以翻一下我博客的第二篇,自己去搭一個(gè)。這一塊就是閑聊,沒(méi)怎么擴(kuò)展,因?yàn)槿罩臼占乃悸肺颐枋龅暮芮宄?,市面上流行的日志收集邏輯也差不多都一個(gè)套路,沒(méi)啥說(shuō)的。

十八十九就是我前面提到的,每個(gè)模塊都得沾一下,要打分的。這里重點(diǎn)提一下,為什么問(wèn)的這么簡(jiǎn)單?原因是這個(gè)時(shí)間,面試官對(duì)我印象非常好了,主動(dòng)跟我說(shuō)在翻我的博客看,覺(jué)得我基礎(chǔ)很扎實(shí),就隨便問(wèn)了倆博客看到的問(wèn)題,確認(rèn)下是不是我寫的。

代碼題就是多線程打印,這里粘一下之前的,題目不一樣,但是邏輯和思路一樣,不重新寫了。

public static void main(String[] args) {
    AtomicInteger ai = new AtomicInteger(1);
    Semaphore a = new Semaphore(1);
    Semaphore b = new Semaphore(0);
    Semaphore c = new Semaphore(0);
    try (ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 100,
            1, TimeUnit.MINUTES, new LinkedBlockingQueue<>(100));) {
        executor.submit(new Thread(() -> {
            printNum(ai, a, b);
        }));
        executor.submit(new Thread(() -> {
            printNum(ai, b, c);
        }));
        executor.submit(new Thread(() -> {
            printNum(ai, c, a);
        }));
    }
}

private static void printNum(AtomicInteger ai, Semaphore cur, Semaphore next) {
    while (ai.get() <= 100) {
        try {
            cur.acquire();
            //必要--在多線程環(huán)境中,有可能一個(gè)線程已經(jīng)通過(guò)了循環(huán)條件(ai.get() <= MAX_NUMBER)并且獲取了信號(hào)量,而另一個(gè)線程(它已經(jīng)在等待中)也通過(guò)了循環(huán)條件。如果沒(méi)有額外的檢查,兩個(gè)線程可能在釋放信號(hào)量之前都會(huì)打印超過(guò)上限的數(shù)字,導(dǎo)致輸出不正確。
            if (ai.get() <= 100) {
                System.out.println(ai.getAndIncrement());
            }
            next.release();
        } catch (InterruptedException e) {
            throw new RuntimeException();
        }
    }
}

二十一其實(shí)是喂飯局,這個(gè)問(wèn)題是他自問(wèn)自答的,因?yàn)樗f(shuō)三面經(jīng)理百分百會(huì)問(wèn),讓我好好準(zhǔn)備一下,教我大概怎么回答比較合適。

感受

其實(shí)面試到一多半的時(shí)候,我就感覺(jué)會(huì)過(guò)了,因?yàn)樗岬皆诳次业牟┛?,目前我的博客?duì)于面試官的初見(jiàn)印象有著極強(qiáng)的拉升作用,只要看了,這場(chǎng)面試就會(huì)過(guò)。整個(gè)面試下來(lái),回答了百分百的問(wèn)題,正確率復(fù)盤大概是百分之九十,少有不會(huì)的也會(huì)靠知識(shí)體系的擴(kuò)展去關(guān)聯(lián)到我會(huì)的地方,實(shí)在不會(huì)的那就抱歉了,不會(huì)就是不會(huì),學(xué)會(huì)了再來(lái)。代碼題也是老搭檔了,多線程我太熟練了,溝通上整體舒適,都很開心。最后給我透題真是活久見(jiàn),感謝善良的面試官,雖然最后沒(méi)過(guò)。這里提一下,滴滴都是第二天早上10-11點(diǎn)通知面試通過(guò),哪怕是這個(gè)二面面試官明確告訴我等下一面通知,流程依舊是這樣的。

三面

  1. 跳槽原因
  2. 有沒(méi)有拿到別的Offer
  3. 介紹一下你公司的業(yè)務(wù),規(guī)模如何,團(tuán)隊(duì)規(guī)模如何,開發(fā)的業(yè)務(wù)
  4. 介紹下你工作中的一個(gè)項(xiàng)目,從業(yè)務(wù)和架構(gòu)兩方面來(lái)講
  5. 為什么之前定時(shí)計(jì)算花了一小時(shí),拆解一下,訂單量級(jí)如何
  6. 這個(gè)項(xiàng)目中最大的技術(shù)挑戰(zhàn)是什么
  7. 如何保證Flink的高可用
  8. 數(shù)倉(cāng)的數(shù)據(jù)量如何
  9. Flink有沒(méi)有什么監(jiān)控措施
  10. 聊一聊系統(tǒng)的高可用如何保證
  11. 有遇到什么特別棘手的線上問(wèn)題嗎
  12. 遇到事故之后怎么去做,分步驟
  13. 評(píng)價(jià)一下你四年的開發(fā)歷程
  14. 講一下你在工作中的優(yōu)勢(shì)和劣勢(shì)
  15. 你的項(xiàng)目如何保證可用性
  16. 職業(yè)規(guī)劃是什么

三面其實(shí)挺少問(wèn)技術(shù)的,因?yàn)榍皟擅嬖摽疾斓亩伎疾焱戤吜耍膊慌懦械?,看領(lǐng)導(dǎo),大中公司我都遇到過(guò)三面考察技術(shù)的,一旦考察技術(shù)多少會(huì)做道題。常規(guī)來(lái)說(shuō),三面不會(huì)問(wèn)技術(shù),因?yàn)榍皟擅娴拿嬖嚬俚脑u(píng)分和面試表都會(huì)給到三面面試官,能到三面技術(shù)就沒(méi)啥問(wèn)題。我說(shuō)這么多的意思就是,三面也別放松,還是有技術(shù)面的考察可能。還是來(lái)通過(guò)問(wèn)題分析一下面試官想要考察的點(diǎn),首先是一二,常規(guī)問(wèn)題,但是問(wèn)你有沒(méi)有別的offer,大概率是因?yàn)槟愕囊欢嬖u(píng)分較高,超過(guò)了其他候選人。

三到八都是對(duì)項(xiàng)目的業(yè)務(wù)和設(shè)計(jì)側(cè)考察,核心目的是判斷你對(duì)整個(gè)項(xiàng)目的熟悉情況,也就是這個(gè)項(xiàng)目是否真實(shí),其二是通過(guò)這個(gè)項(xiàng)目去考察你對(duì)業(yè)務(wù)的熟練程度。為什么會(huì)考察業(yè)務(wù)?因?yàn)楝F(xiàn)在的崗位,大多還是業(yè)務(wù)崗,后面我也有面過(guò)技術(shù)中臺(tái)的崗位,確實(shí)不太關(guān)注業(yè)務(wù),考察業(yè)務(wù)的理解也就側(cè)面能判斷出你在接觸新業(yè)務(wù)時(shí)的一個(gè)上手的速度。

九到十二其實(shí)都是圍繞高可用保障這一點(diǎn)去聊,前面二面面試官提點(diǎn)過(guò)我的,所以這塊準(zhǔn)備充分,答得還行吧。

十三到十六就是比較寬泛的聊天局,差不多就會(huì)有這些問(wèn)題,大家也可以提前準(zhǔn)備一下。為啥會(huì)有這些看起來(lái)很廣的題呢?其實(shí)換位思考,三面也就是經(jīng)理級(jí)別,我們這種面試的小嘍啰進(jìn)去也不是人家的直接下屬,人也就是面試的時(shí)候看一下你的簡(jiǎn)歷,短時(shí)間也不能通過(guò)簡(jiǎn)歷看出你的能力,所以會(huì)拋一個(gè)很寬的問(wèn)題讓我們回答。哪怕是你沒(méi)有準(zhǔn)備,你自己來(lái)說(shuō)一個(gè)案例,也是你認(rèn)為職業(yè)生涯中最好的東西,面試官就會(huì)基于這個(gè)點(diǎn)去深挖,找他想要從你身上了解的東西。三面我認(rèn)為和一二面的面試策略不同,一二面你是被考察的人,三面是更需要你去展示自我的,所以口才一定要在及格以上。

三面隔天通知是過(guò)了,HR也很熱情,告訴我準(zhǔn)備下HRBP面試,我也很高興,畢竟滴滴核心崗。我有朋友在滴滴,他跟我說(shuō)滴滴開發(fā)氛圍挺不錯(cuò)的,所以期待值拉滿。三面其實(shí)也沒(méi)啥好總結(jié)的,一般分為線下和線上,強(qiáng)制要求線下的話,一般要注意下可能會(huì)有技術(shù)考察、紙筆畫流程圖和設(shè)計(jì)圖等情況發(fā)生。滴滴是我第一個(gè)三面通過(guò)的大廠,這時(shí)候其實(shí)已經(jīng)開香檳了,畢竟誰(shuí)也沒(méi)想到現(xiàn)在面試什么騷操作都有。

HRBP

HRBP面試大多數(shù)情況下,可以理解為三面的縮略版,會(huì)偏生活側(cè)一些,當(dāng)然基于技術(shù)和業(yè)務(wù)的考察也有。問(wèn)題很簡(jiǎn)單,這里就不贅述了,結(jié)果就是等了兩天,HR告訴我結(jié)果待定,因?yàn)榈蔚伪懒?,他們?cè)谥苯鉀Q問(wèn)題,所以我也能理解。隔了一周告訴我,我的技術(shù)基礎(chǔ)很好,但是沒(méi)有高并發(fā)項(xiàng)目經(jīng)歷這點(diǎn)讓老板很糾結(jié),讓我再等等。然后的然后,我也知道沒(méi)戲了,沒(méi)腆著臉再問(wèn)了,畢竟再問(wèn)就不禮貌了。

說(shuō)實(shí)話,在HRBP面被卡我真是沒(méi)想到的,都開好香檳了,給我收回去了,2023年魔幻的就業(yè)市場(chǎng)讓我驚嘆!當(dāng)然后面的經(jīng)歷告訴我,2024年更是逆天,這里后面再說(shuō)。

寫在最后

說(shuō)實(shí)話,從2023年底面試到2024年中,在面試過(guò)的崗位中,無(wú)論是有沒(méi)有offer的,最喜歡的就是滴滴這個(gè)崗位,無(wú)論是平臺(tái)還是工作方向都是上上之選,意難平是真的意難平,特別是倒在勝利前夜的感覺(jué)。頹靡了不到半周,又接著開始找了,沒(méi)辦法,現(xiàn)實(shí)是現(xiàn)實(shí),無(wú)論是什么原因都改變不了結(jié)果。不過(guò)這次半成功的經(jīng)歷非常激勵(lì)我,畢竟滴滴核心崗都能過(guò)三面,說(shuō)明我的能力是被認(rèn)可的,面試信心倍增。

希望大家在這個(gè)寒冬中找到滿意的工作,身體健康賺錢錢,我要讓這痛苦壓抑的世界綻放幸福快樂(lè)之花,向美好的世界獻(xiàn)上祝福!?。?/p>

——轉(zhuǎn)載自作者:云雨雪

#面試題刺客退退退#
全部評(píng)論

相關(guān)推薦

當(dāng)然,假期有點(diǎn)放松出去玩了,可能有些面試點(diǎn)我也有點(diǎn)遺忘,但是面試過(guò)程總體感覺(jué)極其尷尬。我聲音都開老大了,但是感覺(jué)面試官吐字還是有點(diǎn)不清楚,而且有些時(shí)候,描述有點(diǎn)讓我著迷給我一種錯(cuò)覺(jué),他就是crud&nbsp;toB項(xiàng)目的受害者(bushi)感覺(jué)很怪,但是不知道問(wèn)題出在哪里反正兩個(gè)人感覺(jué)有點(diǎn)大眼瞪小眼,雖然看上去問(wèn)題什么的都回答上了,但是沒(méi)有擴(kuò)展延伸,沒(méi)有欲望去擴(kuò)展雙方反饋怪怪的1.&nbsp;自我介紹起手2.&nbsp;為什么你自我介紹這個(gè)比賽項(xiàng)目和導(dǎo)師項(xiàng)目沒(méi)有體現(xiàn)在簡(jiǎn)歷里?(不是!哥們~~,簡(jiǎn)歷,不是繁歷啊阿巴阿巴3.&nbsp;你這個(gè)是哪個(gè)公司的項(xiàng)目嗎?(那我問(wèn)你,我為什么不寫成實(shí)習(xí)經(jīng)歷(bushi4.&nbsp;我看你這個(gè)Redis、MQ、Es都是高可用、高并發(fā),我能不能直接升級(jí)硬件呢?為什么不直接加設(shè)備呢?(那我問(wèn)你!我不玩&nbsp;AI&nbsp;是因?yàn)槲也幌胭I&nbsp;4090嗎5.&nbsp;為什么你們這個(gè)項(xiàng)目不用多實(shí)例部署呢?6.&nbsp;你覺(jué)得什么用戶體量下才會(huì)使用你這些Redis、MQ、ES(不用用戶體量,面試項(xiàng)目就行!bushi,QPS&nbsp;5000-7000以下基本也不會(huì)卡頓,過(guò)萬(wàn)的話可以考慮加Redis(悲傷7.&nbsp;你這個(gè)比賽項(xiàng)目的話,相較于Boss直聘有什么特色嗎(項(xiàng)目是求職推薦系統(tǒng))8.&nbsp;BS還是CS?9.&nbsp;導(dǎo)師項(xiàng)目的話,為什么讓你們用Java重構(gòu)呢?(原項(xiàng)目為C#,果咩納塞,只能靠自己的一些積累回答了,主要是不熟悉C#,然后導(dǎo)師并沒(méi)有給出源碼,只給需求,這里需要重度吐槽學(xué)校!項(xiàng)目就問(wèn)到這里吧,問(wèn)問(wèn)技術(shù)點(diǎn)什么,然后你這個(gè)是校招,會(huì)比社招要求低很多(啊?好??10.&nbsp;Java中接口和抽象類區(qū)別11.&nbsp;Java中Integer是個(gè)什么東西?裝箱和拆箱是什么?12.&nbsp;Integer作為函數(shù)傳遞,函數(shù)中+1,函數(shù)外是否會(huì)+113.&nbsp;=和equals區(qū)別(應(yīng)該是==吧,嗯嗯,對(duì)14.&nbsp;一般equals和hashCode怎么重寫15.&nbsp;Java中有一個(gè)單例類,你能介紹一下嗎?(什么???這是什么神奇的類?&nbsp;只得說(shuō),我確實(shí)不太了解。面試官:就是單例模式的那個(gè)類,日內(nèi)瓦。。。。16.&nbsp;final和finalize17.&nbsp;try?只有try&nbsp;catch用法嗎?18.&nbsp;一般數(shù)據(jù)庫(kù)主鍵使用什么數(shù)據(jù)類型(當(dāng)時(shí)??,不過(guò)用優(yōu)化和隱患角度說(shuō)了int和varchar19.&nbsp;數(shù)據(jù)庫(kù)優(yōu)化一般有什么方法20.&nbsp;分庫(kù)分表?21.&nbsp;按照年份分的話,2025年的表壓力還是太大怎么辦啊,比較幾乎現(xiàn)在crud都是走這個(gè)表22.&nbsp;反問(wèn)-&nbsp;問(wèn)部門業(yè)務(wù)(回:純業(yè)務(wù),業(yè)務(wù)復(fù)雜,沒(méi)有什么架構(gòu)和中間件,toB,也就是SpringBoot+MySQL,那我跑!)-&nbsp;地點(diǎn)
查看21道真題和解析
點(diǎn)贊 評(píng)論 收藏
分享
評(píng)論
9
21
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
牛客企業(yè)服務(wù)