2020年JAVA大廠筆經面經

我的簡介

​ Java後臺開發方向。
非計算機專業碩士,專業涉及到一些開發。
實驗室項目主要是Java Web系統,挖掘小亮點。
無實習經驗。git

閒話嘮嗑

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

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

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

一面(約一個半小時)算法

  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,你的技術棧規劃是怎麼樣的?

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

  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
    先描述一下思路,而後寫。

IT交流學習請關注個人github項目:github地址

相關文章
相關標籤/搜索