<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          程序員一直永遠(yuǎn)逃不開(kāi)的面試關(guān)

          共 5738字,需瀏覽 12分鐘

           ·

          2021-05-05 07:03

          在這個(gè)行業(yè)和社會(huì)都處在特殊時(shí)期的時(shí)期,有多少人正在找工作,或者正準(zhǔn)備找工作。。。本文想從發(fā)展階段、主語(yǔ)言、項(xiàng)目等幾個(gè)方面來(lái)總結(jié)下我們到底應(yīng)該怎樣準(zhǔn)備面試和發(fā)展我們的技術(shù),希望可以給各位帶來(lái)一些幫助~



          • 關(guān)于階段 

          對(duì)于職場(chǎng)人,在這方面情況基本應(yīng)該都一樣,一年 、 三年 、  五年。。?;径伎梢杂眠@個(gè)時(shí)間段來(lái)給自己定個(gè)衡量的標(biāo)準(zhǔn),每個(gè)階段要達(dá)到這個(gè)階段應(yīng)該具備的水平。

          (圖片來(lái)自網(wǎng)絡(luò))


             2~3年
          經(jīng)過(guò)一年的歷練,基本的開(kāi)發(fā)技能和語(yǔ)言特性都應(yīng)該有所了解,這個(gè)時(shí)候,就是從初級(jí)向高級(jí)轉(zhuǎn)化的重要階段。要把停留在使用層面的知識(shí)研究的更加深入,要知其然也知其所以然。只要理解透,我們是不必懼怕傳說(shuō)中的連環(huán)炮的。

          例:
          問(wèn):什么數(shù)據(jù)結(jié)構(gòu)可以快速查找一個(gè)元素?
          答:hashmap。
          問(wèn):為什么可以快速定位?
          答:散列算法。
          問(wèn):hash函數(shù)是怎么降低沖突的?
          答:擾動(dòng)函數(shù)通過(guò)高位和低位特征融合,減少低位取模時(shí)的哈希沖突。
          問(wèn):1.7 和1.8的擾動(dòng)變化是否了解?
          答:四次降為一次,邊際效應(yīng),投入產(chǎn)出不對(duì)等。
          問(wèn):1.8還有什么改進(jìn)?
          答:鏈表轉(zhuǎn)樹(shù)。
          問(wèn):為什么轉(zhuǎn)樹(shù),為什么用紅黑樹(shù),而不是其他樹(shù)?
          答:鏈表查找效率低,紅黑樹(shù)調(diào)整效率比其他平衡樹(shù)樹(shù)高。
          問(wèn):為什么擴(kuò)容要保持2的次方,和此相關(guān)的1.8的改進(jìn)了解么?
          答:保持2的次方,在hash函數(shù)中取模時(shí),直接移位就行,速度快,1.8在擴(kuò)容方面進(jìn)行了優(yōu)化,不再計(jì)算哈希值,直接用舊的容量加上偏移量,允許這么做的前提是保持2的次方和兩倍擴(kuò)容,提高速度。
          問(wèn):1.8對(duì)并發(fā)下的死鎖修復(fù)?
          等等。。。。。 

          3~5年
          這也是個(gè)重要的階段,這個(gè)階段是一個(gè)知識(shí)融會(huì)貫通的時(shí)期,要把點(diǎn)連成線,把線連成面,把面組成體,然后再窺探整個(gè)生態(tài)的組成和發(fā)展。

            我們要從hashmap關(guān)聯(lián)到支持并發(fā)的currenthashmap,從而可以關(guān)聯(lián)到currentHashmap  原理中鎖的運(yùn)用,那自然就想到了鎖的種類(lèi),每種鎖的優(yōu)缺點(diǎn)。

                  說(shuō)回來(lái),為什么1.8里currenthashmap要棄用Lock改成synchronized,那就要談到synchronized進(jìn)化史,就有了偏向鎖的原理、偏向鎖的缺點(diǎn)、偏向鎖在高并發(fā)情況下對(duì)系統(tǒng)性能和gc耗時(shí)的影響,什么情況什么時(shí)間怎樣撤銷(xiāo)偏向鎖、什么是安全點(diǎn)為什么要有安全點(diǎn)、什么情況會(huì)使用到安全點(diǎn)。

                  談安全點(diǎn)肯定談到gc,那gc的發(fā)展歷程,cms到g1到zgc都有哪些提升,從對(duì)象的可達(dá)性分析聯(lián)系到root對(duì)象的種類(lèi),這些對(duì)象都是存在哪里,然后就自然想到了jvm內(nèi)存模型,對(duì)象的加載創(chuàng)建,內(nèi)存中哪些地方存儲(chǔ)哪些東西,為什么說(shuō)G1適合更大內(nèi)存規(guī)格的服務(wù)器使用,因?yàn)樗褂妙~外的內(nèi)存空間來(lái)創(chuàng)建Rset,有什么作用呢,說(shuō)白了就是空間換時(shí)間,提前維護(hù)每個(gè)內(nèi)存區(qū)塊的內(nèi)部信息,已遍快速精確的根據(jù)用戶(hù)訴求,控制垃圾回收目標(biāo)。

                  那么還有哪些地方用到了這類(lèi)思想,可能想到redis,比如字符串,底層自定義的struct中,包含并提前維護(hù)了原始c語(yǔ)言字符串結(jié)構(gòu),還有相關(guān)的各種信息:長(zhǎng)度、富余可用空間等等,用空間換時(shí)間,達(dá)到操作時(shí)的高性能,那么redis的高性能還有哪些方面,單線程,多路復(fù)用io。

                  談到多路復(fù)用,可能就聯(lián)系到了NIO、netty,什么機(jī)制促成了其高性能,其用途那自然是各種rpc框架。

                  Rpc的話,負(fù)載均衡有哪些策略,除了服務(wù)端rpc的負(fù)載均衡,還有哪些地方需要負(fù)載均衡?

                  那可能是ip解析,四層七層網(wǎng)絡(luò)協(xié)議這邊的事了,用ngix,HA來(lái)進(jìn)行上層負(fù)載。
              rpc服務(wù)發(fā)展機(jī)制用什么實(shí)現(xiàn),可能想到dubbo的zookeeper注冊(cè)中心,那基于zk的注冊(cè)中心有什么問(wèn)題,曾經(jīng)老東家用zk做注冊(cè)中心,為什么在大促時(shí)候出現(xiàn)了血崩。。。。。。

          遇到問(wèn)題多想一步,收獲可能會(huì)大很多。當(dāng)然,上面的這些也只是在知識(shí)層面的相互聯(lián)系,或者還應(yīng)該可以把他們?nèi)嘣陧?xiàng)目里,用了某些策略帶來(lái)的連帶影響,業(yè)務(wù)場(chǎng)景對(duì)技術(shù)選型的要求等等。實(shí)話說(shuō),這兩個(gè)階段,我自己應(yīng)該是沒(méi)特別把握好的。頓悟的太遲了。。。 



          • 關(guān)于主語(yǔ)言 

          作為自己吃飯的家伙事,不管你有多全能,主語(yǔ)言是一定要通透的。不過(guò)對(duì)我就是Java沒(méi)有主副之分,因?yàn)槠渌乙膊粫?huì)吶(  ????????  )

          (圖片來(lái)自網(wǎng)絡(luò))


          Java的生態(tài)非常龐大,不過(guò)只看語(yǔ)言的話,其實(shí)可以摘出四個(gè)比較重要的方面,如果是在準(zhǔn)備面試的小伙伴,按這幾個(gè)模塊挨個(gè)的啃啃,應(yīng)該也是不錯(cuò)的選擇:

           數(shù)據(jù)結(jié)構(gòu)、并發(fā)、IO、虛擬機(jī) 

          當(dāng)然,像我這種渣渣,肯定是沒(méi)法把所有的點(diǎn)全部掌握的,像IO 、網(wǎng)絡(luò) 這部分,我就基本上是泛泛的了解,因?yàn)閷?xiě)的都是服務(wù)端上層業(yè)務(wù),基本也沒(méi)有機(jī)會(huì)接觸到底層的通信。不過(guò)我們可以想辦法往我們熟悉的區(qū)域蹭,引導(dǎo)面試官。

          比如項(xiàng)目中經(jīng)常使用線程,那就可以吹一會(huì)線程的東西,怎么評(píng)估業(yè)務(wù)場(chǎng)景,怎么確定線程池參數(shù),為什么重來(lái)不用java提供的線程池創(chuàng)建工廠去創(chuàng)建線程池,自動(dòng)創(chuàng)建的那四種線程池各有什么弊端,會(huì)帶來(lái)什么問(wèn)題,線程池提交的任務(wù)結(jié)果怎么獲取,有什么問(wèn)題,設(shè)置超時(shí)的必要性,線程池超時(shí)中斷原理等等。 

          又比如我們有壓測(cè)調(diào)優(yōu)的經(jīng)驗(yàn),那又可以從jvm的角度來(lái)扯扯,我們的用戶(hù)規(guī)模,訪問(wèn)并發(fā),機(jī)器集群數(shù)量,規(guī)格,gc策略,線上問(wèn)題,調(diào)優(yōu)方案,gc時(shí)間的影響因素,堆大小,對(duì)象大小在高并發(fā)下對(duì)gc的影響。線上oom的原因,處理方法,保存現(xiàn)場(chǎng),止血,問(wèn)題分析等等。

          值得提一句的是,如果我們身在大廠,對(duì)原始的常用操作命令還是要適當(dāng)回顧了解一下,不能當(dāng)人家問(wèn)我們,怎么保存現(xiàn)場(chǎng)呢,回答,公司有九州操作平臺(tái),我們點(diǎn)一下dump就行,這樣就顯的low了點(diǎn), 就比如我 ??,不過(guò)我說(shuō)的也是事實(shí),越大的公司,對(duì)線上服務(wù)器的權(quán)限控制越嚴(yán)格,一般是不會(huì)允許我們自己搞命令行的,重啟大法還是最有效的 。



          • 關(guān)于項(xiàng)目 

          項(xiàng)目這一塊是個(gè)大頭,一般面試,都要求講一個(gè)自己認(rèn)為最牛逼的項(xiàng)目。簡(jiǎn)歷上的東西最好都提前回顧下,我記得有次面試,就很大意,就沒(méi)在乎上一家公司的項(xiàng)目,被一兄弟逮住一通問(wèn),都他妹的忘了,白白讓他享受了一波虐人的感覺(jué)。

          (圖片來(lái)自網(wǎng)絡(luò))


          如果項(xiàng)目吹的好,基本半個(gè)小時(shí)開(kāi)外了,其他的點(diǎn)也就捎帶一下,當(dāng)然,前提是我們要吃透項(xiàng)目的整體架構(gòu),上下游的依賴(lài),然后就是里那些最牛逼的技術(shù)點(diǎn),最好是自己參與過(guò)的。

          比如說(shuō)用到了分布式事務(wù),那就要知道業(yè)界常用的XA、TCC這些方式和原理,特別是處在阿里這種公司,很多東西都是定制化,不和業(yè)界的通用技術(shù)來(lái)對(duì)比著看,總有些自說(shuō)自話的感覺(jué)。

          要知道它的發(fā)起方、參與方、協(xié)調(diào)者等角色,要知道怎樣通過(guò)spring的后置處理器等鉤子函數(shù)注冊(cè)二階段處理器,什么時(shí)機(jī)怎樣將主事務(wù)信息和分支事務(wù)信息落庫(kù),落哪些信息就足夠二階段進(jìn)行,怎樣通過(guò)數(shù)據(jù)庫(kù)中的字符串字段找到對(duì)應(yīng)的二階段服務(wù),發(fā)起二階段調(diào)用。

          更重要的要知道服務(wù)器宕機(jī)時(shí)候事務(wù)怎樣恢復(fù),網(wǎng)絡(luò)延遲抖動(dòng)的時(shí)候,怎樣防止資源懸掛,怎樣冪等防重發(fā)。要把這些能清晰的講出來(lái),能把具體的對(duì)應(yīng)方法講清楚,即使有些地方?jīng)]做過(guò),只要能講清楚,應(yīng)該也是可以的。


          當(dāng)然,不是自己做的東西其實(shí)也可以講,不過(guò)要能基本理解其原理,比如阿里這邊的單元化部署,同城和異地容災(zāi),流水?dāng)?shù)據(jù)庫(kù)和狀態(tài)型數(shù)據(jù)庫(kù)各自的failover方案演進(jìn),只要能講明白,起碼證明在這方面我們有一定的積累和關(guān)注,同時(shí)也是對(duì)服務(wù)穩(wěn)定性和高可用的理論經(jīng)驗(yàn)吧。

          不太熟的東西最好不要提了,如果正好遇到一個(gè)對(duì)這個(gè)東西特別熟的兄弟,那就會(huì)死的很慘了。用的啥數(shù)據(jù)庫(kù)?OB。哦?那OB怎么部署的,用什么方法兼顧其高可用和性能,強(qiáng)一致性策略。因?yàn)榱私獾牟簧?,所以被?wèn)了一臉。你說(shuō)我說(shuō)用的是mysql不挺好么,不過(guò)可能也會(huì)被呲:“胡說(shuō),你們肯定用的都是ob,來(lái)  給我說(shuō)說(shuō)ob吧!”



          • 關(guān)于框架和中間件

          這部分其實(shí)是比較能體現(xiàn)我們技術(shù)深度和廣度的。因?yàn)檫@些東西基本都是現(xiàn)成的,而且是平常開(kāi)發(fā)用不到的,RPC,消息隊(duì)列,ZK,Redis 等等等等等。。。
          這塊我其實(shí)還是欠缺不少的,只能大概的應(yīng)付應(yīng)付。其實(shí)說(shuō)平常業(yè)務(wù)需求忙、用的都是公司定制化的中間件都是借口吧。時(shí)間像海綿,擠擠總是有的。。。 

          革命尚未成功,同志仍需努力,共勉共勉~  

          (如果感覺(jué)某些觀點(diǎn)對(duì)您有幫助,也可以分享給朋友,畢竟大家好才是真的好 ^_^ )
             

          -END-


          PS:歡迎在留言區(qū)留下你的觀點(diǎn),一起討論提高。如果今天的文章讓你有新的啟發(fā),歡迎轉(zhuǎn)發(fā)分享給更多人。

          Java后端編程交流群已成立

          公眾號(hào)運(yùn)營(yíng)至今,離不開(kāi)小伙伴們的支持。為了給小伙伴們提供一個(gè)互相交流的平臺(tái),特地開(kāi)通了官方交流群。掃描下方二維碼備注 進(jìn)群 或者關(guān)注公眾號(hào) Java后端編程 后獲取進(jìn)群通道。

              

          —————END—————

              
          推薦閱讀:


               
                 
          最近面試BAT,整理一份面試資料Java面試BAT通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。
          獲取方式:關(guān)注公眾號(hào)并回復(fù) java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
          明天見(jiàn)(??ω??)??
          瀏覽 54
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99只有精品 | 操逼操逼操逼操逼操 | 国产乱人乱偷精品视频 | 久久婷婷五月丁香 | 黄色片网站免费在线观看 |