大一大二都是土木工程專業(yè),看了峰哥的轉(zhuǎn)專業(yè)經(jīng)歷后,堅定了轉(zhuǎn)專業(yè)的想法。于19年的9月轉(zhuǎn)專業(yè)到計算機,開始自學(xué)編程。3月份先后拿了趣頭條、今日頭條的后端實習(xí)offer,目前已實習(xí)一個月。我盡量用簡潔的語言說一些關(guān)鍵性的東西,希望對轉(zhuǎn)行和對學(xué)習(xí)方向迷茫的小伙伴有一點幫助。
轉(zhuǎn)專業(yè)的起因是土木發(fā)展前景比較差,又發(fā)現(xiàn)自己對編程很感興趣,在mooc上學(xué)了下浙大的數(shù)據(jù)結(jié)構(gòu)。因為成績不錯,大三開學(xué)正式轉(zhuǎn)到計算機專業(yè)(其實當(dāng)時轉(zhuǎn)專業(yè)承受的壓力還是蠻大的)。
大三上學(xué)期同時修大一大二大三上學(xué)期的計算機專業(yè)課,當(dāng)時一直想的是想考浙大的研究生的,于是按部就班地去教室上課,但是學(xué)著學(xué)著我又開始質(zhì)疑我學(xué)這些知識的意義,就像我當(dāng)初質(zhì)疑學(xué)土木工程的意義一樣,還是準(zhǔn)備找工作吧。
但是一學(xué)期有十多門計算機的課,課業(yè)負(fù)擔(dān)還是比較重的,那段時間也還是很努力的,我學(xué)習(xí)一門課程的思路幾乎都是:先搭好知識框架,把重要的知識點找出來并明白它們在整個課程脈絡(luò)中的地位,然后考前瘋狂刷題突擊。用這種學(xué)習(xí)方法我在每門課上花的總時間都不長,以比較短時間學(xué)到了大部分核心知識,既以平均80分的成績通過了期末考試,也在這期間也能騰出一些時間來自學(xué)一些我感興趣(對面試有用的)的技術(shù)。
當(dāng)然啦,很重要的前提就是要求你得有分清主次、規(guī)劃自己的能力。1月10號放假后正式開始準(zhǔn)備春季實習(xí)生招聘,從mooc網(wǎng)上找了些課程看,參考了峰哥提供的幾個項目,網(wǎng)絡(luò) 數(shù)據(jù)庫 操作系統(tǒng)跟著面經(jīng)貼著重學(xué)習(xí)了下高頻考點,面試前一周刷了50道leetcode上的高頻題目。
進入三月份開始投遞簡歷,我投遞的都是后端實習(xí),第一個面試是趣頭條,面完立刻發(fā)offer。
先問這個項目是怎么做的吧,說說
NIO和BIO的區(qū)別吧,如果客戶端突然斷了服務(wù)器怎么檢測,服務(wù)器怎么知道哪幾個包是一個請求的。
說說
MySQL索引,出了一個建索引的題,給定查詢需求,讓你確定復(fù)合索引的各字段順序。
數(shù)據(jù)結(jié)構(gòu)自學(xué)過?。空f說常見的排序算法吧?巴拉巴拉,說說快排吧?
就是每一輪隨機選一個隨機數(shù)把它的放到正確的位置上...
如果不隨機的話時間復(fù)雜度在原數(shù)組有序的情況下容易n方
String,StringBuffer,StringBuilder區(qū)別
說說ThreadLocal和它可能出現(xiàn)的問題
給你個反饋吧:
覺得你很有沖勁,我看好你,但是還達不到阿里實習(xí)生的標(biāo)準(zhǔn),這次不能給你過,但是會放在簡歷池子里。
第三個面字節(jié)跳動,從第一天技術(shù)三面,第二天hr面,第三天拿offer。
面試官:你數(shù)學(xué)好嗎?我說還行吧,那我給你出一個偏數(shù)學(xué)一點兒的題:實現(xiàn)一個shuffle函數(shù),就是給你一個數(shù)組你把它隨機打亂順序,要求完全隨機。
我第一次說的是新開一個數(shù)組,每次隨機從原數(shù)組中選擇一個元素放入新開的數(shù)組中。面試官追問如果不能開辟額外空間呢?我說那就交換吧,遍歷數(shù)組每個位置上的數(shù)組都和其后面隨機一個數(shù)字做交換。面試官說你證明一下正確性,想了一會兒給出了證明。
LeetCode42接雨水:我知道比較優(yōu)雅的做法是動態(tài)規(guī)劃,奈何不會啊,最后面試官提示說也可以用單調(diào)棧解決,于是
在面試官提示下
手撕
掉
。
面試官一上來就笑呵呵的問我前兩面感覺怎么樣啊,我說發(fā)揮不太好但是面試官都給過了。他說那我們做一個算法題吧:搶過紅包吧? 你設(shè)計一個函數(shù),輸入金額總數(shù)m和紅包個數(shù)n,要求返回一個長度為n的數(shù)組代表n個紅包,要求每個紅包金額隨機。注意紅包最小單位是分。
我問了能用什么api嗎,回答說給你一個random(n)函數(shù)可以1~n之間隨機一個數(shù),一共十分鐘,現(xiàn)在還剩五分鐘,寫代碼吧。
我的思路是求出總金額sum用分做單位,然后隨機生成n-1個sum以內(nèi)的數(shù),用b
ool
marked
[sum]
來標(biāo)識,如果生成重復(fù),則需要再次生成。最后遍歷這個sum數(shù)組每兩個marked=true的點之間的部分都是一個金額隨機的紅包。
三面面試官應(yīng)該是部門領(lǐng)導(dǎo)了,問我最近半年在看什么書呀,我說我半年前才轉(zhuǎn)到計算機系,現(xiàn)在在看Java并發(fā)編程的藝術(shù)。問我以后打算學(xué)點啥呀?我說Spring Cloud 和 Netty。
hr面:大學(xué)期間你最驕傲的事,為什么不考研,怎么看待加班,我說加就完了哈哈(不是原話哈),然后又說其實我們是彈性工作日的... 最快可以什么時候入職
第一天連續(xù)三個小時的技術(shù)面試,第二天半個小時的hr面,第三天
發(fā)
offer。
三面都問了一些常規(guī)的基礎(chǔ)知識,比如
HashMap細(xì)節(jié)相關(guān)的,cookie和session,ThreadLocal是什么,使用會帶來什么問題(不會),redis的相關(guān)讀寫策略(我也不是很清楚),NIO和BIO的概念區(qū)別(我做過一個Java NIO的項目),Spring IoC(做過Spring Boot的項目),TCP四次揮手,還有兩位面試官都讓手寫了SQL(實在好久沒有寫了,基本的語法都忘了,尷尬)
①把深入了解過的知識點盡量在簡歷上著重描述下,我其實準(zhǔn)備了不少 和 鎖、線程池相關(guān)的內(nèi)容,不過一點兒也沒問。
② 一些東西不會很正常的,面試過程中不要有太大心理壓力,面試官也不會太難為:比如我簡單的SQL都不會寫了,面試官說:沒事看來你這塊不熟,我說:確實,很久沒練習(xí)了。
③但是代碼題還是字節(jié)比較看重的,主要分別說說我遇到題目吧(每一面都有一個手撕代碼題):
1.做決定前深思熟慮,做決定時要果斷和堅定。迷茫的時候可以請教他人,但需自己認(rèn)清現(xiàn)狀和自身情況。
2.時間和精力是很寶貴的,花點小錢學(xué)習(xí)一些優(yōu)質(zhì)的資源就是在走捷徑(我用的比較多的是mooc網(wǎng)和極客時間)
3.學(xué)會抓大放小,分清主次。比如對于學(xué)校課程我只是考前突擊,想讓我平時去課堂里聽課和完成作業(yè)是不可能的,相反我會在規(guī)劃和探索適合自己的學(xué)習(xí)路線上花費很多時間。
4. 總是由學(xué)習(xí)收獲/花費時間這個值的大小和變化,來驅(qū)動自己進行高效和有價值的學(xué)習(xí)的。 比如學(xué)技術(shù)或者做項目的時候不要太過沉迷細(xì)節(jié),要帶有比較強的目的性。我做一個項目是用到了微信支付相關(guān)內(nèi)容,看了兩個小時微信文檔沒耐心了,遂想:我花精力搞這干嘛,有意義嗎,于是果斷跳過這個章節(jié)繼續(xù)學(xué)后面的模塊。
特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:
長按訂閱更多精彩▼
如有收獲,點個在看,誠摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!