京東後端Java高級架構師面經-面試題Spring丶多線程丶NIO丶MySQL

引言

之前面了騰訊的提前批,不過沒走流程。同期還面了阿里的兩輪面試,被告知不走流程就不能面了,所以也沒面完。

後來走了京東這邊的流程。前幾天剛剛面完HR。

正好今天分享一下面經,大家可以多交流交流哈。

京東面經

  • 第一輪:電話初面
  • 第二輪:技術面談
  • 第三輪:高管複試
  • 第四輪:HR最後確認

第一輪電話初面:

首先確認對京東的意向度(如果異地更會考慮對工作地點(北京)的意向度!京東很看重這個);其次面試官一般會針對您所做過的項目來做具體技術的交流,會比較關注個人對項目細節是不是掌握到位,主要考察Java的技術基礎和原理,比如Spring框架以及數據庫和JVM三個方面,也會交流到分佈式、線程池的實現等等,重點考察是不是有比較鑽研技術和技術上的亮點【不一定每個面都很厲害但一定要有亮點】;

第二輪技術面試:

  1. Java中的多線程瞭解麼,線程池的增長策略和拒絕策略瞭解麼,說一下。
  2. 講一下線程增加的過程和拒絕策略的執行。
  3. 講了一下fixthreadpool的增長策略,然後幾種拒絕策略。
  4. 高併發情況下,如何使用線程池,用哪個,問了一下線程結束要多久,是否在下一個線程結束前完成(我想的是cachethreadpool,其實思路錯了)。
  5. 表示併發量比較大,所以我說可以考慮併發量是否大於隊列長度加上最大線程數量和,如果不超過的話可以是用fixthreadpool。
  6. 併發juc瞭解麼,有哪些線程安全的list。說了個copyonwritelist,想了半天說不出第二個了。尷尬,那就vector把,不是juc裏的。

貌似併發包裏確實沒有其他list啊。

還問了concurrenthashmap1.8的改動。

  1. HTTP協議瞭解麼,和tcp有什麼區別。
  2. http1.0和2.0的區別。

答了TCP連接複用,加入ssl,以及壓縮請求頭。

其中哪個更新比較有意義,爲什麼。我說的是壓縮請求頭,這樣可以優化HTTP服務的性能。

  1. Java的網絡編程,比如NIO和Socket瞭解麼。說下BIO和NIO的區別把。

說下BIO和NIO的區別把。

我說了BIO的阻塞用法,以及NIO的IO多路複用用法,說了selector,seletedkey,channel等類的使用流程,以及單線程處理連接,多線程處理IO請求的好處。

  1. 說一下NIO的類庫或框架

講了netty,寫過服務端和客戶端的demo,沒有在生產中實踐。

channelhandler負責請求就緒時的io響應。

bytebuf支持零拷貝,通過邏輯buff合併實際buff。

eventloop線程組負責實現線程池,任務隊列裏就是io請求任務,類似線程池調度執行。

acceptor接收線程負責接收tcp請求,並且註冊任務到隊列裏。

  1. 倒排索引瞭解麼,我說不了解。

其實就是搜索引擎的基礎索引,根據關鍵字到文檔的映射關係建立索引,中文關鍵字可以使用中文分詞,查詢時通過關鍵字來定位索引,並且進行排序後得到文檔結果集。

然後面試官說講一下數據庫把,說下sql優化的方式

我說的是MySQL,先講了一下sql使用索引的優化,然後基於索引說了幾條優化方案。

  1. 索引什麼時候會失效變成全表掃描

說了聯合索引的前綴匹配,跳躍索引,聚合函數,判空和<>這些情況。

  1. 分佈式的paxos和raft算法瞭解麼

瞭解過,但是講不清楚。

paxos:多個proposer發請提議(每個提議有id+value),acceptor接受最新id的提議並把之前保留的提議返回。當超過半數的accetor返回某個提議時,此時要求value修改爲propeser歷史上最大值,propeser認爲可以接受該提議,於是廣播給每個acceptor,acceptor發現該提議和自己保存的一致,於是接受該提議並且learner同步該提議。

raft:raft要求每個節點有一個選主的時間間隔,每過一個時間間隔向master發送心跳包,當心跳失敗,該節點重新發起選主,當過半節點響應時則該節點當選主機,廣播狀態,然後以後繼續下一輪選主。

  1. 中間件知道哪些,阿里的dubbo,rocketmq的事務消息,問了TCC回答說這個之前沒看明白。

說了mycat實現分表分庫,消息隊列kafka和rabbitmq等。

  1. 平時看什麼書,怎麼學習的。還跟我說他們部門3個華科的,校友多多。
  2. Spring和Springmvc講一下。講了Spring的ioc和aop,Springmvc的基本架構,請求流程。

第三輪高管複試

  1. 自我介紹
  2. 項目,收穫
  3. Linux瞭解哪些,基礎命令和知識。問我proc文件系統瞭解麼,答不瞭解。
  4. TCP和UDP的核心區別在哪,講了滑動窗口保證可靠有序傳輸,UDP不可靠。TCP需要連接而UDP不需要。
  5. TCP的四次揮手,time wait狀態有什麼意義。
  6. 說完這個他問我有什麼想問他的了。
  7. 我問他爲什麼隔了這麼久才面試,而且之前兩面都只是初試,然後他說最近他在休假,所以就...害我擔心了好久。他說接下來等HR面就行了。

第四輪HR面

  1. 興趣愛好
  2. 三年到五年的職業規劃
  3. 意向公司和城市
  4. 實習經歷和收穫
  5. 實習中最大的困難
  6. 爲什麼換公司,爲什麼拒絕菜鳥實習offer
  7. 你的缺點和優點
  8. 你覺得你比其他人優秀的地方說三個
  9. 爲什麼想來我們部門
  10. 總結

    歡迎關注CSDN:JAVA編程大飛哥

    覺得收穫的話可以點個關注評論轉發一波喔,謝謝大佬們支持!

    微服務、分佈式、高併發、高可用,性能優化丶源碼分析等等一些技術乾貨等着你來探討學習!

    點擊加入,一線互聯網技術等你來學習

    點擊加入領取免費技術資料諮詢問題等。備註:CSDN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章