前言
今年由於疫情影響,相信有着不少的程序員又踏上了找工作的路上,預習一些網上的面經這些的,網上資源各種參差不齊的都有,看什麼東西都是看着看着就很浮躁,開始瘋狂抖腿,沉迷幻想,以爲找工作只看少量面經重點即可。
四五月份春招的時候參加了阿里和網易的實習招聘提前感受面試,慘敗。可以說是一塌糊塗。當頭一棒,腦子清醒了,既然想要從事互聯網行業,早學晚學還是要學,不如現在踏踏實實好好學,一生受用(室友的面試官對她說的原話,感覺很有道理)。開始分階段制定學習計劃,每碰到一個知識點就來牛客查相關面經問題,逐個攻破。
總共投了三十多家公司,大小公司都有,想給自己多幾個機會,到提前批結束爲止只有十家左右有回覆。目前收到阿里盒馬、騰訊在線教育、網易嚴選、頭條抖音、華爲Cloud BU這幾個意向offer。
易緊張體質,一緊張就腸道蠕動汗如雨下,題目答得歪七歪八了,編程題也做不出來了,但面試面多一些緊張感就好一些,不考慮結果,只思考問題,就會好很多了。
能夠拿到offer得益於牛客上大家的面經分享和在線編程練習,是時候回報牛客啦,當然是恭喜各位收到offer的小夥伴們,但是暫時沒收到offer的小夥伴們也不用着急,沉下心來好好學習,offer總會有的。
分享一句雞湯:越努力越幸運。
阿里巴巴(盒馬,收到意向書)
全程電話面試。
故意比其他公司晚投大半個月,卻是收到的第二個面試。
一面(約一個半小時)
- 自我介紹
- 印象最深的項目?承擔職責?學到了什麼,技術、業務都可以說?項目裏的blabla是怎麼實現的,用到了什麼技術?項目分工?項目工程數量?項目分區和分層?
- Servlet規範瞭解嗎?Servlet的整個業務流程?session和cookie的區別?session怎麼變成cookie,怎麼變回session?誰來實現整個流程?
- 項目提到的SSM框架裏面瞭解哪些?Spring IoC中Bean的生命週期?誰來管理Bean的生命週期?BeanFactory和ApplicationContext的關係?@Autowired和@Resource的區別? Spring的自動掃描怎麼實現的?誰實現的?
- MyBatis介紹一下?你說到這是一個持久層框架,那你瞭解JPA規範嗎?(不知道)
- UML瞭解嗎?(不會)設計模式?
- Zookeeper瞭解嗎?(不會)
- 剛纔提到的分佈式實現多個應用的Session共享問題?
- 數據結構瞭解嗎?鏈表結構說一下?
- 算法瞭解嗎,比方說紅黑樹、二叉樹的算法?
- 學了這麼久的Java,你的技術棧規劃是怎麼樣的?
二面(部門主管面,約二十分鐘)
- 你是專業的,你知道你報的是Java應用開發工程師嗎?你平常是怎麼學Java的?
- 面向對象有了解嗎?三個特性?
- 設計模式有了解嗎?單例模式、工廠模式、模式……單例模式有什麼需要注意的嗎?(多線程併發問題:synchronized+volatile)你寫單例的時候如果這個單例對象有字段值,你會去改變這些字段值嗎?爲什麼呢?
- 平常用到全局變量嗎?爲什麼不用呢?
- 平常會做單元測試嗎?
- 。。。
HR面(約二十分鐘)
- 自我介紹
- 你們專業和軟件開發是不是不太相關?爲什麼報這個崗位?
- 你平常有做商業項目嗎?還是都是實驗室的項目?有沒有實習?
- 你感覺大學期間最有成就感的事情是什麼?
- 你有遇到過什麼特別大的挫折嗎?
- 你父母對你有什麼期望嗎?
- 你未來的職業規劃是如何?
- 你喜歡什麼樣的工作?
- 加班壓力能承受嗎?
- 未來的職業規劃?
網易(郵件,收到意向書)
公司現場面試。
蜜汁面試,一面比一面短。
一面(約三十分鐘)
- 自我介紹
- 項目是否碰到特殊網絡環境?
- ArrayList和LinkedList區別?
- ArrayList和LinkedList是線程安全的嗎?爲什麼說他們不是線程安全的,舉實際場景?
- 有什麼線程安全的List?(CopyOnWriteArrayList)講一下怎麼實現線程安全的?(讀時複製,寫時共享,加鎖機制)
- 線程A和線程B同時針對一個共享變量進行操作,如何實現線程安全?
- 平常怎麼創建線程?線程池裏閒置線程怎麼保活?(不清楚,說了自己的想法)那怎麼喚醒?如果用wait()和notify(),對誰加鎖?
- 給一個數據庫表,ID、score兩個字段分別代表學生ID和成績,寫SQL語句求ID=?的學生排第幾名?
- 假設是InnoDB,給上述SQL語句加索引怎麼加?爲什麼這樣建立?聚集索引和非聚集索引有什麼區別?
二面(約二十分鐘)
- 自我介紹
- 介紹一下覺得做得最好的項目?畫一下項目的框架結構圖?Nginx用來做什麼?採用了什麼負載均衡策略?萬一某一個服務器掛掉怎麼辦?(一致性hash)如果添加一個節點呢?
- Spring中Bean生命週期?提到的Aware相關接口指的是什麼?平常會自己會用Aware相關接口嗎?Bean生命週期這麼長是爲什麼?
- JVM內存模型?如果給一個類,裏面只有一個main方法,方法裏面只有一句System.out.println(“helloworld”),問運行這個類會在Java內存模型裏發生什麼? “helloworld”存儲在哪裏?
- MySQL數據庫,給一個用戶表格,ID、用戶名、性別、用戶信息…,假設經常對性別字段進行查詢,問怎麼建立索引?爲什麼?假設用戶名需要是唯一的,問怎麼建索引?
HR面(十七分鐘)
- 自我介紹
- 介紹一下自己的專業?爲什麼找IT開發工作?
- 介紹一下最有成就感的項目?爲什麼覺得這個項目最有成就感?
- 爲什麼報了這個部門?
- 你覺得自己有什麼優勢,能給這個部門帶來什麼?
- 講自己的三個優點?
- 說一下自己的不足?
- 。。。
今日頭條(抖音,收到意向書)
牛客網視頻平臺面試,算法題在線編程一下午走完三面流程。
不涉及部門面試,面試官說三輪面試都是統招的。
一面(約五十分鐘)
- 自我介紹,主要講講做了什麼和擅長什麼
- 看你項目做Spring比較多,問一下Spring相關的東西,IoC是什麼概念?
- Bean的默認作用範圍是什麼?其他的作用範圍?
- 索引是什麼概念有什麼作用?MySQL裏主要有哪些索引結構?哈希索引和B+樹索引比較?
- 平常用線程主要是怎麼寫的,會用一些線程框架嗎?(沒有用框架)Java線程池的概念?線程池有哪些?線程池工廠有哪些線程池類型,及其線程池參數是什麼?
- ConcurrentHashMap講一講?
- Java GC機制?GC Roots有哪些?
- Java bin包下面的工具用過哪些?
- 算法題:紅藍兩種球,總共N個, N>2, 排列組合,連續3個顏色一樣是非法的,求合法的排列數量
二面(約五十分鐘)
- 自我介紹
- 項目詢問:問了簡歷上寫得最早的項目的情況,項目QPS?數據來源和傳輸形式?
- 發起一個HTTP請求的過程?剛纔提到DNS,DNS用的什麼傳輸層協議?爲什麼說用的是TCP協議?(我說其實我不清楚是用的什麼協議)他說那讓你設計的話用什麼協議比較合適?(思考了一下,說覺得UDP比較合適,比較輕量不佔用服務器帶寬,查了一下TCP和UDP都有,用在不同情境下)
- TCP協議的三次握手和四次揮手過程?
- 同步IO和異步IO的區別?
- 操作系統的blablabla?(懵)算了,直接問你好了,select和epoll?
- 線程如何實現同步?
- MySQL瞭解到什麼程度?binLog知道嗎?
- 描述一下堆排的過程?建堆的時間複雜度?最大堆中求前k個最大值的時間複雜度?
- 算法題:海島面積計算題,給一個矩陣,0表示海水,相連的1表示海島,上下左右表示相連。
00011
11011
10001
(1)求最大海島面積。
(2)求最大海島面積和對應海島的所有座標。
(3)求所有海島的所有座標,按海島分。
每小題講思路,最後寫第二題。
三面(綜合面,約五十分鐘)
- 自我介紹。
- ConcurrentHashMap 在Java7和Java8中的區別?爲什麼Java8併發效率更好?什麼情況下用HashMap,什麼情況用ConcurrentHashMap?
- 加鎖有什麼機制?
- ThreadLocal?應用場景?
- Web容器用的什麼?你項目裏涉及了SSM框架,一個請求到Tomcat容器了,怎麼到SSM代碼中去?
- 網絡協議瞭解嗎?
- **項目介紹一下是做什麼的?講一講學到什麼東西?
- 平常怎麼學習?
- 大學到現在遇到的最大困難是什麼?怎麼克服?事情太多的時候會有壓力嗎?
- 未來的規劃?
- 目前有offer嗎?
- 設計一個系統:用來促成交易,有多種商品,有購買方和賣出方,促成買家價格大於等於賣出價格的交易。
騰訊(在線教育,面試通過,這兩天兩次錯過電話,HR還會再給我打嗎QAQ)
電話面+QQ遠程桌面做題。
一面(電話面,約一小時十分鐘)
- 自我介紹
- 覺得自己做得最好的項目?項目技術架構?
- HashMap有了解嗎?HashMap的時間複雜度?HashMap中Hash衝突是怎麼解決的?鏈表的上一級結構是什麼?Java8中的HashMap有什麼變化?紅黑樹需要比較大小才能進行插入,是依據什麼進行比較的?其他Hash衝突解決方式?
- 實現線程安全的方式?ThreadLocal原理?線程池瞭解嗎說說看?自己用線程池怎麼定參數?
- Java堆中怎麼分區?怎麼判斷對象是否需要回收?Java內存佔用過大怎麼查看?Java內存溢出有碰到過嗎?Java內存溢出怎麼定位?
- HTTP常見錯誤碼?TCP三次握手?
- 進程和線程的區別?平常的開發環境是Windows還是Linux?Linux命令知道哪些?要在多個文本文件中找一個關鍵詞用什麼命令?(grep)網絡相關的命令是什麼?
- MySQL數據庫引擎?應用場景?查詢優化?NoSQL有用或瞭解嗎?
- 排序算法瞭解哪些?Java裏內置的是用什麼排序方法?快排是穩定的嗎?快排排對象的時候有什麼問題?(提示我,三個字段,第一個字段和第二個字段做hash,第三個不做,還是不太懂)
- 十億個IP,獲得訪問次數最多的十個。
- 五個單詞,在一個長文本中查找是否存在。
- Github有用嗎?平常有看一些博客和書籍嗎?平常有用腳本語言做一些方便自己的事情嗎?
二面(QQ遠程桌面做題)
算法題:
- 快速排序算法
- 實現一個lru ***
智力題:
- 一個五升桶,一個三升桶,怎麼倒出四升水,水可以無限量使用
- 從4億qq號碼中,統計出出現次數top 10的號碼
三面(電話面,約一小時)
晚上十點鐘的電話,面試官聲音透露着疲憊。
- 目前有哪些Offer?地域傾向?怎麼選擇?
- 滴滴派發訂單功能設計?
- 有聲小說音頻自動匹配字幕情景題,有大量的音頻文件,非人力能夠做到,語音識別匹配生成字幕文件,字幕文件中語音和字幕的時間需一致,如何設計?
- Linux裏查看CPU佔用的命令?怎麼看CPU佔用?
- 。。。
四面(電話面,約一小時)
- 場景設計題:英雄聯盟H5小遊戲排名,實時動態更新,如何實現?
- 場景設計題:杭州G20形象工程需要擦窗子,估計杭州擦窗子要多少費用?
- Java虛擬機相關問題
HR面
常規問題。
華爲(Cloud BU,收到offer call)
酒店現場面試。
一面(業務面,約半小時)
項目從後開始問,越早的項目問越多。
- 自我介紹
- 數據量多大?項目PG(PostgreSQL)版本?非結構化數據指的是什麼?有沒有考慮過nosql?分庫分表怎麼分?查詢的表會合併在一起嗎?
- 項目性能有沒有考慮過?(我是做服務端的,主要考慮請求併發量)數據庫性能呢?(瞭解一點,MySQL主從結構)
- 請求到SSH框架的流程圖畫一下?遠程調用Shell腳本用到哪些命令?
- Nginx原理了解嗎?(只用到負載均衡,介紹了一下負載均衡策略)
二面(綜合面,約半小時)
- **項目介紹一下?用到了Nginx,用的七層還是四層Nginx? HTTP還是TCP?負載均衡策略用的是什麼?
- 項目負責主要做了哪些事情?學到了什麼東西?項目幾個人?怎麼樣分工?
- 業餘活動?日常時間安排?
- 爲什麼參加學生工作?學生工作帶給你最大的收穫是什麼?
- 華爲有什麼吸引你的地方?
- 爲什麼報**?
CVTE(HR面掛)
一面(電話面)
- 自我介紹
- Spring Cloud用到什麼東西?如何實現負載均衡?服務掛了註冊中心怎麼判斷?
- Spring的優點?Spring AOP實現原理?AOP應用場景?攔截器用來做什麼業務?
- MySQL數據庫引擎和應用場景?
- MySQL行鎖是否會有死鎖的情況?
- MySQL事務隔離級別?
- MySQL平常有索引優化嗎?怎麼去知道一個SQL語句需不需要優化?一個表,建立了索引(B,A),問where A=1 and B=2索引是否能夠生效?
- Java爲什麼說是面向對象的?
- Java的三大特性?如果說有兩個方法,同名同參數但不同返回值,問是重載嗎?
- 平常用到哪些集合類?ArrayList和LinkedList區別?HashMap內部數據結構?ConcurrentHashMap分段鎖?
- Volatile關鍵詞?是線程安全的嗎?
- 如何實現synchronized一樣的效果?
二面(視頻面,面試二十五分鐘)
- 自我介紹?
- 你是專業的爲什麼來面Java後端?
- 印象最深的項目?爲什麼印象深?
- Nginx負載均衡策略?
- ip_hash的優缺點?
- Nginx和其他負載均衡框架對比過嗎?
- Tomcat集羣Session共享問題?
- MySQL採用了什麼存儲引擎,爲什麼?
- 樂觀鎖和悲觀鎖瞭解嗎?JDK中涉及到樂觀鎖和悲觀鎖的內容?
- 分佈式鎖?
- SQL題
t_subject
——————————
c_id
c_student_uid 學生uid
c_teacher_uid 教師uid
c_subject_uid 科目uid
c_score 分數
平均分排名前三的學生uid和平均分數
給這個SQL語句建索引怎麼建? - 算法題
輸入一個字符串String str,求重複次數最多的字符的第一個索引值
例如
輸入:"aabcbcbc"
輸出:2(b和c都出現了3次,但b在c前面)
HR面(視頻面,掛)
CVTE的HR面題目大家都一樣,未記錄。
網易遊戲(服務器端開發工程師-工具開發類,一面掛)
公司現場面試。
早上八點打車去濱江,巨緊張 QAQ 腸道一直蠕動,傻乎乎答錯了好幾個問題。
一面(掛)
9:40左右HR小姐姐讓我開始手寫編程題,說做半小時。
兩個面試官,約11:10左右結束面試。
編程題
- 判斷樹對稱
- 數組順時針旋轉90度
- 用wait和notify模擬生產者消費者模式
面試
- 自我介紹
- 項目問題
- 編程題:每題講解一下思路?第一題判斷樹對稱不用遞歸用棧怎麼做?(卡住了)第三題沒做完再寫一下?多個生產者和消費者的情況下,你這個代碼怎麼修改?
- public protected private區別?final和finally區別?final可以用在方法參數上嗎?RuntimeException和非RuntimeException?各舉幾個例子?比方說文件讀寫的時候會有什麼異常?怎麼實現序列化?除了Java原生序列化方法,序列化還有什麼格式?
- JVM內存模型?每個區是做什麼的?垃圾回收機制?
- synchronized 和 ReentranLock的區別?平常有用哪些集合類?Concurrent包有用嗎?
- 添加索引的SQL語句?給一個abc三個字段的索引,where a=0 order by c能用到索引嗎?where a=0 and b大於0 order by c能用到索引嗎?Hash索引和B樹索引的區別?Hash索引有區間查詢嗎?有沒有用nosql?
- 平常用到哪些設計模式?介紹一下模式?模式和裝飾器模式區別?
- NIO和BIO區別?NIO怎麼寫?阻塞和非阻塞,同步和異步區別?
- 平常用到的框架和庫?有沒有用到網絡框架?Spring Cloud?中間件用到嗎?
電話+網頁寫代碼,全程一個多小時
拼多多(一面通過,未繼續後續面試)
約好現場面試時間和網易筆試時間衝突了 QAQ
聯繫人美心善的HR小姐姐幫我改成了線上面試,電話+網頁寫代碼。
線上面試的原因,流程很緩慢,二面在前幾天才聯繫我,想了想決定不參加了。
一面
- 項目介紹
- 項目問題
- HTTP協議是什麼?HTTP格式?GET請求和POST請求的區別?
- TCP協議?TCP三次握手?TCP三次握手過程中什麼階段容易被攻擊?DDos攻擊?
- Java垃圾回收機制講一下?
- Linux有4G的物理內存,問開一個Java進程可以給8G內存嗎?物理地址和虛擬地址的區別?
- 有一個Safer對象,用來管理對象,調用裏面的方法,不是線程安全的,怎麼處理?(同步、樂觀鎖)同步併發量不行,樂觀鎖對多個對象字段的情況不行,除同步和樂觀鎖之外的方法?(ThreadLocal)
- 編程題(給20分鐘):輸入一個數組和一個整數,數組的長度、數組元素的範圍、整數的範圍都是1~20000,求數組中的某幾項加起來等於整數的可能性組合數?
四個注意點:數組未排序、可能有相同數、多個數相加也可以不侷限於兩項相加、情況總數。
例如輸入:10 5 3 7 5和15
先描述一下思路,然後寫。