面試網(wǎng)絡(luò)公司大廠都會被問到哪些問題
提到找工作一定離不開面試,而大廠的面試對于有些人來說很容易,對于有些人來說卻很難,那么如何才能得心應(yīng)手地應(yīng)對大廠面試呢?
知己知彼,百戰(zhàn)不殆
兵法有云,知己知彼,才能從容獲勝。我們要想應(yīng)對大廠的面試,首先應(yīng)該知道的就是大廠面試會問哪些問題,我們對應(yīng)準備才能得心應(yīng)手。
如果你是科班出身的話,那么恭喜你,你們大學開的課程,基本上都會被問道,因為那些就是構(gòu)成軟件開發(fā)的基礎(chǔ)。
如果你不是科班出身,那么我就給你介紹下計算機科學與技術(shù)都會學習哪些基礎(chǔ)課程。
沒有任何一個人是孤島,同樣沒有一個計算機是孤立的,而連接起它們的就是互聯(lián)網(wǎng),而大學里面有個課程就是計算機網(wǎng)絡(luò),它會講解數(shù)據(jù)是如何傳輸?shù)?,是如何封裝的,是如何路由分發(fā)的,它里面會有很多協(xié)議,這些協(xié)議都是為了更好地傳輸數(shù)據(jù)使用的,你需要加深理解它們。
程序=算法+數(shù)據(jù)結(jié)構(gòu),你可能經(jīng)常會看到這個等式,沒錯,等式的右邊就是計算機的兩門基礎(chǔ)課程,一個是算法,一個是數(shù)據(jù)結(jié)構(gòu)。
提到算法,很多人可能記住的只是排序算法,其實那只是算法的冰山一角,算法有很多,每一種算法都是為了解決一定問題而產(chǎn)生的,你需要能做到手寫各種算法,如果做不到,請做到為止。
數(shù)據(jù)結(jié)構(gòu)也是一門基礎(chǔ)課程,它也是非常重要的,我們的數(shù)據(jù)如何存儲才能更方便查找添加修改可以說是計算機的核心,而數(shù)據(jù)結(jié)構(gòu)就是解決數(shù)據(jù)如何存儲的,數(shù)組,鏈表,堆和棧,二叉樹,紅黑樹,B+數(shù),跳表,字典樹,圖,森林等等數(shù)據(jù)結(jié)構(gòu),你要做到可以手寫它們,其中有些可能會很難,但是如果這些不掌握,以后還會有更難的等待你。
如果你夠細心的話,你會發(fā)現(xiàn)99.99%的軟件應(yīng)用都離不開數(shù)據(jù)庫,而數(shù)據(jù)庫就是計算機課程里面的一門基礎(chǔ)課程。你要學會如何設(shè)計表,如何操作數(shù)據(jù)庫,你要對一門數(shù)據(jù)庫精通,知道它的底層設(shè)計邏輯,知道它是通過什么數(shù)據(jù)結(jié)構(gòu)實現(xiàn)的。最好你要掌握一個關(guān)系型數(shù)據(jù)庫和一個非關(guān)系型數(shù)據(jù)庫。
無論什么軟件,最后都是運行在操作系統(tǒng)上面的,所以操作系統(tǒng)也是一門基礎(chǔ)課程,學習這門課程,你不需要能夠開發(fā)出一個操作系統(tǒng)出來,但是你需要理解它的設(shè)計原理,理解程序是如何被執(zhí)行的,你要理解操作系統(tǒng)是如何工作的。最后,你最好有對linux操作系統(tǒng)有所了解,掌握一些基本命令行的用法,掌握一些腳本的編寫,記住,用過和會使用是兩個概念,你要做到熟能生巧。
學習了這些理論知識,你還不能做出一款軟件來,因為你還缺少一門編程語言。編程語言有很多種,你不需要也不可能全部精通,你需要做的就是精通1-2門即可,而c語言是我強烈推薦的,因為它更靈活,很多語言都是用c語言編寫出來的,學習c語言,更能讓你掌握底層的數(shù)據(jù)結(jié)構(gòu)和算法。
一個復雜的軟件往往是很多人才能夠設(shè)計開發(fā)出來,軟件開發(fā)不僅僅只有編碼。需求分析,產(chǎn)品調(diào)研,測試等等過程都是需要的,而軟件工程這門課程就會告訴你一個完整的軟件開發(fā)周期是怎樣的,設(shè)計和開發(fā)一個軟件需要注意哪些問題。
編程語言是如何設(shè)計的,如果你感興趣的話,計算機課程里面是有一個編譯原理的課程,學習它之后,你會明白編程語言是如何設(shè)計和工作的。會加深你對編程bug的解決能力。
投其所好,從容面對
不管你承不承認,每個人都是有喜好的,計算機大廠也是有它們的喜好的,它們喜好什么呢,那就是算法和數(shù)據(jù)結(jié)構(gòu),如何提升算法的能力,刷題是最直接有效的方法。有句話說的話,見多識廣,很多大廠的面試題基本來自于算法刷題網(wǎng)站或者是一些題目的變通,有些問題,如果你沒接觸過或者見過,你很難在面試那么短的時間里想到解題思路,而如果你見過的話,那么在回答的時候就能做到從容面對。
如果僅僅刷題就能進入大廠,那么你太小看大廠的入門難度了,想要進入大廠,你一定還要有兩把刷子,你需要對算法和數(shù)據(jù)結(jié)構(gòu)有更深入的了解。比如分布式算法有哪些,如何實現(xiàn),面對海量數(shù)據(jù),如何設(shè)計數(shù)據(jù)庫,如何優(yōu)化數(shù)據(jù)庫,高并發(fā)的時候,需要注意哪些問題,面對高訪問的時候,架構(gòu)如何設(shè)計,這些都是你需要思考和準備的。你可能沒有實戰(zhàn)的高并發(fā)經(jīng)驗,但是你不能沒有高并發(fā)的應(yīng)對策略,你需要架構(gòu)的能力。
都說面試造火箭,入職擰螺絲,話雖然這樣說,但是相對來說通過考察造火箭的能力,的確可以篩選出一些更有潛力的人,雖然可能有漏網(wǎng)之魚,但是只要大方向是對的,大廠就會堅持的。
心有猛虎,細嗅薔薇
無論你有什么遠大的理想和抱負,腳下的路要一步步走,永遠不要好高騖遠。
有些人很喜歡說一些網(wǎng)絡(luò)新名詞,顯得自己高大上,然而當你想要向他深入了解的時候,他卻不能說出個一二三,這樣的人是沒有長遠發(fā)展的,大公司也是不喜歡這樣的人。
手寫各個算法,自己親自實現(xiàn)各個數(shù)據(jù)結(jié)構(gòu),這些基礎(chǔ)中的基礎(chǔ)很多人感覺到無聊,但是萬丈高樓平地起,你只有把基礎(chǔ)打牢了,你的大廈才能屹立不倒。
總結(jié)
沒有人能夠隨隨便便成功,失敗了不可怕,被淘汰了不可怕,每次面試的時候沒有回答上來問題也不可怕,可怕的是你不吸取經(jīng)驗教訓,可怕的是你固步自封,總認為面試官問的問題沒有用。
記住,每次當面試官問你還有問題的時候沒有,你就可以讓他講解下你沒有回答上來的問題,認真聽講,三人行必有我?guī)煟阋欢梢詮闹杏兴斋@。