注:本文首發(fā)于今日頭條“碼農(nóng)那些事”。
作為一名合格的碼農(nóng)寸士,不能一直沉浸在忙碌的工作中檐什,除了不斷提高自己的技術(shù)水平之外,也需要定期出去參加一些面試弱卡。既可以了解下自己的技術(shù)能力到底是個(gè)什么水平了乃正,也能對當(dāng)前市場的薪水價(jià)位做到心中有數(shù)。
本人前段時(shí)間投了幾家公司婶博,其中包括唯品會烫葬,因?yàn)橥兜氖荍ava開發(fā),因此會有一些比較偏Java方面的問題凡蜻。由于是社招崗位搭综,價(jià)位一般就是看能力了,基本上只要能夠通過本次面試划栓,月薪2萬是少不了的兑巾。本頭條號會不定期分享程序員的面試經(jīng)驗(yàn),以及程序員需要掌握的技術(shù)干貨忠荞,喜歡就關(guān)注我吧~
面試總共半小時(shí)蒋歌,但問了不少問題,記錄如下委煤。
首先是自我介紹堂油,然后面試官根據(jù)我簡歷中寫的項(xiàng)目挑了一個(gè)讓我大概說一下。關(guān)于項(xiàng)目這塊碧绞,其實(shí)都是有套路的府框,你只需要準(zhǔn)備好三個(gè)方面:項(xiàng)目背景是什么,其中的難點(diǎn)是什么讥邻,怎么解決這個(gè)難點(diǎn)的迫靖。
然后就開始面各種技術(shù)問題。
synchronize關(guān)鍵字的作用是什么兴使?
答:簡單的說系宜,作用是為了進(jìn)行線程間的同步。每個(gè)用synchronized關(guān)鍵字聲明的方法都是臨界區(qū)发魄。在Java中盹牧,同一個(gè)對象的臨界區(qū),在同一時(shí)間只允許一個(gè)線程訪問。
被synchronize修飾的哪些方法之間會被同步汰寓?
答:同一個(gè)對象的非static的synchronized方法之間吆寨、static的synchronized方法之間會進(jìn)行同步;
同一個(gè)對象的static的synchronized方法和非static的synchronized方法之間是否會被同步,為什么踩寇?
答:不會啄清。因?yàn)樗鼈儷@取的不是同一個(gè)監(jiān)視器,一個(gè)是類的對象俺孙,一個(gè)是類.class辣卒。
valotile關(guān)鍵字的作用是什么?什么情況下會使用這個(gè)關(guān)鍵字睛榄?
答:簡單的說荣茫,作用是保證變量的可見性。保證一個(gè)線程對一個(gè)volatile變量的讀场靴,總是能看到(任意線程)對這個(gè)volatile變量最后的寫入啡莉。在多線程環(huán)境下,為了確保不同線程之間對共享變量的可見性時(shí)使用旨剥。
ArrayList是不是線程安全的咧欣?
答:不是。
那和它功能類似的線程安全版本是什么轨帜?它的實(shí)現(xiàn)原理是什么魄咕,為什么能做到線程安全?
答:CopyOnWriteArrayList蚌父。
ConcurrentHash在JDK 1.7和JDK 1.8中的實(shí)現(xiàn)有什么區(qū)別
異步和回調(diào)的概念
reactor和proactor模式的區(qū)別是什么哮兰?
NIO2的底層實(shí)現(xiàn),Channel的作用
Thrift框架了解嗎苟弛,說下RPC框架大概的實(shí)現(xiàn)原理
dubbo了解嗎喝滞,注冊中心如何實(shí)現(xiàn)?
工作中使用過哪些常用的開源類庫
由于投的是大數(shù)據(jù)相關(guān)的一個(gè)部門膏秫,因此也問了一些別的如:
redis集群怎么做分片的
一致性hash的原理右遭,虛擬節(jié)點(diǎn)作用
kafka了解嗎
hive執(zhí)行流程
hive優(yōu)化相關(guān)
總體來說,涉及的面還是很廣泛的荔睹,難度不小狸演。 如果你回答不了這些問題言蛇,也不要灰心僻他,畢竟是月薪2萬的崗位,不是那么容易就能成功的腊尚。
本頭條號會不定期分享程序員的面試經(jīng)驗(yàn)吨拗,以及程序員需要掌握的技術(shù)干貨,喜歡就關(guān)注我吧~
完。