1. 程式人生 > >歷經兩個月的秋招,結束了,談談春秋招中一些重要的知識點吧(本科+後臺+騰訊)

歷經兩個月的秋招,結束了,談談春秋招中一些重要的知識點吧(本科+後臺+騰訊)

歷經兩個月的秋招總算是結束了,從七月份開始複習秋招相關知識,到八月多開始筆試、面試,到九月下旬的秋招結束,在筆試面試的這兩個月裡,還是挺累的。這篇文章就說說秋招這段時間的收穫以及給對於明年要參加秋招的同學的一些建議吧。

一、最後去的公司

對於我來說,這次秋招算是滿意的吧,找到了想去的城市(深圳)以及公司(騰訊),我投的崗位都是後端開發。在之前春招找實習的時候,人生的第一次獻給了騰訊,那時候沒啥面試經驗,感覺傻傻的,沒看過的可以看我之前寫過的文章嗯,春招兩次騰訊面試都掛二面了,分享下我失敗+傻傻的面試經歷。

在秋招,騰訊也是我第一家面試的公司,感覺還是挺有緣的,8 月 14 號接到了騰訊面試官的面試預約,當時突然有點後悔,感覺自己應該晚一點投,因為騰訊的提前批是 9 月 12 號才結束,正式批 9 月 26 號開始。感覺當時還有很多沒複習,想晚一點再面試。後來,我才知道,我錯了,真的是越早投越好,千萬別等到正式批或者提前批即將結束才投,那個時候投,真的會錯過很多機會(至於為什麼,後面會說)。17 號開始了秋招的第一場面試,到 8 月底面完了所有流程,9 月下旬出才收到面試結果。下面談談這次秋招的感受吧。

二、關於我

可能沒看過之前我的文章的,很多人還不知道我。這裡我簡單介紹我的背景吧。

我今年大四,大一學的專業是木材科學與工程,後面轉專業到軟體工程,老家是廣東的某個 5 線城市,在廣州這邊讀大學,當然,是某個個雙非大學,至於是哪個?學校裡有養神獸的就是了。

可能看我文章的讀者中,很多人覺得我很厲害,說實話,其實我還是挺菜的,在校期間沒有參加過任何比賽,沒有拿過任何獎金,扎心了(涼了,大神的形象暴露了)。所以這次能夠拿到大廠的 offer,我覺得得歸功於我之前對計算機基礎知識以及演算法學習。想拿大廠 offer,基礎知識 + 演算法必須重視。

三、基礎 + 演算法 + 專案

1、關於基礎知識

秋招的競爭還是非常激烈的,如果你想要在秋招中拿到滿意的 offer,那麼從現實開始,就要把計算機基礎(作業系統、資料庫、計算機網路、Linux)、演算法學好,特別是演算法,不容易臨時抱佛系,是一個長期積累的過程。

對於大廠,比起專案,它更加主要你的基礎能力是否紮實吧。記得騰訊一面的時候,面試官就雜湊表這個問題問了我有二十分鐘,從剛開始讓我用 C 語言來設計一個雜湊表,後面問我如何設計 hash 雜湊,怎麼樣設計更高效,怎麼樣設計能夠最大程度減少碰撞,是否要動態擴容等等。一系列問題,我都按照自己的理解回答了,有些引用 redis 、 hashmap,並且我都舉了一些例子。這個問題回答之後,感覺面試官有些驚訝,問我是否研究過 redis 這些框架的原始碼等。感覺這個問題回答之後,面試官對我更加感興趣了,那場面試問了 90 分鐘,基本把所有基礎知識都問了。

所以我覺得,對於秋招,理解常見資料結構的相關設計,為什麼要這麼設計,實在是太重要了,可能很多人都知道連結串列、樹、雜湊表等,但被深入一問,可能就不懂,不知道為什麼要這麼設計了。

這次秋招,被問的最多的就是作業系統、計算機網路、MySQL了,雖然我面試的是 Java 工程師,但是很多公司並沒有問我 Java 相關知識(ಥ_ಥ),不過這和一個公司的技術棧相關吧,像我面試的 騰訊,位元組跳動,shopee,小米等,公司的主要開發語言不是 Java,所以這幾個公司的面試,一個 Java 相關的知識點都沒有問過我,反正我是哭了。不過這並不影響我的回答,因為這些計算機基礎知識,我很早就在準備了。

所以對於要參加面試的同學,千萬別把自己吊死在某個語言上,語言只是一門工具,而應該多花一些時間在一些通用的知識上,例如 sql + Linux + 演算法 + 作業系統 + 計算機網路。

當然,如果公司的主要語言是 Java 的,還是會問很多 Java 相關知識的,例如我面試京東,蘑菇街,阿里的時候,就問了很多 Java 的知識,像京東,蘑菇街,cvte 就沒問過我計算機網路、作業系統這些知識。

所以說,不同公司,側重點還是不大同的,但是,對於 BAT 這些大公司,基礎知識 + 演算法 是必問的。

2、關於演算法

如果演算法學的差,會錯過非常多非常多的面試機會,會很難過筆試這一關,秋招的筆試,反正我一直被虐,感覺筆試的難度還是很大的,自己一個人做筆試,想要全 a,還是非常難的。筆試題目一般是選擇題 + 程式設計題,但有些公司沒有選擇題,全是程式設計題(例如騰訊,位元組跳動,拼多多,網易等,這裡指的是提前批哈,正式批的好多我沒去參加)。不過無論是否有選擇題,程式設計題做的差,就涼了,一般程式設計題佔60%的分值。

反正我有挺多筆試環節就掛了的,有些我程式設計題全 A了,然而並沒有收到面試通知,估計是我簡歷沒啥亮點吧。

有人說,leetcode 的前 500 道題刷了,筆試穩嗎?說實話,還真的不穩,得看你的掌握程度,像 leetcode 那些題,一看就知道是什麼題型,應該用哪種演算法。而筆試題完全不一樣,很靈活,可能是多種演算法的結合。而且,有時候題意還得看十幾分鍾才看懂要我們幹嘛。不像 leetcode,就幾十個字,簡單明瞭。反正 leetcode 中挺多 hard 級別的題我都會做,不過筆試的難度有些並沒有 hard 高,卻做不出來。因為時間也是挺緊的….大概一道題只有 30 分鐘的時間給你做吧。

所以,那些經常刷 leetcode 的,我的建議是,千萬別圖刷題的演算法,而是應該徹底搞懂這道題的演算法思想,力求最優解,之前我也寫過相關的文章我是如何學習資料結構與演算法的?。

對於,還有一點,建議大家在刷題的時候,直接在網頁那裡打程式碼,別跑到 IDE 裡寫了,因為面試手撕程式碼的時候,並不會給你 IDE 寫,而是在筆記本手撕演算法,如果你不熟悉的話,估計程式碼會經常寫過,而且排版可能也會很亂。反正我春招面試阿里的時候,讓我在筆記本做演算法題,我哭了,呼叫庫函式的時候,方法名啥的全忘了怎麼寫,而且程式碼也老是寫錯。因為平時在 idea 會提示,在筆記本沒提示,特別不習慣。

3、關於專案

基礎、演算法很重要,進大廠缺一不可。那麼對於一個參加秋招的學生來說,專案重要嗎?

答是非常重要,我秋招最大的弱點是專案經驗不好,這也讓我在很多公司直接一面就涼了。我自己沒有腳踏實地著去做一個專案,都是看視訊速成的,而且自己也沒有好好跟著視訊打程式碼,自己嘗試去做一個專案,和跟著視訊去做,還是有所不一樣的,畢竟跟著視訊,很多東西不是自己想的,所以不深刻。

我看的專案視訊感覺還是挺不錯的,是牛客網左神講的,只是我比較懶,偷工減料,沒有好好寫程式碼,也沒有去拓展這個專案。如果自己看完視訊,好好去拓展、完善的話,我的專案經驗,就不會那麼差了。

記得蘑菇街一面的時候,面試官一上來就讓我講專案,然後我就講牛客網學的哪個專案,面試官讓我講線上的專案,別講練手的專案,我哭了,因為我沒有線上的專案,因為我的暑假實習,實際上就是去培訓,並不像其他人去公司實習,可以參與到完整的專案流程。這個時候,我就隨便說了培訓期間水的一個專案(幾天時間快速水的),然後我就被面試官懟死了,,,然後就沒有然後了,一面掛。

然後節點 cvte 面試的時候,一面二面全程懟專案,全是我的弱項,我也哭了。可以說,秋招我最大的弱點是專案,多次被懟告訴我,秋招,一定要有一個專案,這個專案不需要多高階,但需要你真正動手做過,研究過。

所以說,專案非常重要,可以打打增加面試的成功率,特別是中小型公司。當然,我覺得對於有些大廠,沒專案,也一樣能進,因為有些公司並不看重你的專案,例如我面試過的騰訊,位元組跳動,shopee,小米等,基本沒怎麼問專案(可能對我的專案不感興趣,哈哈)。當然,有個專案更好,只是並非必備條件。

專案該如何準備?我覺得可以跟著學校的老師做,或者自己看視訊做,但是,一定要自己打程式碼,並且進行拓展,注意,一定要進行拓展,不然可能會坑了你也不一定。

4、總結

所以我覺得,只要把基礎打好,演算法學紮實,並且弄些專案經驗,進大廠的機會還是很大的,大家不用怕被卡學歷,很多網際網路大廠,還是大部分不卡學歷的,只有你能過得了筆試,基本都能獲得面試的機會,面試就是憑實力說話了。當然,對於一些公司,還是挺卡學歷的,例如一些國企之類的。

一篇文章也寫不了那麼多,後面我也會分享自己在秋招中收穫的經驗的經驗等。

四、關注我,助你搞懂面試必考點

我已經有兩個月沒寫文章了,十月份,一定好好寫文章,主要寫計算機基礎知識(計算機網路,作業系統,Linux,MySQL)和演算法。看過我文章的都知道,我寫的文章,一定是你在百度查詢不到的,可能很多知識點你都有看過相應的文章了,例如 B 樹,B+ 樹等等,但是,我居然要寫,就一定不會和百度出來的那些一樣,千篇一律。而是會從自己的理解出發,助你更好著搞好某個知識點,讓你知其所以然。

說時候,基礎知識的面試,面來面試,高頻的面試點無非就那幾十個,但是,對於同一個知識點,不同人的回答,效果相差巨大。例如百問不厭的高頻面試題:程序間的通訊方式有那些,這個問題我被問吐了。有些人可能是這樣回答的:

程序的通訊有 6 種,分別是:管道、訊息佇列、共享記憶體、訊號量、socket,訊號。面試官一問你他們的區別,有哪些應用,為什麼需要這些的時候,你可能就不懂了,給人的感覺就是:你不是真的理解,而是背的。

而我在回答的時候,是從最常見的應用說起,從管道,層層遞進,一個一個引出來。也就是說,當你真正理解了之後,是不需要記憶的,基本可以推出來。關於程序間的通訊方式,我也寫過對應的文章:記一次面試:程序之間究竟有哪些通訊方式? ---- 告別死記硬背

所以,在之後,我會用心寫好每一個知識點,儲存通俗易懂,讓你知其然,知其所以然。大家敬請期待。

五、我還整理了一份秋招資料

目前我也在整理秋招的一些資料,整理的都是高頻考點,主要包括 作業系統,計算機網路,MySQL,Linux,Redis 等。大概國慶之後就會整理好,主要包括一些高頻知識點的整理以及相關面試題的整理。之後會整理出 PDF 版本送給大家,這份 PDF 花費了我很多時間,因為現在有很多相關面試知識點整理的文章,例如有個 CS-note 的github,這些都挺不錯的。不過我居然要整理,那肯定是和他們有些區別的。大家敬請期待。

六、總結了一些之前寫的文章

資料結構與演算法

  • 記一道阿里筆試題:我是如何用一行程式碼解決約瑟夫環問題的
  • 為什麼你學不會遞迴?告別遞迴,談談我的一些經驗
  • 演算法資料結構中有哪些奇技淫巧?
  • 騰訊面試題:有了二叉查詢樹、平衡樹為啥還需要紅黑樹?
  • 字串匹配Boyer-Moore演算法:文字編輯器中的查詢功能是如何實現的?
  • 兩道看似簡單的面試高頻演算法題
  • 如何只用2GB記憶體從20/40/80億個整數中找到出現次數最多的數
  • 【演算法技巧】位運算裝逼指南
  • 【面試被虐】遊戲中的敏感詞過濾是如何實現的?
  • 【演算法精講】分享一道很不錯的演算法題
  • 面試掛在了 LRU 快取演算法設計上
  • 必學十大經典排序演算法,看這篇就夠了(附完整程式碼/動圖/優質文章)(修訂版)
  • 以後有面試官問你「跳躍表」,你就把這篇文章扔給他
  • 【漫畫】不要再問我快速排序了
  • 一些常用的演算法技巧總結
  • 【漫畫】以後在有面試官問你AVL樹,你就把這篇文章扔給他。
  • 【演算法與資料結構】堆排序是什麼鬼?

計算機網路

  • 電腦的 ip 是怎麼來的呢?我又沒有配置過
  • 一文讀懂一臺計算機是如何把資料傳送給另一臺計算機的
  • 為啥用ip不可以訪問知乎,而百度卻可以?
  • 廣播路由演算法: 我是如何優雅著把悄悄話帶給其他人的
  • 關於三次握手與四次揮手面試官想考我們什麼?--- 不看後悔系列
  • 什麼?你不知道0.0.0.0和255.255.255.255這兩個地址的幹嘛的?
  • 談談NAT:什麼?全球IP和私有IP是什麼鬼?
  • TCP流量控制機制
  • 5分鐘讀懂擁塞控制
  • 【漫畫】https 加密那點事

資料庫與其他

  • 騰訊面試:一條SQL語句執行得很慢的原因有哪些?---不看後悔系列
  • 一句話擼完重量級鎖、自旋鎖、輕量級鎖、偏向鎖、悲觀、樂觀鎖等各種鎖 ---- 不看後悔系列
  • 嗯,春招兩次騰訊面試都掛二面了,分享下我失敗+傻傻的面試經歷
  • 我去,這兩個小技巧,讓我的SQL語句不僅躲了坑,還提升了 1000 倍(半分鐘乾貨系列)
  • 記一次面試:程序之間究竟有哪些通訊方式? ---- 告別死記硬背
  • 理解二進位制補碼的本質,別再死記硬背了
  • 【必學】Linux 下三劍客的技能,你敢不學?

更多精彩文章,歡迎大家關注我的公眾號:苦逼的碼農,

關注我,絕對讓你有所收穫,後臺回覆『電子書』即可獲得我精心準備的一份電子書