2020年JAVA互聯網各大BATJ大廠(網易、華爲、騰訊、阿里)筆經面經

前言

  今年由於疫情影響,相信有着不少的程序員又踏上了找工作的路上,預習一些網上的面經這些的,網上資源各種參差不齊的都有,看什麼東西都是看着看着就很浮躁,開始瘋狂抖腿,沉迷幻想,以爲找工作只看少量面經重點即可。
  四五月份春招的時候參加了阿里和網易的實習招聘提前感受面試,慘敗。可以說是一塌糊塗。當頭一棒,腦子清醒了,既然想要從事互聯網行業,早學晚學還是要學,不如現在踏踏實實好好學,一生受用(室友的面試官對她說的原話,感覺很有道理)。開始分階段制定學習計劃,每碰到一個知識點就來牛客查相關面經問題,逐個攻破。
總共投了三十多家公司,大小公司都有,想給自己多幾個機會,到提前批結束爲止只有十家左右有回覆。目前收到阿里盒馬、騰訊在線教育、網易嚴選、頭條抖音、華爲Cloud BU這幾個意向offer。
易緊張體質,一緊張就腸道蠕動汗如雨下,題目答得歪七歪八了,編程題也做不出來了,但面試面多一些緊張感就好一些,不考慮結果,只思考問題,就會好很多了。
能夠拿到offer得益於牛客上大家的面經分享和在線編程練習,是時候回報牛客啦,當然是恭喜各位收到offer的小夥伴們,但是暫時沒收到offer的小夥伴們也不用着急,沉下心來好好學習,offer總會有的。
分享一句雞湯:越努力越幸運

阿里巴巴(盒馬,收到意向書)

​ 全程電話面試。
故意比其他公司晚投大半個月,卻是收到的第二個面試。

​ 一面(約一個半小時)

  1. ​ 自我介紹
  2. ​ 印象最深的項目?承擔職責?學到了什麼,技術、業務都可以說?項目裏的blabla是怎麼實現的,用到了什麼技術?項目分工?項目工程數量?項目分區和分層?
  3. ​ Servlet規範瞭解嗎?Servlet的整個業務流程?session和cookie的區別?session怎麼變成cookie,怎麼變回session?誰來實現整個流程?
  4. ​ 項目提到的SSM框架裏面瞭解哪些?Spring IoC中Bean的生命週期?誰來管理Bean的生命週期?BeanFactory和ApplicationContext的關係?@Autowired和@Resource的區別? Spring的自動掃描怎麼實現的?誰實現的?
  5. ​ MyBatis介紹一下?你說到這是一個持久層框架,那你瞭解JPA規範嗎?(不知道)
  6. ​ UML瞭解嗎?(不會)設計模式?
  7. ​ Zookeeper瞭解嗎?(不會)
  8. ​ 剛纔提到的分佈式實現多個應用的Session共享問題?
  9. ​ 數據結構瞭解嗎?鏈表結構說一下?
  10. ​ 算法瞭解嗎,比方說紅黑樹、二叉樹的算法?
  11. ​ 學了這麼久的Java,你的技術棧規劃是怎麼樣的?

​ 二面(部門主管面,約二十分鐘)

  1. ​ 你是專業的,你知道你報的是Java應用開發工程師嗎?你平常是怎麼學Java的?
  2. ​ 面向對象有了解嗎?三個特性?
  3. ​ 設計模式有了解嗎?單例模式、工廠模式、模式……單例模式有什麼需要注意的嗎?(多線程併發問題:synchronized+volatile)你寫單例的時候如果這個單例對象有字段值,你會去改變這些字段值嗎?爲什麼呢?
  4. ​ 平常用到全局變量嗎?爲什麼不用呢?
  5. ​ 平常會做單元測試嗎?
  6. ​ 。。。

​ HR面(約二十分鐘)

  1. ​ 自我介紹
  2. ​ 你們專業和軟件開發是不是不太相關?爲什麼報這個崗位?
  3. ​ 你平常有做商業項目嗎?還是都是實驗室的項目?有沒有實習?
  4. ​ 你感覺大學期間最有成就感的事情是什麼?
  5. ​ 你有遇到過什麼特別大的挫折嗎?
  6. ​ 你父母對你有什麼期望嗎?
  7. ​ 你未來的職業規劃是如何?
  8. ​ 你喜歡什麼樣的工作?
  9. ​ 加班壓力能承受嗎?
  10. ​ 未來的職業規劃?

網易(郵件,收到意向書)

​ 公司現場面試。
蜜汁面試,一面比一面短。

​ 一面(約三十分鐘)

  1. ​ 自我介紹
  2. ​ 項目是否碰到特殊網絡環境?
  3. ​ ArrayList和LinkedList區別?
  4. ​ ArrayList和LinkedList是線程安全的嗎?爲什麼說他們不是線程安全的,舉實際場景?
  5. ​ 有什麼線程安全的List?(CopyOnWriteArrayList)講一下怎麼實現線程安全的?(讀時複製,寫時共享,加鎖機制)
  6. ​ 線程A和線程B同時針對一個共享變量進行操作,如何實現線程安全?
  7. ​ 平常怎麼創建線程?線程池裏閒置線程怎麼保活?(不清楚,說了自己的想法)那怎麼喚醒?如果用wait()和notify(),對誰加鎖?
  8. ​ 給一個數據庫表,ID、score兩個字段分別代表學生ID和成績,寫SQL語句求ID=?的學生排第幾名?
  9. ​ 假設是InnoDB,給上述SQL語句加索引怎麼加?爲什麼這樣建立?聚集索引和非聚集索引有什麼區別?

​ 二面(約二十分鐘)

  1. ​ 自我介紹
  2. ​ 介紹一下覺得做得最好的項目?畫一下項目的框架結構圖?Nginx用來做什麼?採用了什麼負載均衡策略?萬一某一個服務器掛掉怎麼辦?(一致性hash)如果添加一個節點呢?
  3. ​ Spring中Bean生命週期?提到的Aware相關接口指的是什麼?平常會自己會用Aware相關接口嗎?Bean生命週期這麼長是爲什麼?
  4. ​ JVM內存模型?如果給一個類,裏面只有一個main方法,方法裏面只有一句System.out.println(“helloworld”),問運行這個類會在Java內存模型裏發生什麼? “helloworld”存儲在哪裏?
  5. ​ MySQL數據庫,給一個用戶表格,ID、用戶名、性別、用戶信息…,假設經常對性別字段進行查詢,問怎麼建立索引?爲什麼?假設用戶名需要是唯一的,問怎麼建索引?

​ HR面(十七分鐘)

  1. ​ 自我介紹
  2. ​ 介紹一下自己的專業?爲什麼找IT開發工作?
  3. ​ 介紹一下最有成就感的項目?爲什麼覺得這個項目最有成就感?
  4. ​ 爲什麼報了這個部門?
  5. ​ 你覺得自己有什麼優勢,能給這個部門帶來什麼?
  6. ​ 講自己的三個優點?
  7. ​ 說一下自己的不足?
  8. ​ 。。。

今日頭條(抖音,收到意向書)

​ 牛客網視頻平臺面試,算法題在線編程一下午走完三面流程。
不涉及部門面試,面試官說三輪面試都是統招的。

​ 一面(約五十分鐘)

  1. ​ 自我介紹,主要講講做了什麼和擅長什麼
  2. ​ 看你項目做Spring比較多,問一下Spring相關的東西,IoC是什麼概念?
  3. ​ Bean的默認作用範圍是什麼?其他的作用範圍?
  4. ​ 索引是什麼概念有什麼作用?MySQL裏主要有哪些索引結構?哈希索引和B+樹索引比較?
  5. ​ 平常用線程主要是怎麼寫的,會用一些線程框架嗎?(沒有用框架)Java線程池的概念?線程池有哪些?線程池工廠有哪些線程池類型,及其線程池參數是什麼?
  6. ​ ConcurrentHashMap講一講?
  7. ​ Java GC機制?GC Roots有哪些?
  8. ​ Java bin包下面的工具用過哪些?
  9. ​ 算法題:紅藍兩種球,總共N個, N>2, 排列組合,連續3個顏色一樣是非法的,求合法的排列數量

​ 二面(約五十分鐘)

  1. ​ 自我介紹
  2. ​ 項目詢問:問了簡歷上寫得最早的項目的情況,項目QPS?數據來源和傳輸形式?
  3. ​ 發起一個HTTP請求的過程?剛纔提到DNS,DNS用的什麼傳輸層協議?爲什麼說用的是TCP協議?(我說其實我不清楚是用的什麼協議)他說那讓你設計的話用什麼協議比較合適?(思考了一下,說覺得UDP比較合適,比較輕量不佔用服務器帶寬,查了一下TCP和UDP都有,用在不同情境下)
  4. ​ TCP協議的三次握手和四次揮手過程?
  5. ​ 同步IO和異步IO的區別?
  6. ​ 操作系統的blablabla?(懵)算了,直接問你好了,select和epoll?
  7. ​ 線程如何實現同步?
  8. ​ MySQL瞭解到什麼程度?binLog知道嗎?
  9. ​ 描述一下堆排的過程?建堆的時間複雜度?最大堆中求前k個最大值的時間複雜度?
  10. ​ 算法題:海島面積計算題,給一個矩陣,0表示海水,相連的1表示海島,上下左右表示相連。
    00011
    11011
    10001
    (1)求最大海島面積。
    (2)求最大海島面積和對應海島的所有座標。
    (3)求所有海島的所有座標,按海島分。
    每小題講思路,最後寫第二題。

​ 三面(綜合面,約五十分鐘)

  1. ​ 自我介紹。
  2. ​ ConcurrentHashMap 在Java7和Java8中的區別?爲什麼Java8併發效率更好?什麼情況下用HashMap,什麼情況用ConcurrentHashMap?
  3. ​ 加鎖有什麼機制?
  4. ​ ThreadLocal?應用場景?
  5. ​ Web容器用的什麼?你項目裏涉及了SSM框架,一個請求到Tomcat容器了,怎麼到SSM代碼中去?
  6. ​ 網絡協議瞭解嗎?
  7. ​ **項目介紹一下是做什麼的?講一講學到什麼東西?
  8. ​ 平常怎麼學習?
  9. ​ 大學到現在遇到的最大困難是什麼?怎麼克服?事情太多的時候會有壓力嗎?
  10. ​ 未來的規劃?
  11. ​ 目前有offer嗎?
  12. ​ 設計一個系統:用來促成交易,有多種商品,有購買方和賣出方,促成買家價格大於等於賣出價格的交易。

騰訊(在線教育,面試通過,這兩天兩次錯過電話,HR還會再給我打嗎QAQ)

​ 電話面+QQ遠程桌面做題。

​ 一面(電話面,約一小時十分鐘)

  1. ​ 自我介紹
  2. ​ 覺得自己做得最好的項目?項目技術架構?
  3. ​ HashMap有了解嗎?HashMap的時間複雜度?HashMap中Hash衝突是怎麼解決的?鏈表的上一級結構是什麼?Java8中的HashMap有什麼變化?紅黑樹需要比較大小才能進行插入,是依據什麼進行比較的?其他Hash衝突解決方式?
  4. ​ 實現線程安全的方式?ThreadLocal原理?線程池瞭解嗎說說看?自己用線程池怎麼定參數?
  5. ​ Java堆中怎麼分區?怎麼判斷對象是否需要回收?Java內存佔用過大怎麼查看?Java內存溢出有碰到過嗎?Java內存溢出怎麼定位?
  6. ​ HTTP常見錯誤碼?TCP三次握手?
  7. ​ 進程和線程的區別?平常的開發環境是Windows還是Linux?Linux命令知道哪些?要在多個文本文件中找一個關鍵詞用什麼命令?(grep)網絡相關的命令是什麼?
  8. ​ MySQL數據庫引擎?應用場景?查詢優化?NoSQL有用或瞭解嗎?
  9. ​ 排序算法瞭解哪些?Java裏內置的是用什麼排序方法?快排是穩定的嗎?快排排對象的時候有什麼問題?(提示我,三個字段,第一個字段和第二個字段做hash,第三個不做,還是不太懂)
  10. ​ 十億個IP,獲得訪問次數最多的十個。
  11. ​ 五個單詞,在一個長文本中查找是否存在。
  12. ​ Github有用嗎?平常有看一些博客和書籍嗎?平常有用腳本語言做一些方便自己的事情嗎?

​ 二面(QQ遠程桌面做題)

​ 算法題:

  1. ​ 快速排序算法
  2. ​ 實現一個lru ***

​ 智力題:

  1. ​ 一個五升桶,一個三升桶,怎麼倒出四升水,水可以無限量使用
  2. ​ 從4億qq號碼中,統計出出現次數top 10的號碼

​ 三面(電話面,約一小時)

​ 晚上十點鐘的電話,面試官聲音透露着疲憊。

  1. ​ 目前有哪些Offer?地域傾向?怎麼選擇?
  2. ​ 滴滴派發訂單功能設計?
  3. ​ 有聲小說音頻自動匹配字幕情景題,有大量的音頻文件,非人力能夠做到,語音識別匹配生成字幕文件,字幕文件中語音和字幕的時間需一致,如何設計?
  4. ​ Linux裏查看CPU佔用的命令?怎麼看CPU佔用?
  5. ​ 。。。

​ 四面(電話面,約一小時)

  1. ​ 場景設計題:英雄聯盟H5小遊戲排名,實時動態更新,如何實現?
  2. ​ 場景設計題:杭州G20形象工程需要擦窗子,估計杭州擦窗子要多少費用?
  3. ​ Java虛擬機相關問題

​ HR面

​ 常規問題。

華爲(Cloud BU,收到offer call)

​ 酒店現場面試。

​ 一面(業務面,約半小時)

​ 項目從後開始問,越早的項目問越多。

  1. ​ 自我介紹
  2. ​ 數據量多大?項目PG(PostgreSQL)版本?非結構化數據指的是什麼?有沒有考慮過nosql?分庫分表怎麼分?查詢的表會合併在一起嗎?
  3. ​ 項目性能有沒有考慮過?(我是做服務端的,主要考慮請求併發量)數據庫性能呢?(瞭解一點,MySQL主從結構)
  4. ​ 請求到SSH框架的流程圖畫一下?遠程調用Shell腳本用到哪些命令?
  5. ​ Nginx原理了解嗎?(只用到負載均衡,介紹了一下負載均衡策略)

​ 二面(綜合面,約半小時)

  1. ​ **項目介紹一下?用到了Nginx,用的七層還是四層Nginx? HTTP還是TCP?負載均衡策略用的是什麼?
  2. ​ 項目負責主要做了哪些事情?學到了什麼東西?項目幾個人?怎麼樣分工?
  3. ​ 業餘活動?日常時間安排?
  4. ​ 爲什麼參加學生工作?學生工作帶給你最大的收穫是什麼?
  5. ​ 華爲有什麼吸引你的地方?
  6. ​ 爲什麼報**?

CVTE(HR面掛)

​ 一面(電話面)

  1. ​ 自我介紹
  2. ​ Spring Cloud用到什麼東西?如何實現負載均衡?服務掛了註冊中心怎麼判斷?
  3. ​ Spring的優點?Spring AOP實現原理?AOP應用場景?攔截器用來做什麼業務?
  4. ​ MySQL數據庫引擎和應用場景?
  5. ​ MySQL行鎖是否會有死鎖的情況?
  6. ​ MySQL事務隔離級別?
  7. ​ MySQL平常有索引優化嗎?怎麼去知道一個SQL語句需不需要優化?一個表,建立了索引(B,A),問where A=1 and B=2索引是否能夠生效?
  8. ​ Java爲什麼說是面向對象的?
  9. ​ Java的三大特性?如果說有兩個方法,同名同參數但不同返回值,問是重載嗎?
  10. ​ 平常用到哪些集合類?ArrayList和LinkedList區別?HashMap內部數據結構?ConcurrentHashMap分段鎖?
  11. ​ Volatile關鍵詞?是線程安全的嗎?
  12. ​ 如何實現synchronized一樣的效果?

​ 二面(視頻面,面試二十五分鐘)

  1. ​ 自我介紹?
  2. ​ 你是專業的爲什麼來面Java後端?
  3. ​ 印象最深的項目?爲什麼印象深?
  4. ​ Nginx負載均衡策略?
  5. ​ ip_hash的優缺點?
  6. ​ Nginx和其他負載均衡框架對比過嗎?
  7. ​ Tomcat集羣Session共享問題?
  8. ​ MySQL採用了什麼存儲引擎,爲什麼?
  9. ​ 樂觀鎖和悲觀鎖瞭解嗎?JDK中涉及到樂觀鎖和悲觀鎖的內容?
  10. ​ 分佈式鎖?
  11. ​ SQL題
    t_subject
    ——————————
    c_id
    c_student_uid 學生uid
    c_teacher_uid 教師uid
    c_subject_uid 科目uid
    c_score 分數
    平均分排名前三的學生uid和平均分數
    給這個SQL語句建索引怎麼建?
  12. ​ 算法題
    輸入一個字符串String str,求重複次數最多的字符的第一個索引值
    例如
    輸入:"aabcbcbc"
    輸出:2(b和c都出現了3次,但b在c前面)

​ HR面(視頻面,掛)
CVTE的HR面題目大家都一樣,未記錄。

網易遊戲(服務器端開發工程師-工具開發類,一面掛)

​ 公司現場面試。
早上八點打車去濱江,巨緊張 QAQ 腸道一直蠕動,傻乎乎答錯了好幾個問題。

​ 一面(掛)
9:40左右HR小姐姐讓我開始手寫編程題,說做半小時。
兩個面試官,約11:10左右結束面試。
編程題

  1. ​ 判斷樹對稱
  2. ​ 數組順時針旋轉90度
  3. ​ 用wait和notify模擬生產者消費者模式

​ 面試

  1. ​ 自我介紹
  2. ​ 項目問題
  3. ​ 編程題:每題講解一下思路?第一題判斷樹對稱不用遞歸用棧怎麼做?(卡住了)第三題沒做完再寫一下?多個生產者和消費者的情況下,你這個代碼怎麼修改?
  4. ​ public protected private區別?final和finally區別?final可以用在方法參數上嗎?RuntimeException和非RuntimeException?各舉幾個例子?比方說文件讀寫的時候會有什麼異常?怎麼實現序列化?除了Java原生序列化方法,序列化還有什麼格式?
  5. ​ JVM內存模型?每個區是做什麼的?垃圾回收機制?
  6. ​ synchronized 和 ReentranLock的區別?平常有用哪些集合類?Concurrent包有用嗎?
  7. ​ 添加索引的SQL語句?給一個abc三個字段的索引,where a=0 order by c能用到索引嗎?where a=0 and b大於0 order by c能用到索引嗎?Hash索引和B樹索引的區別?Hash索引有區間查詢嗎?有沒有用nosql?
  8. ​ 平常用到哪些設計模式?介紹一下模式?模式和裝飾器模式區別?
  9. ​ NIO和BIO區別?NIO怎麼寫?阻塞和非阻塞,同步和異步區別?
  10. ​ 平常用到的框架和庫?有沒有用到網絡框架?Spring Cloud?中間件用到嗎?
    電話+網頁寫代碼,全程一個多小時

拼多多(一面通過,未繼續後續面試)

​ 約好現場面試時間和網易筆試時間衝突了 QAQ
聯繫人美心善的HR小姐姐幫我改成了線上面試,電話+網頁寫代碼。
線上面試的原因,流程很緩慢,二面在前幾天才聯繫我,想了想決定不參加了。

​ 一面

  1. ​ 項目介紹
  2. ​ 項目問題
  3. ​ HTTP協議是什麼?HTTP格式?GET請求和POST請求的區別?
  4. ​ TCP協議?TCP三次握手?TCP三次握手過程中什麼階段容易被攻擊?DDos攻擊?
  5. ​ Java垃圾回收機制講一下?
  6. ​ Linux有4G的物理內存,問開一個Java進程可以給8G內存嗎?物理地址和虛擬地址的區別?
  7. ​ 有一個Safer對象,用來管理對象,調用裏面的方法,不是線程安全的,怎麼處理?(同步、樂觀鎖)同步併發量不行,樂觀鎖對多個對象字段的情況不行,除同步和樂觀鎖之外的方法?(ThreadLocal)
  8. ​ 編程題(給20分鐘):輸入一個數組和一個整數,數組的長度、數組元素的範圍、整數的範圍都是1~20000,求數組中的某幾項加起來等於整數的可能性組合數?
    四個注意點:數組未排序、可能有相同數、多個數相加也可以不侷限於兩項相加、情況總數。
    例如輸入:10 5 3 7 5和15
    先描述一下思路,然後寫。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章