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

前言

其實收到jd的面試邀請的時候,我真心有點小激動。由於在地理位置上,jd應該是最合適我也是最想去的。可是我在看到方向的時候其實內心有不少的問題,也作好了被拒的準備。程序員

面試過程及感覺

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

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

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

其實在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: 當時的回答: 一、Innodb支持事務 二、Myisam支持表鎖,Innodb支持行鎖 三、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程序員,我這邊準備免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)

爲何某些人會一直比你優秀,是由於他自己就很優秀還一直在持續努力變得更優秀,而你是否是還在知足於現狀心裏在竊喜!但願讀到這的您能點個小贊和關注下我,之後還會更新技術乾貨,謝謝您的支持!

資料領取方式:加入Java技術交流羣963944895點擊加入羣聊,私信管理員便可免費領取

相關文章
相關標籤/搜索