1. 程式人生 > >面試京東Java架構師,竟然被問這些題,學到了!

面試京東Java架構師,竟然被問這些題,學到了!

使用 代理 代碼 2個 服務 說我 master slaves 說了

前言

其實收到jd的面試邀請的時候,我真心有點小激動。因為在地理位置上,jd應該是最合適我也是最想去的。但是我在看到方向的時候其實心裏有很多的問題,也做好了被拒的準備。

面試過程及感受

因為是開車去,所以到亦莊的時候第一個問題是找車位,但是京東周邊的馬路上是基本不可能找到的了,還看到一個司機因為倒車慢了一點,被另外的小車司機迅速停入,吵吵了半天。最後在一個角落找到一個停車場,需要預約碼才能停,門口沒有任何標誌,還是問了門衛大叔才知道一般外來的都會停在這。(jd也是夠了。。藏得這麽隱蔽。還有馬路邊都貼條)

我是在京東A座面試,先用×××和預約碼換了入門的條,我以為我可以很快的上樓,但是我發現我真的天真了,mmp,你們想想一下12個電梯,在飯點(我預約的是下午兩點)我從1點20開始等等到1點40竟沒有擠上去。(呵呵臉),我面試的是在12樓,一咬牙爬了上去。(爬了10分鐘,一身汗,在廁所平靜了半天,期間廁所大爺跟我一起吐槽了電梯的難坐)

填了表格之後,我給hr×××姐(我發現hr似乎都是×××姐)打了電話,兩分鐘之後,hr×××姐來了給我領到一個位置,我再等面試官的時候又復習了一下我之前的項目,和一些之前面試遇到的問題。

其實在Java上層的開發來說我對自己是有信心的。(天真臉)

不多是第一面是兩個人一起來的(一個姐姐,一個大叔)。基本上都是姐姐在問,問的大多是原理上的問題。(當然我最大的問題我又發現了一個。。就是手寫代碼的能力太差。。。)讓我手寫了單例和一些方式方法。我在這裏承認我自己對於代碼的熟悉程度即使寫了3年還是很差。

不是說對方法的不了解,是說對於具體功能細節上的了解不夠。

而界面上做的工作太多也是問題,對於界面我可以寫很多很多,但是對於底層就基本上沒有什麽了解了。

基本了解和介紹情況後,他們讓我等了一下,另外一個人很好的小哥過來2面。小哥也是基本了解了一下,說了一些,讓我手寫了一個方法。(雖然我能知道怎麽做。。但是真的實現還是需要很紮實很細的代碼思想。。)最後小哥跟我聊了我現在需要了解的,其實三年的經驗對於一個人來說還是太少,可以把表層了解的很多,而接下來需要做的就是深入下去。

他也給我簡單介紹了一下我目前需要學習的主要內容,和可以努力的方向和方法。我覺得這才是這次京東面試的最大收獲。

真題還原

Q1: HashMap的原理, 以及HashMap如何擴充bucket的大小
A1: 原理答上來了,如何擴容瞎答的,之前不知道擴容之後已經哈希的MapEntry如何處理,當時就說擴容後已經哈希的全部再計算並分配到新的桶裏。


Q2: 是否對多線程有了解
A2: 了解的不深,被項目岔開沒繼續問


Q3: 項目中的Queue,單機容量達到上限如何集群擴展
A3: 懵逼,然後參考Hadoop的架構,把Queue分散到不同的slave server中,並用一個”負載均衡服務器” master做反向代理,master存有job到slaves的映射表,接收broswer的Job請求,把Job分派給不同的slave server。


Q4: 知道哪些負載均衡算法
A4: 不知道


Q5: Myisam, Innodb區別
A5: 當時的回答: 1、Innodb支持事務 2、Myisam支持表鎖,Innodb支持行鎖 3、Myisam數據索引一起存儲,Innodb數據索引分開存儲


Q6: Mysql索引的分類(Btree, hash),各自使用什麽情況
A6: 沒答好,當時回答說Mysql只有內存表支持hash索引(似乎並不是),面試官表示沒聽說Mysql內存表


Q7: Btree的查找原理:
A7: 沒答上來,只大概敘述了一下B+tree的結構,每個子節點有一個指針指向兄弟節點。


Q8: Spring的原理(AOP IOC), AOP的原理
A8: AOP實現原理是代理,給他講了一下代理模式,然後嘴賤的說了一句AOP是基於cglib的動態代理實現的。


Q9: cglib是動態代理嗎?簡要敘述cglib的原理
A9: 瞎答:cglib基於ASM字節碼生成框架,在運行時生成代理類的字節碼文件並動態加載


Q10: cglib和jdk代理的區別?Jdk是不是動態代理?動態代理和靜態代理的區別
A10: jdk需要接口,cglib不需要。Jdk是靜態代理,根據反射來實現。動態代理是代碼編譯前代理類不存在,在運行時生成。(面試官說答錯了,cglib是靜態代理,jdk是動態代理,cglib在框架啟動前已經生成好了所有的代理類。感覺他說的也不全對)


Q11:簡述三次握手,如果c端發起握手請求,s端無法立刻建立連接應該回應什麽?
A11: tcp握手畫出來了,第二個問題沒答上來

面試京東Java架構師,竟然被問這些題,學到了!