秋招又要開始了,當了好多年某廠面試官的我,也說說斬獲大廠offer的套路

2020-08-12 16:19:16

秋招又要開始了,又有好多小朋友要找工作了,那麼作爲11年前校秋招混進某大廠,從此接着混了11年而且當過好幾次校招面試官的我,還是可以來聊一聊這個話題的。下面 下麪就針對技術類崗位的問題,聊一聊大廠需要什麼樣的技術人員。

       就校招本身而言,最重要的是看一個人有沒有潛力,那麼從潛力的角度上將,你的技術掌握得怎麼樣,牢固不牢固,決定了你未來的培養上限以及培養成本。如果想通過校招混大廠大廠的技術性崗位,下面 下麪幾點就是你應該在大學期間打下牢固基礎的。有了這些我們再聊點其他的。相信做到下面 下麪這些,無論哪個廠都會考慮要你:

      1.演算法基礎,大廠的筆試題就沒有,別的不說,演算法必須玩兒得溜溜的,演算法導論還是要看看的,ACM的題或者是leetcode的題目你必須要刷得有一定水平吧。對了,大學參加點演算法比賽,如果拿點獎,超級加分項。演算法這個問題,個人看來雖然算套路,你不想被套路,那還是刷題套路考卷吧。爲什麼如此重要?因爲很多經典問題的線裝本就在這裏,經典問題你都解決不好,還指望你能靈活變通?

      2. 數據結構,程式=數據架構+演算法,這個應該聽過吧?程式碼的靈魂之一了,合適的數據結構配合合適的演算法,是解決問題的根本之道。也不要求你多了,時間複雜度和空間複雜度的問題,必須給整明白了。陣列,鏈表,這兩個基本的結構搞懂,加以創造,平衡二元樹,紅黑樹,雜湊表,堆,捅,圖,這些結構用陣列和鏈表的方式分別去創造下,自己實現下,增量因子設定多大,爲什麼要那麼大什麼的破爛問題也要關注。

      3.計算機組成原理, 至少《計算機組成與設計》至少大學要看一遍吧,不說原版,中文翻譯版還是要搞一手噢?

      4.計算機網路,這個搞懂幾個層是啥,TCP/IP的三次握手,四次揮手過程,爲什麼要這樣設計,抓包怎麼抓,基本還好了。

      5.操作系統,《操作系統――精髓與設計原理》什麼的還是看看吧,手動實現個建議版本的linux內核,相信記憶體分配、排程、進程、執行緒這幾個點,着重理解下,相信大學的你只要看了些linux內核的書籍,大多數內核程式碼你是看過的了。

      6.數據庫:不光要會寫sql,幾大範式定義概念搞懂。數據庫事務的ACID總能扯明白吧?隔離層級分別保障的粒度,和依然存在的問題你得知曉吧?更重要的是,你得知道sql得優化和套路。查詢優化策略,db層級的優化考慮你是大學生,不太會問題。這年月也不想要求你oracle了,但是主流的MYSQL的儲存引擎之間的區別,你得知道吧。索引你得知道吧,這個是個比較廣泛的話題噢,索引原理,索引數據結構與演算法,爲什麼會採用這些索引?索引優缺點。都起碼知曉下吧。數據庫事務的實現方式你能知道一些嗎?二階段提交、三階段提交你知道不?看你個人深淺了。

      7.編譯原理:記得有門課程,如果實現一個簡單的程式語言,這個都有搞過吧,各位985的童鞋們?翻翻去,別忘記了。別覺得難,也別看不起,你要是真認了我也就放心了——至少這個小夥子處理字串的能力很強,AST都能搞搞了,日常的字串資訊處理問題應該不大的。

       8.程式語言:由於筆者主要從事java方面的技術工作,java類技術崗位,從來也在各個廠商的名額中佔有較大份額,我們就談一談這方面的心得體會,包括不限於可能泄露點兒面試的祕密。

      a.集合方面:map,set,list的區別概念,你總該曉得吧?你看數據結構重要不?我問你點具體的實現類簡單點的就HashMap HashSet ArrayList,看你能扯多少,要是能行的話我們換點稍微有意思的話題HashTable,CurrentHashMap,TreeSet,LinkedHashSet,LinkedArrayList,BlockingQueue及其各種實現看你能掰扯幾分了?

     b.IO方面:BIO\NIO\AIO你有能知道多少呢?這個話題可就多了也見深淺了,話題也開放了。基本的IO操作,到實現機制 機製、設計模式乃至操作系統的各種排程我都可以和你聊一聊,也順便可以和你扯一扯mina,netty,Grizzly,聽沒聽過,玩沒玩耍過,相信很快能摸出你的深淺。

     c.多執行緒:你以爲這個你能跑得掉?執行緒的生命週期,同步非同步的區別,什麼時候需要同步,什麼時候需要非同步,執行緒的排程方式,聊聊併發程式設計,爲啥要併發,怎麼去併發,你處理了哪些併發問題,你能沒經驗,不過沒關係,問問還是可以的。

     d.虛擬機器的那些事兒:都搞java了,虛擬機器的一些東西你總得知道吧?JVM的記憶體模型,垃圾回收機制 機製,各種機制 機製下的垃圾回收器怎麼工作還是知曉些吧。JVM位元組碼那個太苛刻了,不要求你,但是你有真功夫,大家聊聊還是可以的。

    e.一些基本的東西你還是要有吧:http協定、https協定,dns解析過程、servlet是個什麼東西?生命週期如何?request/response區別,session/cookie區別實現機制 機製,redirect/forward的區別你能給簡單講講?

    f.程式設計框架:web類的框架執行流程總得講一下吧,比如SpringMVC是如何工作的?你自己實現個web框架可以還是不可以?怎麼做,可有思路?既然是Spring了那麼IOC\AOP的實現原理怎麼來的,bean的作用域有哪些,務傳播機制 機製,隔離層級,基本還是要問問的?反射,代理怎麼回事不可能搞不清楚吧。代理的幾種方式JDK的cglib的aspectJ的,你又只多少?拋棄了框架你自己實現基於類的代理有門麼?mybatis聽過沒?不管你聽沒聽過反正jdbc那些事情,數據庫連線池的那些事情,我們有得聊,只要你能勾起我們的聊天興趣。

       g.通用性質的一些東西:大名鼎鼎的apache你知道嗎?web伺服器,應用伺服器類的區別你知道嗎?ngnix玩耍過沒?ngnix你都用來幹了 乾了些什麼?快取可有聽過?怎麼來玩耍?從瀏覽器端一直到後端的各層快取該怎麼來玩耍?策略又是如何來定的?分佈式快取可有聽過?memcached,redis可有玩耍過總之話題很多,不一而足。

      h.分佈式的一些概念:你可知曉爲啥要分佈式?分佈式有哪些經典問題?簡單點的如何實現應用無狀態,全域性唯一ID(莫要拿什麼雪花演算法之類的爛大街的來扯,要有點實際意義的),負載均衡有沒有概念?如何做?如何去做高可用?如何去保障分佈式環境下的一致性問題?訊息中介軟體玩耍過沒有?知不知道都有哪些,實現區別在哪裏,用它幹嘛去?分佈式的環境下如何去保障服務的可靠性?如何面臨雪崩問題?如何面臨穿透問題?包括但不限於spring cloud的相關話題,都解決了哪些分佈式方面性的問題,如何解決的,策略有哪些?問題多的是,看你有多少深淺了。

        當然,你的腦袋也不要死,不能僵硬,再賣你點套路性的問題——給你一個大檔案裏面全是數位如何去完成排序?很多人會想到歸併排序,各種演算法各種結構,這些都沒啥問題,都是基本分,有沒有想到這個檔案怎麼讀、怎麼寫,讀到哪裏,寫道哪裏,你就沒想過讀取後寫到不同的機器,然後不同的機器跑一樣的演算法然後合併結果,最後輸出?對的,這個問題能想到後面的,至少你可能瞭解分佈式檔案系統的套路和思想——hadoop,hbase,hive,我們看看小夥姑娘功夫咋樣,是不是真有貨,是不是真有潛力?

      9.專案:專案這種事情,基本時開局一張圖,剩下全靠吹,學校裡的一般沒啥含量,專案呢也就那樣。你就搞點重複發明輪子的事情,找個開源點的牛x一點的專案,研究研究,搞懂原理,自己實現了一套,然後講xxx我也是做到過的,還壓測過balababa.事實上,你只要做過,在這個過程中,你甩開很多老猿都正常!當然,你要是跟着很牛x的導師,做了很牛x的專案,這個就另說了。你也不需要看這個了。

      10.英語: 國內的大廠少有要問的,但是作爲一隻猿人,「掃文件」的功夫會決定你的成長,中文的要會掃,英文的要掃得更溜,這樣才能 纔能接觸到技術上的那口鮮,如果還沉迷看某些培訓視訊,那不要怪大廠給你關門,你就算進去了大概率被淘汰走不遠就是你自己的事情了。

     11.招聘資訊獲取:如果你的學校不好,不是全國那幾個知名學校。那你要時刻關注了噢,那些大廠在啥時候招聘,在哪裏招聘,你要搞懂了哈。要不然你火門都沒摸到,別個已經結束了哈。不要怕不在自己學校,你去別人家當麪霸又有啥不可以,尤其是二本,三本,這幾乎時你唯一的出路了。每個廠喜歡問些啥玩意兒,面試題你不看下噢?現在資訊氾濫,你別管校招社招的題都看看總不壞吧?再說春招和秋招的區別你可懂?硬實力不夠,軟實力來湊,還有個小門叫實習生哈。

      12.社交能力:這個能力纔是最牛b,最重要的大學時,多混混知乎或者做做自己的公號,認識幾個大廠的朋友不是難事,他們雖然人到中年,容易被後浪拍死,但是他們往往就是某司面試官。你要是跟他們熟了,本事也過硬,賣身做廠奴這種事情還不是分分鐘?再告訴你一個事實——不管你愛聽不愛聽,我們團隊有權利選擇和團隊喜歡的人在一起工作,不分社招秋招,統統適用。

      以上說了很多,都可能是面試的點,看上去可能有些難,但是大廠嘛之所以叫做廠,那是肯定有些原因的。如何拉開差距,提高你的競爭力,你需要有自己的一些特點。也就是說,基礎在水平線上,某些點你得有一技之長。

      別找學校不好的藉口,答主三本畢業,也是畢業進了某大廠混的,至今11年了,也算經常麪人了。學校不好的朋友可以看看。誰說三本生就一定沒機會呢?