[综合面试] 跨专业大牛的IT求职面试经验分享以及学习知识路线图梳理
百度三面,跪了,最中意的一家公司的最后一面,結束了我的校招應聘。總結經驗和教訓,希望能幫助一些人。
個人背景:
本科:大連理工信管專業,本科畢業代碼量<500行。中科大讀研,專業是管科,學的全是成本管理、財務管理、供應鏈等等。所有計算機知識完全自學。研一下,研二上期間學了點java、玩了會big data、又學了幾個月machine learning,總之亂學一氣。從去年10月份正式學習c++,linux,刷算法。今年3月份~7月份實習。7月份~8月份回校復習,9月份各種面試。
面試情況(研究方向都是后臺開發):
實習公司?,臨走前答應了給不低于阿里的offer,但是基本沒考慮,還是想去大公司試試。
上海某創業公司?兩面搞定,筆試,面試都很簡單,可能創業公司不太好招人,工資差不多給了相當于阿里稅前的。
科大訊飛?,兩面搞定,筆試面試都很基礎,很簡單。本來總監面時因為某些非技術問題聊得很不愉快,結果還是發Offer,挺意外的。
華為?,三面,offer,平淡無奇的面試,很基礎很簡單。
美團?,三面,offer,很瘋狂的面試。知識面極寬(不深),面試節奏極快,題目量極大。
創新工場?,筆試,一面超級簡單。二面掛了,第一次面試被拒,難受了很久。總結原因還是算法不扎實、面試態度也不對而且IQ不夠。。。心碎。
搜狗?,筆試掛了,題目范圍太窄了,全考的網絡知識。
阿里巴巴?,兩面,offer,感覺面試官放水了,運氣比較好。只是具體崗位還沒有定,想做后臺,但是HR一直沒給答復,痛苦。。。
愛奇藝、網易游戲?,筆試掛。只能說自己太懶了,數據庫、http、正則表達式這些選擇題常考項一點沒看。。。
騰訊?,三面,結果沒出來,不出意外應該可以拿到offer,面試點不多但是很有深度。
百度?,三面跪了。一、二面也就是小學生水平,兩個面試官都說我基礎很扎實。三面本以為hr面,碎碎便便就offer到手。結果三面居然還考算法:自己實現inet_addr,寫了一個漏斗百出的錯誤代碼。。。socket listen的功能、原理。。。然后就沒有然后了,沒辦法實力不濟,怪不得人。
推薦資源
刷題網址?(建議非ACMer不要去刷POJ uvaoj這種的,難度太大了,浪費時間,而且風格和企業面試差別很大):
九度OJ(難度適中,可以先做)?http://ac.jobdu.com/hhtproblems.php
leetcode?https://oj.leetcode.com/problems/
geeksforgeeks算法?http://www.geeksforgeeks.org/fundamentals-of-algorithms/
geeksforgeeks 數據結構?http://www.geeksforgeeks.org/data-structures/
Cracking the coding interview?http://hawstein.com/posts/ctci-solutions-contents.html
100題系列(看看思路就行了)?http://blog.csdn.net/column/details/ms100.html
(上面的題要是都刷1、2遍,那么基本BAT就可以秒殺了):
書籍:
算法:
算法導論+劍指offer+編程之美+算法競賽入門指南+數據結構-嚴蔚敏(樹形排序和外部排序)
c/c++
effective c++、inside c++object,stl源碼分析、c++ preimer (這幾本是c++必看書籍,而且前三本至少看三遍以上,premier的話就當成查缺補漏的)。
c++反匯編與逆向分析(函數的工作原理一章是重點)、more effective c++,exceptional c++, c專家編程,c缺陷和陷阱、c和指針等等時間充足的話最好翻個1、2邊。
unix/linux
APUE ,時間充足可以完全看完,不夠的話把進程、信號、線程看看就行了.17章以后基本可以無視。
linux 內核有空可以找幾本書看看。
操作系統?概念。(進程調度,同步、內存管理、IO重點看,14章之后直接無視)
計算機網絡
UNP卷一: Tcp連接過程,I/O復用,客戶/服務器程序設計范式是重點。非阻塞IO也可以看看,其他直接忽略。
計算機網絡(謝希仁),面試專用,知識點講的非常淺,但是拿來復習應付面試剛剛好。看個2、3遍。
TCP/IP詳解:有深有淺,不過個人感覺時間充足可以做做實驗,研究各種報文數據,如果是應付面試的話就不用深究這些了。
數據庫、正則表達式、設計模式
這些東西要是精通的話能吸引人,了解的話筆試時也可以那分還是得看的。但是我一點沒復習,遇到這些東西我直接放棄(省了不少時間,當然筆試時就比較痛苦了,最基本的ACID都不懂),面試時好辦,直接說不好意思,這方面沒做過,面試官都很不錯,表示能理解。哈哈,這偷懶方式,給自己贊一個。
其他:
程序員的自我修養、深入理解計算機系統(一般般,什么都講,但是都講的不清不楚)
牛人:
董的博客(線段樹、區間樹等等介紹不錯,強項是big data)?http://dongxicheng.org/
懶惰哥(zju大牛,強項machine learning)?http://www.douban.com/people/45119625/
july(題目集錦比較豐富,可以擴展思路)?http://blog.csdn.net/v_JULY_v
面試達人(校友,各種面試題集錦)?http://blog.csdn.net/hackbuteer1
何海濤(劍指offer擴展版)?http://zhedahht.blog.163.com/blog/#m=0
it面試?http://www.itmian4.com/
針對跨專業學生的幾點建議:
1 實習!!!我們沒有項目,如果再不找實習,會被別人認為很外行,會嚴重遭到鄙視的。
2 研究方向,個人建議別去搞什么machine learning,這種東西雖然很火,但是如果沒項目,只是看書很難有效果。跨專業的最好還是老老實實的搞研發,就業面廣,而且研發壁壘相對較小。
3 如果是研究生,論文盡量提前搞定,我論文基本上憋2~3個月就出來了。然后專心找工作(如果遇到變態導師那就沒辦法了。)。找實習如果能到大公司最好,否則的話建議3月份開始找,做到6、7月份就回校復習,因為小公司的實習畢竟說服力不強,回校抓基礎是王道。
4 多溝通,身邊沒有志同道合的,就要從網上多認識點人,一個人悶頭學很容易方向跑偏。
詳細知識點
1排序
掌握內容:
3分鐘以內手寫代碼
遞歸方法的迭代形式
算法復雜度(最優、最差、平均)
算法比較次數
各種排序算法的穩定性,及不穩定的例子
排序算法大全
冒泡、選擇、插入、希爾、快排(遞歸+迭代)、歸并(遞歸+迭代+原址)、堆排、計數、基數、桶排序、位圖、二分查找。
競標賽排序、外部排序(K路歸并,敗者樹)。
其他
快排的Partition 和 歸并的分而治之思想。
比較排序算法比較次數的下限.
快排復雜度的推導(樹形結構)
2動態規劃
經典問題:
鋼條切割、矩陣鏈乘、最優二叉樹、fibonacci數列、
字符串相關:
編輯距離、最長回文串、最長回文子序列、回文分割、最長公共子序列、最長公共子串、行編輯問題,zipper(poj 2192??)。
0、1背包問題及其拓展問題:
0、1背包、部分背包、全然背包、多重背包、硬幣交互、子集和、子集分割問題。
其他:
字數組最大和、二維字數組最大和、最長遞增子序列、丑數
3搜索回溯
打印字符串的排列組合(有重復、無重復字符的情況)、騎士問題、迷宮問題、N皇后、數獨、子集和之差最小、質數環、電話號碼組合漢密爾頓圈、m著色。
4常見庫函數重寫
常見函數
atoi(v_july_v博客有示例,理解后默寫幾遍)、strcpy、strncpy、strcmp、strcat、strreplace、memcpy、memmove、memset、inet_addr(百度就掛在它手上了)
注意事項:
atoi、strcpy、memcpy估計是出現頻率最高的,至少手寫5遍以上。
1 參數NULL判斷
2 返回值char* void* (鏈式操作)
3 如果修改了dest指針,返回前一定記著保存
4 void* 一般不可直接操作,需dynamic_cast<char*>
5 指針相等性判斷
6 區間重疊判斷
5鏈表
基本性質:
節點個數、中間節點、倒數第K個節點、合并鏈表、單鏈表相交、環、翻轉單鏈表
進階:
單鏈表的 歸并排序、快排排序、插入排序、拷貝復雜鏈表、有序鏈表轉成AVL樹。
注意事項:
鏈表問題要特別注意NULL的判斷
技巧是二級指針(比較難理解,但是搞熟了面試時絕對加分)和dummy節點(簡單好用)
6樹
基礎:
樹的高度、深度、節點個數、葉子節點個數。前中后遍歷(遞歸+迭代),層序遍歷。中序+X序來構造二叉樹。
進階:
BST節點間的最大路徑和、LCA、判斷一個二叉樹是否為BST、判斷一個二叉樹是否為完全二叉樹、二叉樹的最短深度、二叉樹的最長深度、判斷same/symmetirc二叉樹、普通樹轉二叉樹、判斷一個數組是否為BST后續遍歷的結果
擴展知識篇:
二叉搜索樹(BST:按序輸出、查找、最大最小值、前驅后繼、插入刪除)
AVL樹(了解性質、旋轉操作、插入刪除)
紅黑樹(了解性質,和AVL樹的異同、插入、刪除后如何旋轉)
伸展樹(了解性質、應用、單旋轉,一字型,之字形旋轉)
trie樹(了解性質、應用,需要自己實現insert,delete,search)
B樹、B+樹(了解應用,性質,異同。如果能掌握分裂合并那就更好)
哈弗曼樹(了解構造過程,哈弗曼編碼,有空可以實現)
R樹(重要,筆試面試都出現了,構造、查找偽代碼要掌握)
后綴樹、線段樹、區間數(ACMer家常便飯,但是一般面試不會有這么難)
7圖論
最短路(Dijkstra+Bellman-ford+Floyd)、最小生成樹(kruskal+并查集、prim)
連通性判斷(無向圖、有向圖的強聯通分量)、DFS+BFS(拓撲排序:kahn+DFS)、判斷圖是否有環(無向圖、有向圖)、歐拉回路、路徑(無向圖、有向圖)。
其他:求割點、橋、島等等難度很大,如果不是奔著頂級公司去的基本可以不考慮,
8hash(不是很了解):
沖突解決(開鏈、開放尋址)、散列函數、一致性哈希
9零碎問題:
kmp、并查集 、約瑟夫環、catalan數、牛頓法求根號等等
10計算機網絡
OST七層、TCP/IP五層
IP層: 報頭內容、ICMP、ARP、RAPR協議、子網劃分、VPN和NAT
運輸層:作用、TCP的三次握手、四次揮手的過程和原因、TCP報文首部、編號與確認、Nagle算法,滑動窗口、慢啟動和擁塞控制、TCP狀態機(重要)。UPD和TCP區別。
11操作系統
內存管理+文件管理+進程管理
12IPC
消息隊列、FIFO、信號量、互斥鎖、條件便利、內存映射的應用+原理(如何實現的)。
生產者消費者模型(有空最好自己實現)
13阻塞\非阻塞IO 同步\異步IO
select 和 epoll的區別基本上每家公司,每個面試官必問。。。select poll epoll最好自己寫一些demo,因為實在是太常考了。
智力題
常見題型:看數字找規律、量桶裝水、稱球重、概率:等待時間問題、集合論、牛吃草問題、行程問題/相遇問題/鐘表問題??、邏輯推理問題、工程問題等等。
在給幾個網址吧:
http://blog.csdn.net/hackbuteer1/article/details/6726419
http://www.cnblogs.com/yutoulck/p/3635057.htmlhttp://blog.csdn.net/java2king/article/details/5906733
http://nathanyan.diandian.com/IntelligenceProblem.html
總結
以上是生活随笔為你收集整理的[综合面试] 跨专业大牛的IT求职面试经验分享以及学习知识路线图梳理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: grep、egrep、fgrep的用法与
- 下一篇: 【golang】Go语言学习-selec