阿里、百度、搜狐、優土等互聯網公司面試經驗總結

時間:2016-07-25 09:19:08
  這個跳槽季大概面試了近十家公司,也拿到了幾個Offer,現在面試告一段落,簡單總結下面經,
  我現在主要的方向是Java服務端開發,把遇到的問題和大家分享一下,也談談關于技術人員如何有方向的提高自己,做到有的放矢。

一、面試遇到的問題        

1.百度  
百度最近真是炙手可熱,貼吧事件剛結束,醫療競價排名又鬧得沸沸揚揚,一些論壇上連帶程序員都開始招黑了,友誼的小船可是說翻就翻。
說回面試,百度面了兩次,分別是百度糯米和金融事業部,百度目前只有這兩個部門的招聘崗位和我比較匹配。
面試都在西二旗的百度新總部,園區還在施工,離地鐵也比較遠,需要打車過去。
面試官自帶電腦,整個面試過程都在記錄,首先詳細詢問了最近一份工作項目的架構和工作內容,
面試主要圍繞工作中用到的組件和中間件技術來擴展,考察掌握程度。
MySQL InnoDB存儲的文件結構
索引樹是如何維護的?
數據庫自增主鍵可能的問題
Redis的主鍵爭用問題如何解決
了解Redis事務的CAS操作嗎
分析線程池的實現原理和線程的調度過程
動態代理的幾種方式
spring AOP與IOC的實現
為什么CGlib方式可以對接口實現代理?
RMI與代理模式
Dubbo的底層實現原理和機制,
描述一個服務從發布到被消費的詳細過程
算法方面考察了一個簡單的數組就地去重問題,用丟棄數組尾部元素的方式實現了。
百度金融的面試安排在了周六,最近應該在各種擴張,各個招聘網站隨處可見招聘啟事。
一面面試官很贊,態度認真,有些問題沒有思路會給你提示,交流的不錯,二面被告知缺少金融支付背景,
不過作為一名工作不到兩年的新人,我覺得被Pass主要原因應該是工作經驗比較少,教育背景也不太亮眼。
面試中的問題:
分布式系統怎么做服務治理
接口的冪等性的概念
Maven出現版本沖突如何解決
JVM垃圾回收機制,何時觸發MinorGC等操作
新生代和老生代的內存回收策略
Eden和Survivor的比例分配等
Synchronized和Lock的區別
兩次面試,感覺百度的流程比較嚴格,面試官挺不錯的,簡單可信賴,雖然工作中一般都用谷歌,
想起一個段子,哈哈。
有次面百度,我提到了一個比賽,面試官很感興趣,想搜一下,
于是先用百度搜了一下關鍵字,首屏沒有找到,面試官面不改色,熟練的打開了谷歌輸入關鍵字,發現第一個就是官方網站。


2.阿里巴巴

在內推網上收到了阿里菜鳥和阿里云安全部門的面試,后來參加了阿里云的面試。
阿里的面試安排的很快,這次止步二面,兩輪面試都是電面。聽朋友說阿里五輪面試,四輪技術一輪HR,技術面試是部門的幾個同事交叉面試,也有了了解。
一面總體上還是圍繞項目架構、Java基礎、JVM、并發編程、數據庫操作、中間件技術和Dubbo服務治理框架等展開,
可能因為是云安全部門,有一半時間在考察JVM,還提問了一些編譯優化的知識,
一面結束后很快安排了二面,相對一面,二面的問題更深入,問題比較刨根問底,更加注重對一些技術細節的理解和把握。
比如數據庫操作,面試官會詳細的問你數據庫插入和刪除一條數據的過程在底層是如何執行的,項目里配置了讀寫分離,也會比較深入的就實現方法和底層邏輯展開討論。
一些值得記錄的問題:
JVM內存分代,
Java 8的內存分代改進
深入分析了Classloader,雙親委派機制
JVM的編譯優化
對Java內存模型的理解,以及其在并發中的應用
指令重排序,內存柵欄等
HashMap的并發問題
了解LinkedHashMap的應用嗎
在工作中遇到過哪些設計模式,是如何應用的
由于阿里杭州目前社招都是P6起,自我感覺和崗位要求有差距,二面在電話里和面試官交流了,沒有再參加后面的面試。
兩次面試,阿里給我留下的印象很好,面試官都是大牛,面試結束后第二天,收到了阿里的郵件拒信,點贊。
阿里的崗位大都在杭州,面試結束特意關注了一下那邊的生活成本,目前杭州房子均價不到兩萬,相比浙江一些縣市的房價都破兩萬,杭州的房價應該比較正常。
如果拿到阿里和網易等幾家互聯網公司的高薪,買房和生活的確比北京要輕松很多,果斷決定再沉淀一段時間,兩年后P7再戰。


3.優酷土豆
優酷的面試都是二對一,每輪面試兩個面試官,
一面比較順利,主要是Java基礎,Spring原理,Java NIO,并發和集合框架等,
可能是因為視頻網站,優酷考察網絡原理的知識多,比如TCP/IP協議、長連接與短連接等。
一面提到了自己可能會在下半年學習大數據與機器學習相關的知識,二面就在這上面栽了跟頭,問了很多海量數據的問題。
TCP/IP協議
長連接與短連接
mapreduce過程
多路歸并的時間復雜度
海量url去重類問題
Java NIO使用
倒排索引的原理
對分詞技術的了解
面試中給了一個具體場景,考察對MapReduce過程的理解,比如Map階段和Reduce階段是如何進行的等,
Reduce階段面試官希望分析給出一個多路歸并的時間復雜度,用外排序的知識簡單分析了一下,回答的不太好。
回來以后搜索了勝者樹和敗者樹的優化,發現這里面的內容還挺多,深刻體會到有些知識點如果平時掌握的不夠全面深刻,很難信手拈來。
 
4.搜狐新聞
搜狐最近應該是沒有招聘計劃,面試等待時間比較長。
做了筆試題,一面是個和我年紀相仿的面試官,針對筆試和簡歷提問了一些基礎問題,聊得挺投機,
二面技術經理就比較偏架構和中間件的應用,提問了項目,主要考察了服務治理和消息隊列等中間件使用的問題,
消息中間件如何解決消息丟失問題
Dubbo的服務請求失敗怎么處理
重連機制會不會造成錯誤
對分布式事務的理解
深入分析幾個設計模式
面試最后提問了一個不定長字符串轉為定長字符串的問題,
剛剛面過優酷,這個簡單的問題被我想復雜了,沒有Get到面試官的點,考慮了唯一性,性能等,扯了一大堆。
也提醒一下大家,面試過程中要保持清醒,不要有思維定式,除非是底層研發崗位,社招對算法的考察不會特別難,用正常的思路去解決就可以。
 
5.58趕集
58總部在798附近,全天有班車可以過去?傮w上,感覺面試官的問題非常接地氣,
三輪技術面,大部分是實際場景的算法和系統設計類問題。
HTTP請求的報文格式
Spring的事務實現原理
實際場景問題,大量用戶數據如何在內存中排序和去重
緩存機器增刪如何對系統影響最小,一致性哈希的實現
Redis持久化的幾種方式
Redis的緩存失效策略
實際場景問題解決,典型的TOP K問題
實際場景問題,海量登錄日志如何排序和處理
SQL操作,主要是索引和聚合函數的應用
三面面試官提問了一些優點和缺點的自我評價類問題,簡單交流以后對我給出了一些中肯的建議,非常感謝。
 
6.國美在線
國美在線面試最開始是部門經理溝通,在知道我畢業不滿兩年以后,重新去做了一份筆試題,
題目質量不錯,主要考察Java基礎,數據庫,設計模式以及數據結構,要求寫出B-Tree的節點結構,
算法題目是一道等概率抽獎的題目,用蓄水池抽樣算法解決了。
SQL語句編寫
MySQL的幾種優化
Spring行級鎖
Spring衍生的相關其他組件整理
RMI的幾種協議和實現框架
BTree相關的操作
數據庫鎖表的相關處理
考察跳臺階問題
和面試官的交流比較輕松,面試官提示我要加強數據庫操作的掌握,另外面試過程中詢問了一些工作中用到框架和組件的版本等細節問題,平時沒太關注,
后來思考了一下,對開源組件的應用,版本的管理很重要,不注意可能會發生一些詭異的問題。
 
7.去哪兒網,口袋購物等公司
除了上面的公司,還參加過去哪兒網,口袋購物,鏈家等幾家公司的面試。
去哪兒網中規中矩,口袋購物的工作環境非常不錯。鏈家網最近有新浪的鳥哥加入任技術總監,在IT圈子里挺火,面試了鏈家旗下的兩個租房部門,技術氛圍不錯,前景看好,很值得去的一家公司。
幾家公司的模式和問題都類似,注重對基礎和編程能力的考察,以及對分布式系統設計和架構的理解,一些有代表性的問題: 
JVM內存查看與分析,編寫內存泄露實例
線上CPU100%,如何定位和排查問題
如何在運行時確定對象類型?
引用傳遞和值傳遞
類加載過程,如何獲得當前對象的ClassLoader
Git操作,Maven多項目聚合
10萬個ip段如何快速查找
Java內存模型,volatile和i++的線程安全
線程池實現原理,Lock機制的實現
JVM對final關鍵字的編譯優化
ConcurrentHashMap深入分析
HashMap和HashSet的使用
Synchronized和Lock的使用
Dubbo底層實現,Dubbo相比webservice等方式的優勢
設計模式,服務治理等
Spring動態加載數據源
Spring boot應用
Spring中的設計模式
Linux的常用命令,簡單shell編寫
Linux系統監控命令
Redis的持久化方式
緩存和數據庫的一致性問題
Redis、MongoDB和Memcached的區別
Solr和Lucene,中文分詞技術
爬蟲的深搜和廣搜,隊列和棧
數據庫索引的實現,B+樹的結構和操作,為什么不用紅黑樹
SQL表設計 Join操作
數據庫范式,聚集索引與非聚集索引
數據庫存儲過程,SQL注入
值得一提的是一家創業公司的面試,過程十分簡單粗暴。
沒有自我介紹,面試官看完簡歷就在白板上提了一個多線程調度問題,遞過來MAC就開始敲代碼+_+
寫完以后我表示這題目意義不大,問了Redis,要求十五分鐘實現一個LRUCache,再次現場寫代碼。
寫到一半面試官看沒問題就打斷了,問對公司有什么想了解的,等了一會讓我回去了,就這么被Pass,創業公司效率果然高(此處/dog臉)。
 
上面提到面試中要保持清醒,比如ip段查找這個問題,首先是一個典型的查找問題,
明確了這個,就可以針對性的選擇相關的算法實現,如二分查找、二叉查找樹等。
另外推薦畫圖表達的方式。
做過的項目架構,各種框架和中間件的設計實現,通過畫圖的方式都可以很好的闡述,
可以隨身帶著紙和筆,面試本來就是一次很好的學習過程,一些問題也可以記錄下來。
一般來說,面試過程類似一個尋路算法,交流過程中如果提到了面試官感興趣的某一點,
就會就這個點展開,然后一直提出問題到你不能回答為止,或者你特別牛在這個領域直接秒殺面試官,這樣一條路線走通,再換下一條路線。
股票行情大盘走势怎么看