前言
隨著互聯(lián)網(wǎng)寒潮的到來, 越來越多的互聯(lián)網(wǎng)公司提高了面試的難度,其中之一就是加大了面試當(dāng)中手撕算法題的比例。這里說的算法題不是深度學(xué)習(xí),機(jī)器學(xué)習(xí)這類的算法,而是排序,廣度優(yōu)先,動(dòng)態(tài)規(guī)劃這類既考核數(shù)據(jù)結(jié)構(gòu)也考核編程能力的題目。刷題的網(wǎng)址非常的多,其中以leetcode是最為出名的。
創(chuàng)新互聯(lián)公司IDC提供業(yè)務(wù):重慶服務(wù)器托管,成都服務(wù)器租用,重慶服務(wù)器托管,重慶服務(wù)器租用等四川省內(nèi)主機(jī)托管與主機(jī)租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機(jī)房,BGP機(jī)房,電信機(jī)房,移動(dòng)機(jī)房,聯(lián)通機(jī)房。
在刷題上,我花了大量的時(shí)間,蹚了許多的坑,總結(jié)了一下,主要有這三個(gè)問題:
- 刷過的題老是忘,第二次刷的時(shí)候還是不會(huì)做
- 刷題的速度很慢,即使花一天時(shí)間,也常常只能刷五六道
- 堅(jiān)持不下來,老是刷到一半就停滯下來了,當(dāng)我第二次再來刷的時(shí)候,前面刷過的題都又忘的差不多
說出來都是淚,感覺刷題這個(gè)路是真的難走,花了很多時(shí)間,但是感覺沒有什么收獲。所以最近我一直在反思自己刷題的方法,希望能夠提高刷題的效率和速度。當(dāng)我總結(jié)了以下方法以后,我很明顯的感受到自己的刷題速度從以前周末的一天五六道提升到周末一天刷十五六道以上,速度相比以前提升的非常明顯。
一. 我們來談?wù)劄槭裁匆㈩}
- 面試需要。Google以及今日頭條等公司面試的時(shí)候,非??粗鼗镜乃惴}目,leetcode 刷的不好第一面都過不了
- 刷題能夠提高自信。實(shí)際工作當(dāng)中的代碼論算法復(fù)雜度遠(yuǎn)遠(yuǎn)低于刷題的難度,這么難的題我都刷過了,何況工作的代碼, 當(dāng)然工作當(dāng)中一般也用不到這些我們刷題的方法
- 大部分同學(xué)刷題能力需要提高。在面試同學(xué)算法題的時(shí)候,三道算法題能夠?qū)懗鲆坏赖囊膊皇呛芏?/li>
二. 如何快速刷題
由于我本人目前只刷了400道左右的題目,很有可能有更好的方法,歡迎大家賜教
- 確立計(jì)劃。比如在準(zhǔn)備找工作的時(shí)候,明確就要60天刷leetcode 前400題,平均一周就要刷75題,可以周末兩天刷50題,周一到周五 每天刷5題,將問題分解下來,每天一定要完成任務(wù)才能睡覺
- 分解計(jì)劃。由于需要一周刷75題,提前規(guī)劃將本周需要刷的75題,整理成excel,刷完一題標(biāo)記一下,一周完畢以后,可以看到滿滿標(biāo)記的excel 非常的有成就感
- 快速刷題。初期一天刷五題其實(shí)也是很高的負(fù)擔(dān),一般來說剛刷題,一題都至少要半個(gè)小時(shí),一天五道的話,可能至少也要兩個(gè)半小時(shí)。所以我們?cè)谒㈩}的時(shí)候,為了節(jié)約時(shí)間,五分鐘沒有思路,就別浪費(fèi)時(shí)間了,直接看答案. 另外一個(gè)原因,面試的時(shí)候,也不可能讓你思考很久。要明確認(rèn)知,這個(gè)和高考刷題沒什么區(qū)別,理解不了,先背下來。
- 組隊(duì)刷題。大家一起刷題,可以明顯的督促自己堅(jiān)持下來,刷題這個(gè)本來就是堅(jiān)持的過程。
三. 如何避免遺忘
- 及時(shí)重復(fù)。由于我們刷完題以后,遺忘曲線會(huì)遵從一個(gè)先快后慢的過程,所以要及時(shí)重復(fù)刷過的題,這個(gè)需要提前規(guī)劃刷的75題,我們會(huì)之后再講如何規(guī)劃每周的75題
- 與人分享。當(dāng)我們刷完題以后,如果能講給別人聽的話,會(huì)大大加深我們的映像,在講給別人聽的時(shí)候,如果你能講的很明白,說明你是徹底理解了,但是如果聽的人始終沒有聽明白,那很有可能就是自己沒有理解這個(gè)題目,需要自己再回去思考一下這個(gè)題目的解法。
四. 如何提高面試環(huán)節(jié)當(dāng)中刷題的表現(xiàn)
- 養(yǎng)成bug free 的習(xí)慣。寫完代碼以后, 一定要仔細(xì)檢查,保證沒有思路問題,沒有下標(biāo)越界問題,考慮各種邊界情況,沒有變量命名不一致等問題
- 掌握多種解法。算法題面試,做出來是一方面, 如果能夠在這個(gè)題目上掌握不同時(shí)間復(fù)雜度的解法,然后再呈現(xiàn)給面試官,面試官自然會(huì)更加滿意的。假設(shè)一個(gè)同學(xué)在面試的時(shí)候,先寫時(shí)間復(fù)雜度和空間復(fù)雜度最高的方法,面試官很有可能會(huì)問你這個(gè)題目有更優(yōu)的解法嗎,你再寫時(shí)間復(fù)雜度和空間復(fù)雜度稍低一點(diǎn)的解法,如果面試官繼續(xù)問你能不能更優(yōu)化一點(diǎn),你再寫出時(shí)間復(fù)雜度和空間復(fù)雜度最優(yōu)的方案,面試官會(huì)認(rèn)為你的思考是有深度的,如果一開始就寫出時(shí)間復(fù)雜度和空間復(fù)雜度最優(yōu)的方法,面試官只是會(huì)覺得這個(gè)題目你以前做過而已。
五.結(jié)束語
- 刷題最重要的是速度和效率。短時(shí)間內(nèi)高質(zhì)量快速刷完才是最終目的,明確自己的認(rèn)知,不要和題目死磕。
- 堅(jiān)持下來。如果一個(gè)事情方向是正確的時(shí)候,即使一時(shí)遇到挫折了,也不要?dú)怵H,多總結(jié)方法,持續(xù)提高。刷題這件事情給我的挫敗感是非常高的,中間是一度放棄了很久,但是當(dāng)我想明白這道坎是一定要過的時(shí)候,就下定了決心一定要攻克這道難關(guān),持續(xù)總結(jié)方法,持續(xù)進(jìn)步。
我個(gè)人認(rèn)為,作為技術(shù)人就要保持終生學(xué)習(xí)的態(tài)度,讓學(xué)習(xí)力成為核心競(jìng)爭(zhēng)力,才能不被時(shí)代所淘汰,而高效的時(shí)間支配能讓你變得更加優(yōu)秀,所以,我在這里將這份耗時(shí)兩個(gè)月整理出來的核心技能知識(shí)點(diǎn),送給有需要的人,希望這份資料能對(duì)大家有所幫助
以下是部分資料截圖,有需要的可以加入三千人交流群860113481免費(fèi)領(lǐng)取
網(wǎng)站欄目:兩個(gè)月刷400道leetcode之后的經(jīng)驗(yàn)與心得總結(jié)、真題整理分享
鏈接URL:
http://weahome.cn/article/gdogis.html