首先介紹一下自己,本人是非985非211普通一本的CS專業畢業,好在軟件工程師對于學校的排名要求不是特別高,更多的看你自己的努力,愿不愿意付出。從大三開始努力刷題一年多后,我終于拿到了一個靠譜的offer,雖然不是什么BAT,但也很滿意啦。 扇貝的面試分小作業和面試。我的面試是在一個下午完成的,一共三輪,分為兩輪技術面和HR面。
面試官問的面試題: 面試前小作業
投完簡歷篩選過后,你會收到一份郵件要求你做一個小作業,時間是一個星期以內,小作業實現功能后就能去面試了。
我的題目是要求寫一個chrome插件。
這種小作業的題目都不會太難,大家提交之前也一定要使功能得到實現,但請切記一定要自己寫這個小作業,因為后續的面試中會問到小作業相關問題。
第一輪技術面
第一輪面試各個公司都大同小異吧。我第一輪的遇到的面試官特別友善,一上來就讓我自我介紹。套路完了以后就開始出題了,都是lintcode原題。所以在回答的時候是胸有成竹的,在敲代碼的時候是美滋滋的。
第一題是給你提供了一段英文語料,要求用c++將文本語料中的拼音和英文分開。
題目描述:http://www.lintcode.com/en/problem/word-break/
參考答案:http://www.jiuzhang.com/solution/word-break/
這道題不用編程,直接回答。回答完后,面試官會對你的回答中的不足提出他的看法,也會問你還有沒有別的思路。
第二題是一道英文算法題,大意是給定一個整數數組,找出兩個不重疊的子數組A和B,使兩個子數組和的差的絕對值|SUM(A) - SUM(B)|最大。
題目描述:http://www.lintcode.com/en/problem/maximum-subarray-difference/
參考答案:http://www.jiuzhang.com/solution/maximum-subarray-difference/
這道題要求編程,雖然這題見過也刷過,但面試畢竟是緊張的,而且敲代碼的電腦沒有C++語言,只能用JAVA編程。敲的時候一不小心敲錯了一個地方,面試官就在旁邊還會幫你指正出來,但是我的思路一直在線,所以也得到了最后的正確答案。
代碼敲完以后,面試官針對我的簡歷特別是我做過的兩個項目提出了一些細節問題,這部分就要看你自己當時做項目的時候實踐的到底怎么樣了,還是挺考察自身知識儲備的。
第二輪技術面
這一次的面試官相比第一次明顯要嚴肅很多。先是給我的小作業指出了一些問題,然后問我有沒有新的思路,不得不說這部分是我面試中回答的最磕磕巴巴的地方,當時交上去自認為還不錯的小作業后就再也不想了,導致面試場面一度有些尷尬。
面試官雖然看上去很嚇人,但還是放過我了繼續出題。
問有1000瓶水,其中一瓶有毒藥,已知一只小白鼠喝過毒藥后一天之內會死亡,現在給你一天時間,求最少需要多少只小白鼠才能判斷出哪瓶是毒藥。第一題很簡單,二進制思想,答案是10。第二題是在第一題的基礎上,把時間從一天改為兩天。稍微思考一下也不是很困難,三進制的思想,答案是7只。
第三輪HR面
基本上看到HR的小姐姐就知道offer基本是穩了,小姐姐問了幾個很基本的behavior question后就開始向我介紹公司情況和未來規劃。
面試結束。
總結
* 一定要多刷題,扇貝作為一個不是那么知名的公司而言,出的題目還是有些難度的。如果你刷的題目不夠多,是一定會慌張的。平時我習慣在lintcode上刷題,它比別的刷題網站的題目要全。網站的 BAT 精選面試 ladder特別好用,從大三開始這一年多一路從簡單題刷到難題,到現在因為題目刷的夠多了拿到offer,頗有一種打boss通關的感覺。我刷完題會再在 ****www.jiuzhang.com/solutions (http://www.jiuzhang.com/solutions)****上對答案,對答案的網站是我做不出題目找答案的時候偶然間發現的,沒想到lintcode上每一道題在這里都能找到答案,簡直完美。
* 小作業和做的項目很重要,需要你自己在準備面試的時候去細挖細節,自身的知識儲備很重要。
* 感覺扇貝不是很介意你面試的時候的結果得到最后的解決方法,但是思路一定要對,要有足夠的編程能力和熱情很重要。
在這里好好寫了一篇面經紀念自己拿到的第一份offer,也祝所有和我一樣雙非的同學們努力刷題,得到自己想要的offer。