從網(wǎng)易到字節(jié),專升本的校招經(jīng)驗分享
最近看到一篇文章,作者專升本,可以說并沒有多么豪華的背景,最終簽約字節(jié)。一路走來,可以看到作者背后的努力和付出,分享給大家,與大家共勉。
本文轉(zhuǎn)載自 itsuki,轉(zhuǎn)載信息如下:
作者:itsuki
鏈接:https://itsuki.cn/article/177
如果有小伙伴看過我之前發(fā)過的 2021 總結(jié)文章, 就知道我當(dāng)時的一些情況, 去年的這個時候, 我也在準(zhǔn)備秋招, 刷著題目、看面經(jīng)等等, 這篇文章來說一說校招自己的一些心得, 備戰(zhàn)秋招, 需要準(zhǔn)備簡歷、算法、專業(yè)知識、項目/實習(xí)這四個大方面。
以下都是文字, 有點枯燥, 但是有用~
簡歷
首先是簡歷的問題, 最好是找朋友、學(xué)長學(xué)姐看看, 問一問他們有沒有修改建議, 或者在掘金上面找關(guān)于簡歷的文章, 進行相對應(yīng)的修改, 這個我就不細細展開了。
這里推薦幾篇掘金的文章, 可以參考一下~
如何寫「前端簡歷」,能敲開字節(jié)跳動的大門? 看過 100 份前端簡歷之后,匯總一下常見的問題 [譯] 如何寫一篇殺手級的軟件工程師簡歷
算法題
刷算法要有目的性,知道面試、筆試(隨緣)中常考哪些對于準(zhǔn)備校招很有幫助。我一開始比較盲目,所以刷這個刷那個,浪費了很多時間,所以在這里推薦幾個對我?guī)椭容^大的倉庫。
筆試算法題:
李威威大佬 acwing 算法基礎(chǔ)課也可以試試(不過需要幾十塊 ??)
面試算法題:
CodeTop 前五頁 劍指 offer leetcode Top100
筆試算法題,我比較推薦李威威,他的 leetcode 題解以及 github 操作對新人比較友好,面試算法題可以優(yōu)先刷 CodeTop,其次就是劍指 offer、leetcode Top100。
別看到以為很多就慌了,面試算法題這三個里面有很多重復(fù)的,刷完我相信面試的時候 80% 的題都可以做出來(不敢說的太絕對,怕對打臉,哈哈哈哈哈)。
刷題
在我刷題的話,我會先看看有沒有思路,搜索自己腦海中的算法,看看哪個比較適合,如果沒有思路的話,先暴力破解看看能不能弄出來,暴力解法鍛煉一個想法到實現(xiàn)的過程以及編碼能力,如果暴力不能弄出來的話,可以看看題解,看看別人的思路,再嘗試把它寫出來,我自己是會把一個題目反復(fù)刷,我覺得 y 總有一句話說得很好: “一遍不知道,刷個五遍,我就不信你不知道”。
特別是一開始學(xué)一個算法的時候,很容易陷入一看就會、一做就廢的情況,別慌張,大家也是這么過來,你需要時間好好成長。
我一般會多看看幾個人的題解,看不同人的答案,每個人看待問題的角度和解題思路都不一樣,多學(xué)一種思路面試、筆試多一份把握(這個真的有用、特別是面試中的算法題)。
如果一直在刷某一系列的題,可以嘗試進行總結(jié),比如說二分查找 二分的使用場景,什么時候用到二分,這個自己去總結(jié),下次比如說看到有序的時候,看到每次都可以排除一半的情況,能不能想到二分?
合理的背模版,基礎(chǔ)算法(比如說排序)這些最好是自己能夠輕車熟路的寫出來。
算法準(zhǔn)備好了,別忘了熟悉筆試的環(huán)境,原因有兩點:
我們可能平時用 leetcode 使用的多,它不需要我們處理輸入和輸出,但是筆試中絕大多數(shù)是要自己處理輸入、輸出的,所以你要搞清楚你所使用語言的輸入、輸出,特別是輸出,有時候多個空格啥的,比較難排查。 刷題的時候不妨使用牛客、leetcode 等網(wǎng)站上的編輯器,盡量脫離本地 ide(個人建議)。
我問了一些校招的小伙伴,他們說一般是本地 ide,但是我自己在筆試以及面試過程中,有一些情況是網(wǎng)站的 ide,所以采不采用看個人啦。
我在刷題的時候,很少借用智能提示、一般都是自己敲, 原因有兩個:
筆試有時候是在某些網(wǎng)站(牛客、賽碼)上進行,如果沒有提示的話, 那就直接尬住了,比如說想使用 Java 的優(yōu)先隊列 Prority 單詞不會寫, 知道思路想寫也寫不出來。 加深 API 的熟練度、加快自己打字速度(好像沒啥用),面試很多情況都是牛客等網(wǎng)站,說實話我感覺它們的代碼提示不得行,還不如自己手敲快一點。
平時用 IDEA、vscode 有智能提示舒服得很,但是網(wǎng)頁上的 Ide,不要對它抱有太高的期望,有智能提示算是不錯的啦,當(dāng)然如果筆試的時候允許你在本地 ide 寫是最好的。
筆試
在筆試的時候要把握時間,我一般會先把所有的題目都掃一眼 看看哪個題目有思路,然后就做那一道題目(全都不會, 叉出去),然后分為三種情況:
AC: 能夠很快的 AC, ?? 呀。 卡思路: 某一道題目一直卡在 80%、90% 的時候,這種可能是卡邊界、輸出、超時了,比如說傳一個特殊值(null、’’、在數(shù)據(jù)范圍內(nèi)特別大的值),看看哪一步?jīng)]有做好邊界判斷,如果是返回字符串的題目,要小心有沒有多打空格。 完全不會: 如果實在不知道怎么寫,可以嘗試”騙”測試用例,我稱之為(面向測試用例編程),比如說有一些題目問你返回true、false,這種最簡單,你直接返回true、false就可以過一定的測試用例,當(dāng)然企業(yè)筆試不會那么傻,出只有兩種可能性的題目,那不妨試試一些特殊值,比如說0、''字符串這種特殊的樣例,或者說看看能不能把測試用例的答案搞出來,如果搞出來測試用例的答案,至少也可以過一些用例,總比空著好一點。
面試
面試比較看運氣和臨場發(fā)揮能力,運氣好出得那個你就會,那就美滋滋了, 而面試中的算法,經(jīng)過我這么多輪面試的手撕題,無非就是這幾種: 鏈表、滑動窗口、棧、優(yōu)先隊列、二分、二叉樹、回溯、深搜/廣搜,動態(tài)規(guī)劃相對來說比較少,但是主要是這些,所以可以刷上面推薦的算法面試資源的題目。
其次面試中我總結(jié)了四個要點:
我一般會掌握至少兩種解法,就拿最簡單的兩數(shù)之和,有暴力、Map、雙指針的方式,面試的時候看到我用暴力的解法寫出來了,面試官可能要求進行優(yōu)化、或者換一種思路來實現(xiàn),如果優(yōu)化、換一種思路也能夠?qū)懗鰜砹司褪且粋€加分項。 我基本上都會使用本地 ide 進行 debug,了解每一行做了什么,為什么要這么寫,這個很重要,在面試過程中有很多面試官會在你寫完之后會要你解釋一下,然后還會問時間、空間復(fù)雜度以及思路是什么。 在面對沒有思路的題目時,可以問一下面試官可以提示一下嗎? 先把思路理清楚再去寫,你寫代碼的過程面試官都能看到,如果你總是刪了改、改了刪的話,會給面試官一種想到哪里寫到哪里,沒有整體的把握,即興 freestyle? (我就是這么過來的,導(dǎo)致有一些面評就是想到哪里寫到哪里, 沒有整理把握,扎心了。) 如果代碼有一點點問題,別慌,這個時候就是考驗的是 debug 能力, 我一般都會準(zhǔn)備好筆和紙在旁邊,然后自己在草稿本上把流程走一遍,看看哪里有問題然后再做相對應(yīng)的修改。
專業(yè)知識
接下來就是專業(yè)方面知識的準(zhǔn)備了,我當(dāng)時是邊刷算法邊準(zhǔn)備專業(yè)方面的知識,比如說一天上午寫算法題,下午看面經(jīng)啥的。
最快速的路
我個人覺得比較好準(zhǔn)備秋招的方式就是: 看牛客網(wǎng)上的面經(jīng),不懂的地方去搜索,根據(jù)自己的查到資料,用自己的話總結(jié)出一個答案出來,不是直接復(fù)制別人的!
總結(jié)出一個答案也可以理解成: 用自己的語言描述出一個問題的答案。
為什么我要這么說呢? 現(xiàn)在去網(wǎng)上搜面試題一大堆,他們都會告訴你答案, 然后把這個答案強行灌輸給你,這個就是問題的答案,你就答這個就可以了,但是你自己不去實踐,自己不去動手你可能都不知道,有些答案是錯的,或者說答得并不全。
所以在準(zhǔn)備的時候,別偷懶,一個問題自己去搜索然后實踐總結(jié)出自己的答案,我相信這種方式并不會比你直接背答案慢!
八股文除外(為什么會有八股文這種東西!)
題外話: 當(dāng)時和小伙伴調(diào)侃,牛客怎么面經(jīng)還沒更新,哈哈哈哈哈。
多說
在準(zhǔn)備的面試過程中,面經(jīng)就是面試官,你就是面試人,自己在心里進行解釋,解釋的清楚說明你懂了,解釋不清楚就說明不懂,一定要去找出自己的答案。
千萬不要有一種錯覺,這個我知道、可以跳過,我之前也有這種錯覺,以為自己知道就真的知道了,但是自己知道和面試官說清楚是兩碼事,能夠用簡單清晰的語言跟面試說清楚才是真正的理解,我之前春招就是以為自己知道就是真的知道了,然后春招的時候說的支支吾吾,表達也不清楚。
多寫
前端會出現(xiàn)實現(xiàn)一個 xxx 這樣子的手撕題,這種題目很考驗代碼功底,在你寫的時候,面試官能夠變量命名、api 的使用、函數(shù)是否封裝等各個方面對你有一個整體的了解。
我的建議是多寫代碼,去看別人的代碼,看他們寫代碼的風(fēng)格、思路以及命名,有什么地方可以借鑒的。
最簡單的一個例子: 實現(xiàn)一個數(shù)組去重、排序、扁平。
var arr = [
[12, 2, 2],
[6, 7, 8, 5],
[3, 4, 5, 9, [11, 12, [1, 13, [14]]]],
];
fn(arr); // 去重 + 扁平 + 排序
我們可能就直接一把嗦了,但是這樣子寫的話,不利于代碼復(fù)用的,我們盡可能的保證一個函數(shù)只做一件事情,所以我們不妨將這個拆成三個函數(shù),然后再利用一個輔助函數(shù)讓它依次執(zhí)行。
// 去重
const unique = (arr) => [...new Set(arr)];
// 扁平
const flatten = (arr) =>
arr.reduce((acc, v) => acc.concat(Array.isArray(v) ? flatten(v) : v), []);
// 排序
const sort = (arr) => arr.slice().sort((a, b) => a - b);
// 管道函數(shù)
const pipe = (...fns) =>
fns.reduce(
(f, g) =>
(...args) =>
g(f(...args))
);
pipe(flatten, unique, sort)(arr);
項目和實習(xí)
項目
有多少小伙伴和我一樣,寫到一半或者寫完了就不管了,把它放在那里,然后寫簡歷的時候就尷尬了,心比較虛,不知道自己做了啥,也不知道怎么做的,所以我的簡歷在春招的時候項目一直都是一個博客(19 年寫的)以及 xxx 管理系統(tǒng)。
到秋招的時候,我覺得這樣子不行,然后用自己喜歡的技術(shù)重構(gòu)了前端并且一直在迭代更新,做完之后我發(fā)現(xiàn)一個完整的產(chǎn)品,能夠不斷的去迭代開發(fā),它要比你做一半、做完了不管的項目強太多了,因為一個完整的產(chǎn)品你會參與到技術(shù)選型、UI 設(shè)計、后端接口開發(fā)(數(shù)據(jù)庫設(shè)計)、前端開發(fā)、開發(fā)維護、可能的話自己搭建 ci/cd,這些東西都是自己去嘗試的。
特別是優(yōu)化某一個變量名、優(yōu)化某一個方法、解決某一個 bug、進行一些點的性能優(yōu)化的時候這些都是你可以面試中展示的點,因為它是你一直迭代的項目, 所以你也會非常熟悉,如果要你講項目難點,你也可以娓娓道來。
實習(xí)
如果在一家公司實習(xí)的話,面試官還會問關(guān)于實習(xí)的東西,最容易問的問題是實習(xí)做了什么,為什么要做這個,做這個碰到了什么問題,有了解做這個的背景嘛? 所以在準(zhǔn)備的時候以”為什么、做什么、怎么做”的來進行準(zhǔn)備, 好好的了解下當(dāng)前業(yè)務(wù)的背景以及一些難點。
小結(jié)
總結(jié)就是: 揚長避短、禁止埋坑。
面試官對你的了解,就是通過簡歷,所以他肯定會問簡歷上的東西,每一個知識點都要搞明白,別想著為了簡歷光鮮亮麗,啥都寫上去,到時候面試有你難受的,別給自己埋坑。 面試中的時候,如果碰到不會的問題直接說不會,面試官不會因為這一個問題否定掉這一整場面試。 面試中問你實習(xí)內(nèi)容,自己在準(zhǔn)備的時候最好去總結(jié)好你當(dāng)時實習(xí)做了什么,為什么要這么做,實習(xí)中碰到的難點,這個是比較重要的(項目也是如此)。
反問環(huán)節(jié)
最后一般都有反問環(huán)節(jié),我個人一般問一下四點:
問下這種面試感覺怎么樣, 然后有什么需要提升的點 問問剛剛面試中不會的東西 問問專業(yè)的方向 公司的做什么、技術(shù)棧、新人培養(yǎng)方案
這個可以參考一下別人是怎么問的。
一些小問題
心態(tài)
不管自己面試發(fā)揮的怎么樣,一定要擺正心態(tài),如果發(fā)揮的好,給自己積極的心理暗示,好好準(zhǔn)備是有回報的,如果發(fā)揮的沒有達到自己的要求,那就好好復(fù)盤,把不會的地方搞明白,誰都會有不清楚、不明白的知識點。
允許自己犯錯,切記不要有”一場面試不行,就否定自己”,我之前就是這樣子, 面試的不好就心情比較低落, 然后影響自己的復(fù)習(xí)節(jié)奏, 現(xiàn)在感覺有點不太值得。
學(xué)歷
xxx 公司這么厲害,我技術(shù)不好、學(xué)歷不好,進得去嘛,不要慌,光腳不怕穿鞋的,先投了再說,萬一進去了呢,誰也說不定呢。
學(xué)歷不好可以試試找一個實習(xí)攢經(jīng)驗,或者在 github 上嘗試開源的東西,總之就是拿得出可以體現(xiàn)你技術(shù)水平的東西(學(xué)校、實習(xí)、開源等方式)。
專升本
一般專升本的同學(xué),簡歷上只需要寫本科時間就好了,如果中間有面試官問起來學(xué)校時間兩年再說自己專升本,如果面試到了 hr 面,最好說一下自己的專升本學(xué)歷,擔(dān)心有些公司不知道你是專升本發(fā)了 offer 給你,然后入職了再說自己專升本可能會毀 offer,一般 hr 面過了就說明公司是收專升本的,就不需要慌了。
我該什么時候投
去年我是在 7 月份開始投的,那個時候提前批剛開始,投了字節(jié)、百度、網(wǎng)易等公司,我覺得能早點投就早點投,那個時候提前批的字節(jié)進到 hr 面, 網(wǎng)易雷火、百度拿到了 offer,還是挺不錯的,所以有提前批啥的可以先試試,相當(dāng)于多一次鍛煉自己的機會。
很多同學(xué)可能想著是還沒學(xué)完,會被吊打啥的,不敢投,不要怕,你可以先投一些公司,漲漲經(jīng)驗,再去沖大公司,畢竟真正的面試和自己準(zhǔn)備是不一樣的,以面試來檢驗復(fù)習(xí)成果,用復(fù)習(xí)來準(zhǔn)備面試,相互促進,良性循環(huán)。
寫在最后
最后做一個小總結(jié),以上的內(nèi)容:
做好準(zhǔn)備 穩(wěn)住節(jié)奏 做好復(fù)盤 保持心態(tài) 拿到 offer!!!
很高興你能夠看到這里,希望我的一點校招心得能夠?qū)δ阌兴鶐椭W詈螅恳粋€努力的人都值得一個 offer 。
推薦閱讀:
