作為非計算機類專業的學生,如何通過BAT的技術類面試並得到offer?

目前,百度、阿里、騰訊是國內IT的三大巨頭,它們歷史不過十餘年,卻迅速壯大成為員工數過萬的大公司。
作為非計算機類(其他理工學科)的學生,學校還不錯,覺得自己在計算機方面可能有些天賦。想請教一下BAT或者其他大型IT公司的員工們,在短期內(半年到一年)如何迅速提高自己的競爭力,來得到BAT的工作?希望能提供一些可行的方法,無論這條道路有多艱難。


"可能有些天賦" 可能是不夠的。題主的題目問的是如果通過BAT的技術面試,其實BAT的技術面試面的當然主要是技術,talk is cheap , show me the code,所以我猜題主真正想問的可能是如果在半年到一年內學習技術,達到BAT的招聘要求,這樣「可能有些天賦」才能體現出價值,而且你是不是學計算機專業的也就不重要了。

接下來給題主打打氣,一個計算機或者軟體工程的學生,大一的時候幾乎沒有專業課,跟編程有關係的也就數學一門(題主理工科的這個不是問題),大三結束就參加實習面試,就說明這時候有些人就達到BAT的要求了。那麼大二大三兩年,花在技術學習上的時間有多少呢?我和小夥伴的經歷顯示,如果專註又勤奮的話,半年時間足夠了。我就結合我的學習經歷談下如何學吧,希望對題主有幫助,我是軟體工程專業的學生,但是前期比較學渣,大三一年惡補知識,大三暑假結束時憑藉運氣勉強混進BAT,菜鳥從菜鳥的角度給另一個菜鳥打打氣,求大牛輕拍~~

首先要學習的知識包括三部分,編程核心知識,編程語言,軟體工程。

編程核心知識包括 計算機組成和原理(主要涵蓋硬體邏輯和設計思想),操作系統計算機網路,數據結構,資料庫。這是我們學校大二學習的五門核心課,推薦書目我就不列了,網上很容易找到的。硬體和操作系統可以先學,網路和數據結構可以跟編程語言結合起來學,資料庫可以更晚一點,在需要用到的時間學。這個時間大概在一到兩個月。其實大二時候我比較學渣(當然後來也還是渣,只是大二是渣的巔峰),這幾門課從來沒聽過,期末時候每門課也就最後惡補兩三天,考個七八十混及格,還是大二暑假花了一個月又好好補了一下。

接下來是編程語言,個人認為,你至少需要學兩門,一門是C,另一門是你面試時的語言,C++,java,PHP,如果前端的話js。學習c語言是了解計算機的一些思想,基本語法的邏輯,還有學習數據結構中,會有一些演算法,自己用c語言寫幾遍,理解會更加深刻。另一門主要學習的語言,由你自己抉擇,個人推薦java,因為BAT每年招聘的java遠遠多於其他語言,而且基本語法和C比較類似,環境也簡單,初期學習成本相對較低。從0開始學習一門編程語言,我經歷的書單是:headfirst xxx → thinking in xxx →Effective xxx 。用Java舉例,headfirst java是本有趣的書,讓你快速建立對一門語言的興趣,了解一些基本概念,裡面有很多有趣的例子,如果跟著寫一遍的話,基礎語法也掌握得差不多,thinking in java比較系統的介紹語法和api,鞏固基礎很有用,effective java屬於進階,如何寫出高效的健壯的好看的java程序。其他語言如C++,也有這個系列,按照這個路線走差不多。三本書都很基礎,一個月時間綽綽有餘。關鍵是裡面的例子,一定要親手在電腦上敲出來。PS:不管學什麼語言,最好用這門語言,自己把數據結構裡面那些演算法都寫一遍,很有用。
編程語言除了語法和api,還有框架要學習,C++的mfc,qt,java的spring,Struts等等,只要用這個框架,自己寫兩個應用就好理解了,應付面試足夠,用框架寫應用花費時間1到2個月。

編程語言之後,是軟體工程,這個面試時要求不算特別高,但是基礎的得了解,需求怎麼獲取,體系結構設計,詳細設計,基本的測試知識,設計模式,這些在學習編程語言的時候,可以當成調劑來看,而最重要的是在做項目的過程中用心去體會,程序員的面試中,項目經歷是特別重要的,還是那句話,talk is cheap , show me the code,只有真正用心做過項目的人,在這個環節才能有話說。當然程序員還需要很重要的一個能力,就是團隊合作和交流,建議你練習時做的項目中,至少要有一個是團隊項目。

六個月時間,經歷上面三個方面的學習,非科班出身的學生,跟計算機和軟體工程出身的學生,沒有任何區別。如果你真的天賦異稟,還有充裕的時間繼續鞏固自己的技術,成為大牛,BAT不在話下。否則,你就得有一點運氣和技巧,通過BAT的面試,核心就一個詞,揚長避短。面試技巧可在知乎另尋搜索。

最後還有一件事,題主你確定真的想入這個坑么,程序員剛畢業收入相對其他行業算比較高,之後看個人發展,但是工作苦逼,但是的但是,真正熱愛的人會樂在其中,而據我感受,程序員是最熱愛自己工作的群體~~~
菜鳥處女答,獻給題主了~~~


看到樓主的問題,我就情不自禁地把自己珍藏多年的技術面試資料大全搬出來了,希望對樓主你有用

在線OJ及部分題解

  • LintCode - http://www.lintcode.com 。專門提供面試題在線評測的OJ,篩選比較方便,還可以在source處選擇cc150或者其他來源的題,有階梯訓練系統,不用擔心不知道從哪兒開始刷題。目前會根據系統locale選擇中文或者英文,評判時也比leetcode快,總之是比較贊啦。
  • LeetCode Online Judge - http://www.leetcode.com . 找工作方面非常出名的一個OJ,相應的題解非常多
  • soulmachine/leetcode - 含C++和Java兩個版本的題解
  • Woodstock Blog - IT,演算法及面試。有知識點及類型題總結,特別贊
  • Acm之家, http://www.acmerblog.com .專業的ACM學習網站 - 各類題解
  • 九章演算法LeetCode / LintCode 題解 - LeetCode / LintCode 答案查詢。上面的題解是專業老師提供的,代碼質量很不錯。

論壇博客

  • VisuAlgo - visualising data structures and algorithms through animation - 相當碉堡的數據結構和演算法可視化。
  • Data Structure Visualization - 同上,非常好的動畫演示!!涵蓋了常用的各種數據結構/排序/演算法。
  • POJ的部分題解 - Category: POJ | Beeder"s Blog
  • 專欄:演算法筆記——《演算法設計與分析》 - CSDN上對《演算法設計與分析》一書的學習筆記。
  • 演算法練習 | billryan - 本文協同作者yuanbin的刷題總結和筆記,求大神們輕拍,求大神們輕拍

書籍推薦

  • Algorithm Design (豆瓣)
  • The Algorithm Design Manual, 作者還放出了自己上課的視頻和slides - Skiena"s Audio Lectures,The Algorithm Design Manual (豆瓣)
  • 大部頭有 Introduction to Algorithm 和 TAOCP
  • Cracking The Coding Interview. 著名的CC150,Google, Mircosoft, LinkedIn 前HR離職之後寫的書,從很全面的角度剖析了面試的各個環節和題目。之所以叫CC150就是有150道面試題,除了演算法數據結構等題以外,還包含OO Design, Database, System Design, Brain Teaser等類型的題目。準備北美面試的同學一定要看。
  • 劍指Offer。英文版叫Coding Interviews. 作者是何海濤(Harry He)。Amazon上可以買到。有大概50多題,題目的分析比較全面,會從面試官的角度給出很多的建議和show各種坑。
  • 進軍矽谷 -- 程序員面試揭秘。有差不多150題。

其實我還珍藏了很多寶貴的面試資料,你可以加我的微信公眾號:ninechapter,回復「乾貨」獲取哦~


感謝邀請我回答這個問題。

這種找技術工作的問題,我應該回答很多次了。
也麻煩邀請我的人,邀請之前,先看看我的歷史回答?

我之前寫過一篇文章:如何找到滿意的技術工作
內容如下:

組裡很多人即將畢業面臨找工作,為了幫助大家,遂寫下這篇文章。

如果你想進入BAT,抑或拿到高工資,無論你的基礎如何,你至少要花三個月時間來準備簡歷、筆試題、面試題。

對於沒有項目經驗,沒有計算機專業背景,甚至沒有學歷背景的朋友,更需要花時間來準備了,建議半年以上。

1. 脫穎而出的簡歷

一份優秀的簡歷一定要有以下描述:


1.1 基本信息

姓名、手機、郵件這三個信息是必備的,郵件一定不要使用 QQ 郵箱,會顯得你很 LOW,建議用 Gmail 郵箱,尤其是 Android 開發者。

如果你有個人技術博客,一定要放上去,是加分項。

如果你沒有個人技術博客,可以放上奇蹟空間博客的個人頁面。對於放上咱們博客鏈接朋友,投簡歷之前可告訴我一聲,我還可以給你加上一些客觀評價,能在一定程度幫到你。評價內容根據個人在組裡表現而定。

如果路徑太長,可用短鏈接(網上搜搜短鏈接生成器就明白了),抑或用文字鏈接。


1.2 教育背景

學歷、專業、畢業院校、畢業時間這四個信息是必備的。

對於沒有學歷的朋友,也一定要說明,這是一個人誠信問題。

而且技術是靠實力說話的行業,現在很少有公司會介意學歷問題(我也見過高中學歷去京東、阿里、百度、騰訊的,關鍵還是技術能力,非學歷)。

如果這個公司真的在意學歷,你也沒必要去,因為你在這種公司里,升職加薪都會與你無緣。也就是說寫明這個信息,也在一定程度上幫助了你 PASS 掉這些公司。

如果你的教育背景非常出色,就放到基本信息下方。

如果你的教育背景不夠出色,那就放到項目經歷下方。


1.3 專業技能

首先要列出你擅長的技術,然後列出你了解的技術。

擅長的技術是你吃飯的本,你可以寫上熟悉二字,如果你只是初學者就寫可用該語言開發項目。

了解的技術一定要是自己真的學了的,別人問你,可答得上一二。

了解的技術如果是新技術,將會是加分項,有助於你獲取面試機會。


1.4 項目經歷

主要描述所在公司、職位、工作內容。

對於沒有項目經驗的人,一定要花三個月甚至半年以上的時間來寫一個項目。

項目不再多,一個就夠了,著重描述你在項目中承擔的角色,參與的工作量,學到的東西等。

如果你真的用心參與項目了,把這些東西都寫的清清楚楚,不可能沒有面試機會的。

如果能有開源的 Github 項目,那是相當加分的。我們在 Github 上新建了三個開源項目:ios-starter-kit、android-starter-kit、web-starter-kit,如果你有興趣參與開發,可聯繫我。

歡迎大家給咱們的開源項目標 Star,:D


1.5 個人特點

這個信息根據你自己情況來,如果你是非常熱愛技術的人,那就描述上你的熱愛。但光寫熱愛二字是不夠的,你得寫個事實來表明你的熱愛。

如果你只是想靠技術找個高工資的工作而已,那就別寫上熱愛了,後面同事相處是能看得出來你是不是熱愛技術的人。

永遠都得記住,做人要誠實,尤其是咱們做技術的,一旦你失信於人,將萬劫不復。

注意事項:

對於咱們技術學習小組的人,應該都用過 Markdown 了。

簡歷一定要用 Markdown 來寫,寫出來的簡歷非常簡潔利索。

寫完後,一定要生成 PDF 和 Word 版本,再將兩個版本一起發給對方。

PDF 版本主要給你將投公司的技術負責人看的,Word 是給公司 HR 用的。

因為大部分的技術公司都愛用 Mac 開發了,發 PDF 版本便於對方查閱。你發 PDF 版本,可以為你加分。

2. 閱讀大量筆試題和面試題

有的公司會出筆試題,這也是為了篩掉基礎差的人:基礎差的人,在工作中很難去解決技術問題,而且解決問題速度非常慢。

如果你真的想從事技術工作,一定得打牢自己的基礎。要不然你後面在工作上遇到了問題,不知如何分析如何下手。

因為熟悉大量筆試題和面試題需要花費相當多的時間,對於後面要找工作又不想因為沒有完成技術文章而被強退的朋友,可以寫筆試面試題文章來完成每周撰寫技術文章的任務。

一個筆試題/面試題,一篇文章。

當然,不能有重複,同時文章不能是簡單的答案,還需要自己的分析和理解。搞清楚題目涉及的知識點是什麼。


3. 其他

3.1 不要被 BAT 情結蒙蔽雙眼

很多人都有大公司情結,覺得去大公司才能學到東西。

其實不然,要想學到東西得跟對老大。

咱們這些做手下的,打交道最多的就是部門的老大。跟著一個好老大,不僅可以學到最新技術和管理方法,還有助於你的職業生涯。

比如說你的老大要跳槽,一般都會帶走表現最好的手下跟著跳過去,這是非常非常常見的現象。

從這一現象,你也應該明白,不管在哪做事,一定要認真仔細,做的好,別人都能看在眼裡,有機會都會來找你的。

記住一句話,機會永遠都是給有準備的人。

回到最初的問題,為什麼不要有大公司情結呢?

主要是這些大公司也有很多濫竽充數的部門老大:管理能力差,不喜新技術。

如果被你碰到了,而你自己本身又沒有自制力和主動學習的能力,那麼你的技術能力將會停滯不前。

近朱者赤,近墨者黑,在技術工作里體現更甚。


3.2 工作是雙向選擇

工作雖然是別人給了,你才能有。

但千萬千萬不要因多次面試失敗,來了一個offer,馬上就同意的心態。

一定要分析公司人員結構,一定要分析公司產品,一定要分析部門老大。

分析公司人員結構,可以知道你是否喜歡這個公司。

分析公司產品,可以知道這個公司能做幾年。

分析部門老大,可以知道你能否在這個公司提高技術能力。

記住,眼光都要放長遠點,一定要去有利於你技術成長的公司。


3.3 要堅持學習

找到工作了,也別放棄學習新技術,說不定哪天你現在擅長的技術就沒有工作需求了。

我是真正經歷了 Symbian 的沒落,Android、iOS 的崛起。

這兩件事情是在同一時間發生的,而我當時就處在那麼一個環境,給我帶來極大的影響。

到現在,我也一直在不斷的學習新技術。

========= 請記住,重要的是挑老大,而不是挑公司 ========
文章提到了這點。

但我還是想重複下。

BAT 只是一個光環,如果你非鍍金,而是想增加自己技術內力,請去挑好將來會帶你的老大。
BAT 的也有很多老大很渣。

對於提升自己技術內力而言:

  • 公司不重要,老大才重要!

請謹記。


根據我同學的面試經歷來談談百度和鵝廠吧


先說一下準備工作,目前騰訊不太清楚,百度還是以校招和內部推薦為主,實事求是的講一般外界人士想面試也沒什麼門路,基本都是直投HR郵箱,所以首先有一份高大上吸引眼球的簡歷能讓HR看到你,否則你連面試都參加不了,當然這個很大程度看運氣,很多人精心準備的簡歷滅在女性HR的大姨媽上的事情也不是沒有。


以下講故事,不過畢竟是幾年前的新聞了,可能未必會有用。


同學A,畢業時面試於百度,應聘後台攻城獅,主要考核問題是計算機基礎知識,比如堆棧,數據類型,數據結構的優劣,夾雜著一些演算法,請求,協議之類的實戰性題目,說難不難,不過實際面試時還會就這些題目進入一些深入問答,據我同學說最後是死在經典的「井蓋為什麼是圓的」這道題目上,他回答我們學校的井蓋都是方的,詳情未知,反正沒過。

同學B,畢業四年後靠內推面試於百度,應聘百度首頁前端,由於有工作經驗,基本不太會直接問基礎知識,大多數問題以前端開發時遇到的實際問題為主,夾雜了大量的辣雞代碼調優問題,涵蓋面包括演算法,數值傳遞,代碼邏輯,實際業務等,可能是比較對眼,上午10點面試,不到12點就順利通過拿到offer了,據本人說,面試難度還不如寫簡歷。


同學C,畢業兩年後面試於騰訊,應聘北京微博部。據本人說,難度高於高考,全程沒見過HR,去了直接拿題開做,從基礎知識到寫代碼到代碼調優到演算法到架構全部涵蓋,那年頭架構還是個稀罕玩意,但凡有點邏輯的都可以稱作架構,面試時說參與過某公司的某架構很拉風,後來靠跟技術扯了一下午某開源論壇項目二次開發的框架勉強過關,從此患上大型互聯網公司面試恐懼症。


想了想比較有代表性的大概就這三個,其他的都很普通,偶爾會有HR一面(那時候應聘工程師有HR一面的情況比較少),技術面試基本就是常見題目,然後就題目進行下深入的溝通。主要難度在於能不能參加面試,一般來說能參加面試的話通過的概率還是不低的(相較於絕大多數只要投簡歷就會面試的公司來說)


總的來說不考慮HR面試和簡歷過關的話,技術面試還是比較簡單的,就是考驗硬實力,幾乎所有題目都是經典題目的變種,而且近年來大型互聯網公司從來沒聽說過有那種「短時間無限量數據的消息隊列」或者「請給出旅行商問題的最優解法」這種違反人類審美極限的腦殘題目。


至於HR一面,只能講下我悲慘的微軟一面不合格經歷。


某年參加微軟面試,HR一面,不幸陣亡。首先沒有筆試,但是問了很多奇葩問題,比如給你四個莫名其妙的辭彙讓你想有什麼聯繫,正確答案我不知道,反正我知道「抱歉我對科學沒法證明的問題沒有任何看法」這個答案是萬萬不可的。另外也會對你曾經經歷的項目進行一些談論,其他的不清楚,但是對於「你們的項目出現過什麼比較嚴重的問題,如何解決的?」這個問題,我可以給出一個絕對不合格的答案,因為這個答案是我說的,答案如下:「沒經歷過什麼太複雜的問題,畢竟都解決了也就不算事了,至於沒解決的問題我目前還沒發現」。可能HR不太喜歡我這種沒情商的人吧。


英雄不問出身,沒人規定互聯網公司非得找會寫代碼的程序員……

比如我們這有個學心理學的博士,把當年的一句玩笑話做成了今天的阿里雲;又比如阿里巴巴有位教英語的老師……

說說我們剛入職的一位同學吧,這哥們剛剛入職了阿里人工智慧核心團隊iDST。

這哥們是不是看起來挺像程序員的?但事實是,他是學物理的!!

說起物理學,這幾年也是有點艱難,不止選物理的學生數量日益減少,新高考政策里更是要拋棄物理,物理學界表示很心塞!你看,連獲得獲得萊比錫物理學博士學位的德國總理默克爾都轉行了…(註:1973年至1978年,默克爾在原民主德國萊比錫大學攻讀物理學,1978年至1990年在原民主德國科學院物理化學中心研究所工作,1986年獲得物理學博士學。)

但是!要說說我們這位新同學了,他叫馮津偉,是前Polycom聲學設計和信號處理首席工程師(Principal Engineer),擁有十餘項美國專利,大部分已產品化。他曾主持開發基於麥克風陣列的視頻跟蹤系統,即在多人視頻會議時,攝像頭能基於方位和距離,精準定位發言人,產品創新性引業內效仿。

11月30日,馮津偉博士正式入職人工智慧核心團隊iDST,將負責語音交互設備端的聲學設計和信號處理研究工作。

據說馮津偉博士面試的時候是這樣的:

馮博士在聲學設計和信號交互領域頗有建樹,美國專利拿到手軟,考慮到阿里在智能音箱、互聯網汽車、智能客服等領域的研發投入,自然是歡迎馮博士這樣的專業人才。

其實在阿里巴巴,除了這位聲學專家,還有專攻量子、結構工程、核物理等等好多非互聯網計算及專業的專家研究員。

比如開頭說到的王堅博士,又比如北京大學應用數學博士的華先勝,現在是視覺識別和搜索領域的國際級權威學者,在國際會議和期刊上發表論文250餘篇,擁有50餘項授權專利。在2016年加入阿里巴巴iDST科學家團隊後,華先勝帶領阿里雲的視覺計算(Visual Computing)團隊,專註於視頻圖像分析、識別和搜索等領域的AI技術研發。

而從貝爾實驗室走出來的基礎研究員——謝崇進,曾經從事的是光纖通信系統和網路技術研究工作,並三次獲得貝爾實驗室主席獎。現在人家是阿里巴巴的首席通信科學家,負責阿里巴巴數據中心光互連和光網路技術的研發、規劃、設計和實施。

要說當下最尖端、神秘的技術,量子通信絕對算一個。「趕時髦」的阿里巴巴成功邀請到了量子技術大牛——施堯耘。作為最新加入阿里雲的科學家,施堯耘在美國還有著量子科學相關的多項專利,還曾在2004年獲得美國國家科學基金會頒發的「職業成就獎」(Career Award)。

最後開一個傳送門:職位搜索 - 阿里巴巴集團招聘


The top-coder website can be helpful. You should look up similar posts in Quora to get some tips on how to get started. You are not the only person in this position, so do not worry too much. Another useful website is Glassdoor. At the very least, your past background should not be the issue that hinders your admission to these companies.


咳咳,我認識的,三個男生,都是非計算機專業出身,
A是本科開始對編程感興趣,之後發自內心的熱愛,除了打遊戲,陪女朋友之外的時間都花在研究代碼上面,我指的是研究,
看各種演算法,鞏固數學,似乎要編程厲害數學要非常厲害吧,我猜的
每天都必須碼代碼
之後,早早開始準備,從微軟筆試面試題開始各種,像考試之前複習一樣各種刷題,然後找出自己的不足,繼續學習……作為旁觀者,我覺得他對代碼的喜歡程度非常變態,若他不成功簡直沒天理。後來他終於去bat實習,回來之後意識到自己與專業出身的人的差距,又恢復以前的狀態,碼代碼,學習,再找差距。當然,他畢業之後順利進入bat工作,至今依然保持以前的習慣。

B是數學非常好的那種,自學編程一學期,後來去一家小公司實習,再後來,畢業進了bat,嗯,他應該屬於有天賦型的,論數學好對編程的影響?

C屬於,一直在碼代碼,卻一直心不在焉型,去了小公司實習,被a和b激勵了一把,臨畢業前,沉下心來,補了一段時間,終於找到碼代碼的激情,最後也去了bat

沒錯,要麼有天賦,要麼有熱情堅持到底


《計算機網路》《數據結構》《操作系統原理》leetcode刷題 哪怕沒學過安卓,面試官也有可能因為你非科班基礎比科班一樣甚至更好而青睞你,畢竟對於應屆生,基礎和潛力更重要


我還在上學,只是聽其他找工作的師兄這樣說,說的不好請摺疊。
你已經有目標企業了,那你能不能更明確下來具體做哪個職位?如果能的話,就要打聽這個單位的這個職位有哪些要求,筆試面試會問到哪些(那些要求和筆試面試包括,c,c++,php,html,java,sql,linux,我能力有限只能想到這麼多,只是舉例,具體內容要你自己問的)。問來了以後,根據他想要你會的東西惡補,師兄說的就醬。

要是說的不對摺疊我吧!


Make project,Prove youself


作為外行,個人覺得,你至少要讓他看到你的天賦。譬如你以往在計算機(C語言或者其它)方面的努力,以及一些成果。C語言是一切計算機語言的基礎,接下來學C加加什麼的都很好上手的吧。
至於學數學的,這可能會是你的優勢,據說計算機行業特別喜歡數學專業的學生,我至今不明白。
公司也會需要你這樣有思想的才子。祝好運!


紙上談兵:
公司面試人員找的是自己的同事,通常是一個小組裡面的姣姣者或者就是組長經理部長等上司來面試候選人。

第一,候選者必須是一個有眼緣的人。如果人家看你就覺得彆扭,根本沒戲了。彆扭的原因可能是穿著打扮,談吐表現,地域黑,等等。

第二,候選人要能和目標職位匹配。能勝任職位要求,甚至是超越職位要求。

第三,對面試人沒有威脅。比如候選人可以輕易取代面試人的位置。

第四,既然是非CS科班出身自己可以要求的適當低一些,機會就高一些。


《程序員面試寶典》


推薦閱讀:

珠海這座城市怎麼樣?

TAG:互聯網 | 面試 | IT公司 | 個人成長 | IT行業 |