轉載出處
寫在前面
秋招一路走來很幸運,從最初的迷茫,到接連被否認,跌入低谷,然后慢慢調整心態,有缺憾才能有進步,正視的自己不足,靜下心努力提高,勇敢嘗試各種面試機會,因上努力,果上隨緣,慢慢看到改變,收獲肯定,重拾信心。
校招像一個登山的過程,要一步一個腳印,不能因為某些失敗,就半途而廢,行百里者半九十,念念不忘,必有回響,只要一路堅持下來,就會有所收獲。據身邊所見,大部分一直堅持面試下去的同學,最后都拿到了滿意的offer。
寫在這里,是對自己秋招的一次總結和懷念,也希望給那些和我一樣迷茫過,懷疑過,失落過的人一些幫助和激勵。
如何准備校招
需長期積累
(1)手撕代碼能力
現在大多數大廠的面試基本上都需要手寫代碼!基本逃不掉!所以這個能力是極其重要的,寫得好很加分,寫得不好就很可能GG了。
建議這方面基礎不太好的同學,提前至少半年開始刷題,主要是lintcode和leetcode。等到七八月份再刷題可能就真的來不及了,那時候基本每天都有筆試面試,所以如果算法代碼能力不好的同學,一定要盡早刷題,算法是個內功,需要時間慢慢積累,唯一的方法就是多刷題,多寫代碼。
Leetcode刷200道左右,編號前100的題目盡量能刷兩遍,盡量做到大部分能獨立寫bug free的ac代碼。
現場面試的時候基本是手寫代碼,所以最好有時間也練一練在紙上寫代碼,找找感覺,盡量寫的簡潔干凈,不要塗塗改改。
(2)項目經歷和實習經歷
項目經歷和實力經歷是最需要平時積累的。不要僅僅就在完成任務這個層面,不要沉迷在項目的一些業務細節上,多關注框架,架構,優化方面的東西。可以深入去研究項目,比如做某些優化,用設計模式去重構一下,用到前沿的技術優化,比如redis緩存之類的東西,相信只要用心去研究所做的項目,等到面試的時候,去總結項目難點怎么回答就不困難了!
可臨時抱佛腳
- 網絡,數據庫,操作系統,java或者C++等這些基礎知識,面試的時候無非就是常見的那些面試題,都是固定的問題和答案,平常只要稍微關注一下即可,到了面試前花一兩個星期臨時抱佛腳看一看背一背基本就能應付過去。(如果要真正掌握這些知識,顯然是需要花很大精力去鑽研的,但就應付面試來說,記一記常考的點,搞清楚常問的點基本就夠了)
- 場景題和系統設計題,很多同學比較怕這類題目,其實這類題目大多涉及一些架構設計的東西,不會要你回答的多么細致,能給出大概的思路即可。而且多是一些高並發高負載的系統設計題。可能大部分應屆生都沒法接觸到這么高難度的開發,所以這時候主要就看你的想法和視野了。嘗試去看一些架構方面的書和積累一些面試題就發現其實這類題都是一個套路。看着很難,但實際上只要知道這些技術的基本概念和作用就行了,答出思路基本就沒問題,畢竟不會讓你現場寫一個高並發系統。
完整面經+總結
Cvte提前批
- 一面(電話)
- 自我介紹
- 介紹你的項目
- 加密解密了解么?幾種算法,講一下你了解的
- 多線程了解么?什么是線程安全?
- 說一個你最熟悉的設計模式
- 講一下你項目中用到了哪些設計模式
- Java的hashmap的原理
- Hashmap的線程安全性,什么是線程安全的?如何實現線程安全
- 數據庫的索引了解么?介紹一下
- 數據庫有哪些優化的方法?講你自己知道的
- 為什么事務可以優化數據庫?
- 二面(視頻)
- 自我介紹
- 介紹項目
- Mysql的數據庫引擎,區別特點
- 設計模式了解?講一下最熟悉的
- 寫一個單例模式,答主寫的是雙檢查鎖單例,問了為什么用Volatile,synchronize
- 單例模式在你項目里哪些應用?
- 數據連接池采用了什么設計模式?意義是什么?
- 對高負載有了解么
- 你意向的技術方向是哪塊?(答主回答的高並發,然后面試官說他是做高負載的)
- 對高並發有了解么?
校招首次面試,二面跪。發現存在以下問題:
(1)准備不充分(自我介紹,項目介紹,項目難點等需提前准備)(2)基礎不扎實(面試中問的數據庫相關問題基本沒答上來)
(3)缺乏亮點(缺乏體現自己能力的東西,比如項目難點如何解決,對一些前沿技術的了解等)
慶幸的當時只是八月初,大部分大廠的校招還沒開始,有足夠的時間去提高,比如深入復習數據庫這一塊的內容,深入去研究項目,了解一些前沿的新技術等。
阿里內推
- 一面(電話)
- 聽說你有博客,博客里大概有什么內容?
- 項目介紹,最復雜的表
- Hashmap的原理
- Hashmap為什么大小是2的冪次
- 介紹一下紅黑樹
- Arraylist的原理
- Arraylist的擴容機制
- 為什么arraylist擴容是1.5倍
- 場景題:設計判斷論文抄襲的系統
- 堆排序的原理
- 抽象工廠和工廠方法模式的區別
- 工廠模式的思想
- object類你知道的方法
- 哪里用到了工廠模式
- Forward和redirect的區別
- 二面(視頻)
- 自我介紹
- 項目介紹
- 項目架構
- 項目難點
- Synchronize關鍵字為什么jdk1.5后效率提高了
- 線程池的使用時的注意事項
- Spring中autowire和resourse關鍵字的區別
- Hashmap的原理
- Hashmap的大小為什么指定為2的冪次
- 講一下線程狀態轉移圖
- 消息隊列了解么
- 分布式了解么
阿里作為最想去的公司(畢竟是國內JAVA第一大廠)面試開始比較早,自己還處在面試菜鳥的階段,最后掛在二面。
一面面試官很好,體驗不錯。最后給我建議:希望我多去深入理解背后的原理,而不是僅僅停留在知道了解的層面。總體一面還是感覺不錯。
二面是整個秋招表現最不好的一次面試。答的很亂。
這次面試看到自己的不足,第一,就是基礎很不扎實,很多常問的面試題自己都不知道,第二,要深入去理解背后的原理,比如數據庫的隔離級別具體的實現等等,第三,深入琢磨自己做的項目,用一些高大上的技術去裝飾。
阿里面試后,有了危機感,從0開始研究redis數據庫,研究mysql數據庫的一些常問的底層實現,以及spring的一些常見的面試題等
一個經驗:到了八九月份的時候,遇到一些自己不會的大塊,比如數據庫,很多人就直接放棄,覺得再學已經來不及,其實不然,面試的時候,問的東西基本是固定的,只要我們對常問的面試問題深入了解就行。所以八九月份發現自己還有東西完全不會的,也不要慌,沉下心去學幾天,絕對來得及!
便利蜂內推(offer)
- 一面(電話)
- 自我介紹
- 項目介紹
- volatile和synchronized
- 來個算法題:一個無序數組,其中一個數字出現的次數大於其他數字之和,求這個數字 (主元素)
- 答完再來一個:一個數組,有正有負,不改變順序的情況下,求和最大的最長子序列
- 項目用到什么數據庫?隔離級別?每個隔離級別各做了什么
- 數據庫的索引?mysql不同引擎索引的區別
- 垃圾回收算法的過程
- 你了解的垃圾收集器? Cms收集器的過程
- 怎樣進入老年代?
- 平時用到了什么設計模式?
- 講一下你最熟的兩個設計模式
- 用過什么系統?shell寫過腳本嗎?
- 講你知道的Linux命令
便利蜂是校招拿到的第一個offer,雖然公司名氣不大,但盡早拿到第一個offer,可以提高信心和穩住心態,對后續的面試很有幫助。
所以前期一定要多投簡歷,能面的盡量面,反正最后你又不一定去,多面幾次積累經驗,等到大廠的面試開始,已經積累到了足夠的面試經驗,可以發揮的更好。
便利蜂的面試也是幸運女神眷顧。
面試前,在牛客網搜索了所有便利蜂java的面經,只找到一篇,就把那篇面經的問題好好研究了一遍。然后奇跡出現了,面試問的問題基本一模一樣,估計是同一個面試官,所以答得很順利。
一個小技巧,當面試的時候遇到以前做過的算法題的時候,千萬別說自己做過,請假裝沒做過,不然面試官會換題目的。
經驗:
進入校招之后,多泡泡牛客網,多看看面經很有幫助,面試其實都大同小異,就那么些知識點,所以多看多總結。
拼多多
- 一面(現場面)
- 自我介紹
- 項目介紹
- 手撕算法:一棵二叉排序樹,給定一個數,找到與給定數差值絕對值最小的數
- 場景題:設計一個系統,解決搶購時所需要的大量的短鏈接的功能,如何保證高並發,如何設計短鏈接
- 二面(現場面)
- 代碼量多少
- 給了一張紙,各種名詞,會的寫出來
- 然后給它解釋那些會的
- 設計題:設計一個系統,記錄qq用戶前一天的登錄狀態,提供16g內存和2tb的硬盤,要做到查詢指定qq號的前一天的登錄狀態,快速查詢O(1)復雜度
之前經歷了那么多電話面,終於迎來了人生第一次現場技術面!
果然第一次總是會有點痛苦,很遺憾的掛了!
一面感覺還不錯,項目簡單聊了一下,感覺面試官興趣不大。就開始手撕代碼,第一次手撕代碼,略緊張,最后還是想出來了。然后一個場景題,用到了剛學會的redis,現學現賣,感覺面試官還比較滿意。
二面一坐下,就感覺對面的面試官氣場太強,一坐下,沒讓自我介紹,直接給了問代碼量多少,我准備大概估算一下,結果被面試官打斷,讓我直接說,講真,有點慌亂哈哈。就說了大概十萬行。然后給了一張紙,大概有幾十個專業名詞,讓我把會的勾出來,然后一個一個的解釋。然后就出了一個系統設計題,一直沒理解面試官的意思,最后在面試官討論項目的過程中,面試官問是否可以通過value推到key,一下沒經過思考,答了個是,答錯了,然后面試官就說面試結束了。
很多時候,如果面試官問到一個比較基礎的問題,你沒答上來,那你就跪了,所以回答之前要三思熟慮,別急着回答,好好想一想。
多益網絡內推(offer)
- 一面(視頻)
- 自我介紹
- 對面向對象的理解
- 介紹多態
- Java新建線程有哪幾種方式
- 線程池的作用
- 看過框架源碼么
多益只有一面視頻面,是秋招拿到的第二個offer。
整個面試過程,感覺面試官都是問的一些很大的問題,就看你自己發揮了,盡量把知道的都回答,而且盡量回答的專業。
在問到對面向對象的理解的時候,可能大部分人都會回答多態繼承封裝就沒了。前幾天正好看到面向對象的六原則和一法則,然后就給面試官吹了一波,面試官也沒打斷我,一直讓我說,整個面試答得比較好的就是這里。
所以還是要提前准備啊,像這種題目,提前准備過和沒准備回答出來的效果完全不一樣。
塗鴉移動內推(offer)
- 一面(現場)
- 自我介紹
- 項目介紹
- 數據庫的索引原理
- 索引使用的注意事項
- 數據庫的引擎
- Java垃圾回收機制
- Java的finalize,finally,final三個關鍵字的區別和應用場景
- String類可以被繼承么
- 手撕算法:假設你是一個專業的竊賊,准備沿着一條街打劫房屋。每個房子都存放着特定金額的錢。你面臨的唯一約束條件是:相鄰的房子裝着相互聯系的防盜系統,且 當相鄰的兩個房子同一天被打劫時,該系統會自動報警。
給定一個非負整數列表,表示每個房子中存放的錢, 算一算,如果今晚去打劫,你最多可以得到多少錢 在不觸動報警裝置的情況下。
- 二面(電話)
- 自我介紹
- 對游戲的了解
- 項目介紹
- 算法題:給一個整數數組,找到兩個數使得他們的和等於一個給定的數 target。
- 紅黑樹
- Redis的應用
一面面試官說之前仔細看了我的博客,然后面試的內容就是讓我講一講博客里寫的內容,基本就是之前復習准備的數據庫的知識,都游刃有余了。但感覺到自己講的時候還是思維有點混亂,所以表達能力也很重要,有時間自己試着將一些常問的東西,自己私下表達一遍,盡量做到表達清楚專業有條理。
然后手撕算法,leetcode原題,打劫房屋,自己當時只記得題目,但方法不記得了,就現場推了一遍動態規划的狀態方程,結果很幸運推了出來。(這個還是得靠前期的刷題的積累)
二面電話面問的比較簡略,又用到了救命稻草redis,發現面試官都很喜歡問這個。可能因為是比較前沿的技術吧,現在企業用的比較多,但實際這個東西不是特別難。所以了解一下redis會很加分。
不久之后,收到塗鴉移動的offer,應該是第四個offer,自己也開始慢慢更有信心了。
雖然最后沒去塗鴉,但面試的過程也學習了不少東西,自己在表達能力方面還需要加強。所以每次面試我們或多或少都能有所收獲,多面試多經歷多體驗!
中國電信it研發中心(offer)
- 一面(現場)
- 自我介紹
- 項目介紹
- 項目里用的什么服務器
- 自己寫一個tomcat服務器,你會怎么寫
- 分布式服務器會出現哪些問題
- 怎么解決session一致性緩存的問題
- Redis的優勢和特點
- 一千萬用戶並發搶購,怎么設計
- 如果成功的用戶有10萬,redis存不下怎么處理
- 你項目中的難點
- 二面(現場)
- 自我介紹
- 項目介紹
- 介紹spring中的熟悉的注解
- 讓你實現autowire注解的功能你會如何實現
- Redis和mysql的區別
- Redis的持久化有哪些方式,具體原理
中國電信算是拿到的第一個比較滿意的offer,雖然不是互聯網大廠,但是薪資地點發展都感覺不錯,當時考慮,如果后面沒拿到大廠的offer就去電信養老了。
電信的面試官年紀偏大,問的問題也比較偏實踐和設計,基本沒問基礎知識。
一面一上來就讓我寫一個tomcat服務器,石化,還好面試官比較和善,慢慢提示我,然后又問我怎么保持session的一致性,這個其實是比較常見的問題,我之前沒見過,面試官讓我現場想,最后我想到的答案正好是正確答案,然后面試官出的場景題,我就將redis往上面套,無非就是緩存,消息隊列這些技術去處理那些高並發的問題。所以答得還不錯。
可以看出,有時候面到你不會的東西,如果你能在面試官的引導下回答出來是很加分的,可能因為看到你的思考能力吧,更看重你的潛力!
二面還是聚焦在redis這一塊,(redis救命稻草,如果放假在家那幾天沒看,感覺后面的offer都可能拿不到了)。
中興(offer)
- 專業面(現場)
- 自我介紹
- 項目介紹
- 你了解的設計模式,講兩個
- Java collection類,集合,講兩個你了解的,說實現原理
- Java線程池的作用
- 你覺得你在你實驗室處於什么水平
- 綜合面試(現場)
- 自我介紹
- 說一下你知道的設計模式
- 畫一個策略模式的uml圖
- Java多線程的理解
- 內存屏障是什么
- 數據庫索引
- 項目中的優化
- 然后開始聊人生
中興軟件崗的面試比較水,主要看你的學校背景。學校不錯基本沒問題
百度(offer)
- 一面(現場)
- 自我介紹
- Java中的多態
- Object類下的方法
- Wait和notify的作用
- Finalize的作用和使用場景
- Hashcode和equals
- 為什么要同時重寫hashcode和equals
- 不同時重寫會出現哪些問題
- Hashmap的原理
- Hashmap如何變線程安全,每種方式的優缺點
- 垃圾回收機制
- Jvm的參數你知道的說一下
- 設計模式了解的說一下啊
- 手撕一個單例模式
- 快速排序的思想講一下
- 給個數組,模擬快排的過程
- 手寫快排
- 設計題,一個圖書館管理系統,數據庫怎么設計,需求自己定,題目很寬泛,面試官看你能考慮到哪些問題
- 二面(現場)
- 自我介紹
- 項目介紹
- Redis的特點
- 分布式事務了解么
- 反爬蟲的機制,有哪些方式
- 手撕算法:反轉單鏈表
- 手撕算法:實現類似微博子結構的數據結構,輸入一系列父子關系,輸出一個類似微博評論的父子結構圖
- 手寫java多線程
- 手寫java的soeket編程,服務端和客戶端
- 進程間的通信方式
- 手撕算法: 爬樓梯,寫出狀態轉移方程
- 智力題:時針分針什么時候重合
- 三面(現場)
- 由於三面面試官不懂java,我不熟c加加,所以全程尬聊
- 自我介紹
- 項目介紹
- 項目難點
- 手撕算法:給定一個數字三角形,找到從頂部到底部的最小路徑和。每一步可以移動到下面一行的相鄰數字上。
- 然后繼續在這個問題上擴展
- 求出最短那條的路徑
- 遞歸求出所有的路徑
- 設計模式講一下熟悉的
- 會不會濫用設計模式
- 多線程條件變量為什么要在while體里,為什么不是if
- 你遇到什么挫折
百度三輪技術面,每面都在手撕代碼,很注重代碼能力,還有智力題,也是比較特別的。
一面主要聊了聊基礎和寫了簡單的算法
二面一開始聊了聊項目,然后就開始手撕代碼,先撕了翻轉單鏈表(這個算法算是面試常考了,整個秋招寫了三次這個算法),然后就撕了一個比較難的算法,微博子結構,代碼比較難寫,寫的比較慢,面試官催了好幾次,但還是寫出了,面試官評價:“代碼風格不錯,但是寫的太慢,筆試會吃虧”,確實吃虧,筆試掛了好多哈哈。然后又是一輪寫,先寫多線程,然后寫socket,socket不會寫,就直接說了。面試的時候,有些問題答不上來也不要慌,最后問了一個智力題,
三面遇到了語言不一樣的面試官,於是就一直在寫代碼。
百度的面試很要求手撕算法的能力,考察的比較全面,智力題場景題均有涉及。
美團內推(offer)
- 一面(電話)
- 自我介紹
- 項目介紹
- Redis介紹
- 了解redis源碼么
- 了解redis集群么
- Hashmap的原理
- hashmap容量為什么是2的冪次
- hashset的源碼
- object類你知道的方法
- hashcode和equals
- 你重寫過hashcode和equals么,要注意什么
- 假設現在一個學生類,有學號和姓名,我現在hashcode方法重寫的時候,只將學號參與計算,會出現什么情況?
- 往set里面put一個學生對象,然后將這個學生對象的學號改了,再put進去,可以放進set么?並講出為什么
- Redis的持久化?有哪些方式,原理是什么?
- 講一下穩定的排序算法和不穩定的排序算法
- 講一下快速排序的思想
- 二面(現場)
- 自我介紹
- 講一下數據的acid
- 什么是一致性
- 什么是隔離性
- Mysql的隔離級別
- 每個隔離級別是如何解決
- Mysql要加上nextkey鎖,語句該怎么寫
- Java的內存模型,垃圾回收
- 線程池的參數
- 每個參數解釋一遍
- 然后面試官設置了每個參數,給了是個線程,讓描述出完整的線程池執行的流程
- Nio和IO有什么區別
- Nio和aio的區別
- Spring的aop怎么實現
- Spring的aop有哪些實現方式
- 動態代理的實現方式和區別
- Linux了解么
- 怎么查看系統負載
- Cpu load的參數如果為4,描述一下現在系統處於什么情況
- Linux,查找磁盤上最大的文件的命令
- Linux,如何查看系統日志文件
- 手撕算法:leeetcode原題 22,Generate Parentheses
- 三面(現場)
- 自我介紹
- 項目介紹
- 怎么管理項目成員
- 當意見不一致時,如何溝通開發成員,並舉個例子
- 怎么保證項目的進度
- 數據庫的索引原理
- 非聚簇索引和聚簇索引
- 索引的使用注意事項
- 聯合索引
- 從底層解釋最左匹配原則
- Mysql對聯合索引有優化么?會自動調整順序么?哪個版本開始優化?
- Redis的應用
- Redis的持久化的方式和原理
- 技術選型,一個新技術和一個穩定的舊技術,你會怎么選擇,選擇的考慮有哪些
- 說你印象最深的美團技術團隊的三篇博客
- 最近在學什么新技術
- 你是怎么去接觸一門新技術的
- 會看哪些書
- 怎么選擇要看的書
美團是拿到的第一個大廠offer,也是美團面完后心態更穩了。唉,最有效提升信心的方法就是拿到一個滿意的offer!
整個美團流程比較長,由於是內推,9.7號接到電話面,電話面基本聊的基礎,面試官很好,一直在引導。
9.20的現場面,二面一開始太緊張,數據庫的四個特性不記得了,一個持久性死活想不起來,還好影響不大,后面答的都比較好,問到數據庫的隔離級別,我主動引入到底層實現原理,回答問題的時候,可以主動延伸一下,盡量將自己會的表達出來。
面試之前,將牛客網上所有美團的面經扒了下來,看到很多出現率很高的問題,就提前准備了這些問題,果然在面試的時候碰到了,功夫不負有心人,准備工作沒有白做。所以多刷牛客,多刷面經才是王道啊!
最后就是手撕算法,leetcode原題,生成括號,dfs問題。一貫套路,假裝之前沒見過這道題,先講一個暴力法,然后再寫出代碼!由於leetcode刷了差不多兩遍,所以很順暢的寫出來了。(像這類題,如果之前完全沒刷過或者沒見過,現場寫出來並不容易)
三面就基本就是聊人生,偶爾帶一點技術。
現在大廠的面試基本逃不過手寫代碼,基本上都是leetcode的中等難度的原題或者類似的題目,所以前期一定要多刷題,如果算法能力不強的話,這個只能靠硬實力了。
華為(offer)
- 一面(現場)
- 自我介紹
- 項目介紹
- 項目架構
- 項目一個完整的執行流程(由於我是搞java的,而面試官是搞c的,所以全程尬聊)
- 項目優化
- 二面(現場)
- 自我介紹
- 項目介紹
- 怎么管理項目進度
- 平常的愛好
- 感覺面試官也不是搞java的,所以又是一陣尬聊
華為軟件崗的面試比較水,主要看你的學校背景。學校不錯基本沒問題
蘇寧內推(offer)
- 一面(現場)
- 自我介紹
- 項目介紹
- 面過哪些公司了
- 有哪些offer了
- 聊到多益,於是開始聊最近微博上很火的多益老板
- 得出結論,我和面試官都覺得多益老板三觀有問題,但做游戲就是要偏執的人
- 你博客主要哪方面的
- 多線程並發包了解么
- 講一下countDownLatch
面試過程就是聊人生,面試官先問了你有哪些offer。然后討論了多益的老板的微博和價值觀,估計是因為offer對實力也是一種認可,所以沒怎么問技術就結束了,最后順利拿到offer。(算是秋招拿的最容易的一個offer,就一輪面試聊了聊八卦就過了)但其他認識的同學,有被懟了50分鍾技術的。
所以啊,面試這個東西看緣分,期望老天保佑遇到對味的面試官。
騰訊
- 一面(現場)
- 自我介紹
- 項目介紹
- Hibernate的作用,你對hibernate的理解
- 多線程的理解,如何保證線程安全
- mysql數據庫的引擎和區別
- 場景題:千萬用戶搶購,如何處理高並發,並且有一個鏈接,指向前一天搶購成功的用戶,如何設計這個系統和數據庫
- 如果后台處理搶購請求的服務器,每次最多承受200的負載,系統該怎么設計
- 手撕算法:最小公倍數和最大公約數
- 二面(現場)
- 自我介紹
- 項目介紹
- 項目里一個完整請求的流程
- 項目的優化
- Hibernate和mybatis的區別
- 為什么用ssh框架
- Mysql的容災備份
- Redis和memcache 的區別
- 為什么選擇redis
- Java的full gc
- Full gc會導致什么問題
騰訊筆試似乎不怎么刷人(筆試做的很爛,依然收到了面試通知,周圍認識的做了騰訊筆試的基本都收到了面試通知)。所以對待騰訊的筆試可以輕松一點。
一面是個小姐姐,基本問的都是很大問題,看你的發揮,沒怎么問基礎。沒想到一面能過,二面是一位中年大叔,不言自威,氣場略強,感覺答的還可以,最后還是掛了,可能因為真的不招java吧。
一面的面試官讓我回去看一下分布式事務,然后我就真的看了,然后后面網易的面試都在問這個,如果沒來面騰訊,估計后面網易也過不了。所以啊,面試真實一個學習的過程,不要錯失大好的學習機會
招銀網絡科技(offer)
- 一面(現場)
- 自我介紹
- 寫一個兩個有序鏈表合並成一個有序鏈表
- 死鎖是什么呢
- 怎么解決死鎖
- http請求流程
- 為什么負載均衡
- 怎么實現負載均衡
- 數據庫掛了怎么辦?除了熱備份還有什么方法
- 講講你對spring的理解,不要把ioc和aop背給我聽
- 二面(現場)
- 自我介紹
- 項目介紹
- 算法:找出兩個數組相等的數,不能用其他數據結構
- 算法:給定一個數字,一個數組,找出數組中相加等於這兩個數的和,不能用數據結構
- 算法:如何判斷一個樹是不是另一顆樹的子樹
- 如何解決並發訪問的錯誤
招銀算是銀行類的公司面試最專業的。
一面上來就是手撕算法,最后問spring的時候,問我對spring的理解,並且面試官提示我不要把ioc和aop背給我聽,我就正好講了自己的理解,ioc和aop都是為了降低代碼侵入性和耦合度。所以,有時候一些常規的問題,我們最好能有自己的思考,如果是千篇一律的答案,並沒有什么亮點,將自己的理解講出來或許更好。
二面基本都是在問算法,講思路就可以了,這個時候就看自己的算法能力了。
前期一定要多刷題!
網易(offer)
- 一面(現場)
- 自我介紹
- 項目介紹
- 項目難點(瘋狂懟)
- I++操作是線程安全的么?怎么保證線程安全
- 場景題:設計一個下單系統,下單成功后可以給用戶發優惠券
- 接上面場景題:服務器掛了,優惠券還沒發怎么辦
- 數據庫掛了怎么怎么辦
- 怎么保證一致性
- 分布式事務知道么
- 介紹分布式事務
- 你的職業規划
- 二面(現場)
- 自我介紹
- 項目介紹(又是狂懟)
- Nio的原理
- Channel和buffer
- directBuffer和buffer的區別
- nio和aio的區別
- 鎖的實現原理
- 怎么解決緩存和主存的一致性問題
- 緩存還沒更新到主存,服務器掛了怎么辦
- 數據庫掛了怎么辦
網易的面試感覺運氣比較好。也跟自己心態有關,這個時候已經壓力不大了,掛了也無所謂,但往往就是這種平常心去面試的時候,發揮的會更好。所以,心態真的很重要。
前兩天騰訊面試官讓下去了解的分布式事務,結果網易一面的場景題基本都是在這一塊討論,最后還具體問了分布式事務,正好現學現賣。所以,多面試,面試官說讓你去了解,一定要去了解,多學習肯定沒壞處。二面面試官聽說我有博客,對我感覺不錯,說很多程序員就缺乏總結的能力。平常積累的博客,感覺終於派上用場了,所以如果有空,維護一個技術博客,寫寫算法題解或者一些技術問題,就當是學習筆記。
攜程(offer)
- 一面(現場)
- 自我介紹
- 項目介紹
- 項目難點(講到用了消息隊列優化,被面試官誇了一波)
- 了解hashmap么?講講原理
- 知道java GC?講講過程(又背了一遍)
- 手撕算法,寫二叉的后序非遞歸遍歷
- 手撕算法,翻轉單鏈表
- 手撕算法,背包問題
攜程的迷之測評,但面試還是相對基礎,但也要求算法能力。第一個二叉的后序非遞歸遍歷的算法題,算是校招中唯一一個沒寫出來的算法,不過最后在面試官提示下還是做出來了。
今日頭條(offer)
- 一面(視頻)
- 自我介紹
- 數據庫優化有什么了解
- 索引的原理
- 聯合索引,如果聯合索引(a,b),現在查詢a>0,b>0可以用到這個聯合索引么?(太久沒看,生疏了,答錯了,答案應該是不能,只能用到a的索引,范圍索引只能用到一列)
- 數據庫優化中,有一個關鍵字可以分析執行過程,知道么(explain關鍵字)
- Java虛擬機了解么?使用中有什么注意事項?
- 了解設計模式么?手寫一個單例模式
- 寫一個算法吧,一個二維數組,每一行從左到右遞增,每一列從上到下遞增,給一個數,判斷他是否在在二維數組中,在返回下標,不在返回(-1,-1)
- 比較基礎的算法題,要做到最優。
- 了解nio么?講一下nio的理解。
- Linux命令了解么?查看網絡狀態的命令,查看內存占用的命令。Awk命令。
- 二面(視頻)
- 自我介紹
- http協議的chunk知道么?是干什么的?
- http的狀態碼了解么?說一下
- 301和302的區別
- 502和503的區別(這么久沒面,早忘了,然后被面試官教育了一番,說沒有真正掌握這些知識)
- Redis的數據結構的底層實現
- Mysql集群數據是怎么同步的
- 手撕算法:一個鏈表,奇數位置遞增,偶數位置遞減,給鏈表排序。要求O(n)的時間復雜度
- Select,poll,epoll的區別
- 數據庫的索引原理
- 場景題,設計一個高並發的系統。
- 三面(視頻)
- 自我介紹
- 服務器處理接受一個請求的過程
- 數據庫的索引的原理
- Innodb都是聚簇索引么?
- 設計一個文件分發系統,分發到10000台服務器,做到高效可靠,如何保證高效,如何保證可靠
- 有什么offer
- 你的優點缺點
- 你覺得你在同齡中處於什么水平
面頭條的時候已經是十月底了。大半個月沒有面試,之前准備的知識點比如http狀態碼之類的記憶性的東西,早就忘光了。
二面的時候問了一堆狀態碼,全都不記得了。面試官態度很好,跟我說,你現在不記得了,說明你這些知識只是為了面試臨時抱佛腳,並沒有深入理解,所以時間一長就忘了。確實是這樣。
總的來說,頭條的面試比較注重算法能力,兩面都手寫了算法,算法不算特別難,但是真正實現好,還是會有很多細節要考慮到,而且要寫的代碼都比較長。頭條也比較喜歡出場景題,感覺面試官也沒有標准答案,主要看你的回答和思路。
臨時抱佛腳背的知識會忘掉,但刷題后的代碼能力解題能力卻是內功,可以說一勞永逸的,所以多刷題很重要,面試的時候代碼寫的好或許可以彌補有些問題沒答上來。
寫在最后
回頭看整個校招的面試過程,會發現面試就像在登山,你一定是往上爬的,只是爬得快慢之分,越面到后面,面試的越多,你的能力技巧經驗都是越來越好!這是很多方面的因素造成的。
- 實力的提升
面試同時也是一個學習和提高的機會,面試的越多,積累的經驗,個人的能力和知識儲備等各方面也都在慢慢提高,所以只要面試后及時總結,並努力去改進,實力就一定會有提升! - 心態越來越好
傳說“80%的offer掌握在20%的人手中”,其實不無道理。實力當然是面試成功拿到offer的重要部分,但心態的影響也是至關重要的,萬事開頭難,當你拿到第一個滿意的offer的時候,后續的面試都會變得順利起來,offer會越來越好拿,這就是良好的心態起了重要作用。反之,當你遲遲拿不到一個滿意的offer,心態就會越來越不穩,offer會變的越來越難拿。
總結自己的面試過程,從美團面完基本確定可以拿到offer之后,整個人的心態就完全不一樣了,更有底氣和信心,反正已經有差不多滿意的offer,后續的面試其實過不過反倒無所謂了。而往往就是這種無所謂的心態,也就是平常心,抱着去試一試玩一玩的心態,反而能在面試的時候發揮的更好,反而能在面試的時候顯得更有自信更加從容,自然也就能夠得到更好的結果。(面試的注意事項,面試的時候一定要保持自信,而不是慌亂,如果面試官感受到你的慌亂緊張而不是自信,那么顯然會對你的實力有所懷疑) - 運氣
運氣這個東西完全是看天意了。但是如果連續參加五場面試,運氣都不好,問的全是不會的,會的全都不問。這個時候一定要穩住!就跟拋硬幣一樣,連續拋了五次反面,也算是倒霉透頂了,但是要相信概率,總有扔到正面的時候,只要你繼續扔下去。同樣的道理,只要你堅持面試下去,總會有運氣好的時候,面試的越多,機會也就越多,一定要盡早盡量多的參加各種面試,尤其是當你沒拿到滿意offer的時候。
最后在總結一下
- Offer = 0.3心態 + 0.5實力 + 0.2運氣,缺一不可
- 越早開始准備越好,准備的越充分越好
- 切忌眼高手低。對於普通同學(大神除外),前期盡量多利用小公司的面試機會來鍛煉自己,積累經驗。
- 在面試的過程中找准自己的定位,並且適當的根據面試情況及時調整自己的定位和目標,保持信心,但不能盲目自信。不管是大公司還是小公司,盡早拿到第一個offer。
- 心態要及時調整好!
- 不管面試失敗還是成功,都一定要及時總結!