<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          計算機專業(yè)的學(xué)生需要每天刷題嗎?

          共 4564字,需瀏覽 10分鐘

           ·

          2021-08-07 17:33

          點擊左上方藍字添加"星標(biāo)",重磅干貨,第一時間送達




          一個專注于目標(biāo)檢測與深度學(xué)習(xí)知識分享的公眾號

          編者薦語
          計算機專業(yè)的學(xué)生需要每天刷題嗎?看看知乎的大佬們是如何說的。

          轉(zhuǎn)載自 | 深度學(xué)習(xí)與計算機視覺

          鏈接 | https://www.zhihu.com/question/399753856


          開學(xué)就大二,疫情在家刷了leetcode的每日一題,基本中等都是看題解,然后自己寫。每天都感覺自己在刷題,但沒有效果。小伙伴問有必要每天堅持刷題嗎。

          作者:程墨Morgan
          https://www.zhihu.com/question/399753856/answer/1653942986

          我讀書的時候還沒有l(wèi)eetcode這樣的網(wǎng)站,但是教材上也有不少編程題,但是我校數(shù)據(jù)結(jié)構(gòu)和算法教材脫胎于《計算機程序設(shè)計藝術(shù)》,多是偽代碼描述解決方法,不具體到某種語言,除了上機考試也不要求寫出真代碼,后果就是,我們那一代同學(xué),普遍解題思路很敏捷清晰,但是對于某門語言的掌握就不夠深,基本靠課外自學(xué)成才。


          當(dāng)然,這也不是大問題,當(dāng)進入實際工作中,無論是在教研室還是公司,管他用的是什么語言,大學(xué)課程訓(xùn)練的思維方法這時候就起到很大作用,編程語言特性很容易學(xué)會,但思維方法卻是需要幾年的訓(xùn)練積累,只要思維方式和基礎(chǔ)知識到位了,很容易就能適應(yīng)工作需要。

          像題主說的,刷題如果是『看題解,然后自己寫』,然后『沒有效果』,我猜根本原因不是他不努力,而是思維方式和基礎(chǔ)知識還沒到位。

          打個比方,你學(xué)打網(wǎng)球,要不要每天打一場比賽?表面上看,網(wǎng)球就是比賽,好比計算機專業(yè)就是要產(chǎn)出代碼,但是,為了打好網(wǎng)球,你不能完全靠比賽來提高水平,你先得要體力,然后對于動作技巧要掌握,知道自己的身體肌肉如何正確運動,不是說看了費德勒比賽錄像就能學(xué)會正確姿勢的,這需要在比賽之外專門訓(xùn)練,所以,在學(xué)習(xí)網(wǎng)球初期,訓(xùn)練正確的姿勢更重要,和菜鳥打比賽贏了多少分一點意義都沒有,你用錯誤的姿勢去打反而養(yǎng)成不好的習(xí)慣。

          所以,如果題主覺得『沒有效果』,那么就應(yīng)該多花時間在思維方式和基礎(chǔ)知識的培養(yǎng)上,不要著急去做每日刷題。

          我知道我知道,肯定會有人問:問題來了,怎么培養(yǎng)思維方式和基礎(chǔ)知識呢?

          答:在大學(xué)上課要認真聽講,你爹媽給你交的大學(xué)學(xué)費,不是只讓你去刷題和拿文憑,你要對得起學(xué)費就要上課認證聽講,那些知識課堂上都講。

          我知道我知道,肯定還會有人說:我們大學(xué)里老師水平很差,他們都講不明白。

          答:盡量去聽,老師水平很差不代表一無是處,如果你真覺得大學(xué)水平配不上你,退學(xué),重新高考去考一個更牛的大學(xué),如果你考不上更牛的大學(xué),那么現(xiàn)在的大學(xué)就是配得上你的大學(xué),接受這一點吧。



          作者:yyyyyr
          https://www.zhihu.com/question/399753856/answer/1608833085
          反對無前提條件下,鼓吹刷題的回答。實際上,計算機專業(yè)大多數(shù)人,都認為堅持刷題會對保持專業(yè)思維乃至提升專業(yè)認知有巨大幫助,這是想當(dāng)然式的誤區(qū)。
          先拋出觀點,提升專業(yè)思維只有一條道路,那就是不斷深入地學(xué)習(xí)計算機各個門類的建構(gòu)思想。


          提問者的直覺是對的,堅持刷題一段時間后,發(fā)現(xiàn)自己并沒有得到明顯提升,這時候就應(yīng)該停止刷題。若學(xué)習(xí)效果不夠巨大,則等于浪費時間。

          我先講一個類似案例。我上高中的時候我們班有一個男生熱衷于每天寫兩道奧數(shù)題,他的想法是我奧數(shù)題都會做了,以一個如此高的思維強度去應(yīng)付高考還不是簡單。最后如愿以償?shù)?,他高考失利了?/span>

          寫奧數(shù)題學(xué)不到東西嗎?不是,能學(xué)到很多東西,但都是一些trick,也就是犯了聰明,小聰明啊,這些都不是數(shù)學(xué)建構(gòu)的思維,只見樹木,不見森林。他不擅長數(shù)形結(jié)合,書上的結(jié)論自己也沒有推過一遍,做題不系統(tǒng)規(guī)矩,高考自然要掛他。

          刷題是同樣的?;氐降谝痪湓捴械那疤釛l件,我認為沒有編程經(jīng)驗的,近期需要找工作的,以及一年大大小小十幾個比賽的,刷題很有必要;除此之外,刷題就是浪費時間,即使分門別類去刷,效果也不見長。

          繼續(xù)舉栗子,有人可能覺得刷題對提升算法思維有幫助,我們就來看看《算法導(dǎo)論》中是怎么研究動態(tài)規(guī)劃的。在介紹動態(tài)規(guī)劃的前幾章,這本書先介紹了分治法,并在動態(tài)規(guī)劃的開頭明確點出動態(tài)規(guī)劃的定義:規(guī)劃,是一種表格化解法而不是計算機代碼。在正文部分,作者先用一個裝配線問題開篇,用足足兩頁的篇幅分析了問題的本質(zhì),之后再嘗試用暴力法求解,發(fā)現(xiàn)在數(shù)量很大時暴力法需要的時間復(fù)雜度下限太高了,那怎么辦呢?哦,我們可以把這個問題先用遞歸表達出來,接著想辦法把復(fù)雜度下限優(yōu)化到最快,用for循環(huán)代替遞歸,那就初步得到了一個能用的算法。接著書里還舉了一個矩陣鏈乘法的例子去幫你加強這種優(yōu)化印象,注意,到這里,這種for循環(huán)方法還只是讀者腦中一個印象。

          通過兩個例子的求解,可以開始剖解此類問題的本質(zhì)了,書中點出動態(tài)規(guī)劃兩個基本概念,最優(yōu)子結(jié)構(gòu)和重疊子問題,并對此做了剖析,再然后告訴你要做動態(tài)規(guī)劃,要構(gòu)造最優(yōu)解并且把他存起來,這就是用空間換時間。

          好了,現(xiàn)在你已經(jīng)掌握了動態(tài)規(guī)劃的底層方法,就帶著這種思想去解決最長公共子序列的問題吧。完。

          來看一下刷題和這種系統(tǒng)學(xué)習(xí)有什么區(qū)別。

          《算法導(dǎo)論》的研究符合一般研究規(guī)律,都是發(fā)現(xiàn)問題——分析問題——解決問題——發(fā)現(xiàn)問題變種的循環(huán),這種直來直去的思維,相比于leetcode那一堆故事講的亂七八糟,強行配條件,各種暗示你該用哪種算法,實際挖了個巨坑的敘事模式不知道高到哪里去了,你這種題刷多了,在理解層面腦子就會變得很混亂。

          接著來看具體的,規(guī)劃是一種表格化解法而不是計算機代碼,這叫做概念定義。試問有幾個人,一想到dp,腦子里出現(xiàn)的不是那兩個for循環(huán)?刷題時不會給出這樣清晰的定義。

          再然后碰到了問題,我們首先嘗試用暴力法求解,這叫做尋找baseline,baseline是擬解決一個問題所能找到的性能不太好的方法,但能用;反過來,只要我的方法比baseline有提升,我就成功了。leetcode上的解答基本都是最優(yōu)解,你很少能看到別人從較差解法優(yōu)化過來的細節(jié)。

          由于暴力法跑得慢,我們必須用遞歸把問題表達出來。這叫做具體問題的抽象化,很多刷題人寫題沒有抽象化這個過程,accpted之后也不知道自己是怎么寫出來的。

          根據(jù)一個例子,我們分析dp問題的本質(zhì)是兩個概念了,這就是學(xué)術(shù)中的基本假設(shè)。知道了這兩個基本假設(shè),你才知道哪些問題能用dp做,哪些不行,到這里為止,你已經(jīng)了解了動態(tài)規(guī)劃的本質(zhì),以后碰到不管多難的題,你都可以用最優(yōu)子結(jié)構(gòu)重疊子問題去套一下,再也不怕題干挖坑了。但你自己顯然總結(jié)不出如此精煉的前提條件。

          結(jié)論收束,刷題后,除了兩個for循環(huán),你不能收獲任何計算思維。

          不只是算法,單純編程層面,刷題也無法提供有效反饋。提問者作為計算機專業(yè)的學(xué)生,應(yīng)當(dāng)始終以計算科學(xué)(Computing Science)的思維為目標(biāo),如果你覺得刷題除了保持手感沒有額外增益,我的建議是一道題也不要刷,多寫一道題都是浪費生命。

          回到立論,提升專業(yè)思維只有一條道路,那就是不斷深入地學(xué)習(xí)計算機各個門類的建構(gòu)思想。有刷題的時間,不如多學(xué)學(xué)大神們是怎么發(fā)現(xiàn)問題和解決問題的。答主在專業(yè)領(lǐng)域也算走過不少彎路,曾經(jīng)也是個輕度刷題家,最后在國內(nèi)一些算法競賽獲得一些實在稱不上有用的榮譽,我對此問題下一些答主模棱兩可的“刷題可能有用吧”觀點持反對態(tài)度,對“刷題需要有方向和方法”觀點持弱反對態(tài)度,因為我覺得,對一個大二的學(xué)生來說,你的時間很寶貴,編程思維和計算思維還沒有成型,多刷一道題都是反動的,因為路線錯了。



          作者:王一工
          https://www.zhihu.com/question/399753856/answer/1974790624
          個人情況,2021本科畢業(yè)生,美團ssp。
          以我前前后后面試數(shù)十次的經(jīng)驗,我認為不太需要(如果只求進一個大廠)


          我在找到實習(xí)前,略微寫了三五道leetcode后來因為懶惰放棄了。憑著學(xué)校里學(xué)的一點點算法,基本也能磕磕絆絆地把面試級別的算法題過去。找實習(xí)面了兩個廠,字節(jié)掛在二面算法了,騰訊一波過了。

          后來因為劃水(反卷斗士就是我)沒能在騰訊轉(zhuǎn)正,就秋招唄。

          然后還是懶,不想寫題。就硬著頭皮找,反正就看面經(jīng),看別人考什么算法題了,就記一下。華為和美團的面試很順利過了,分別拿到sp和ssp。其它廠子基本不是因為算法題掛掉的。

          正經(jīng)建議


          可以看出我不是一個追求上進的人,而是愛偷奸?;?,投機取巧的普普通通的畢業(yè)生。我相信大部分有實習(xí)和工作焦慮的同學(xué)可能在看到高贊們的回答后都會或多或少地給自己打雞血,其實堅持下來的并不見得有多少。


          所以我的建議是給和我類似的普通人的,讓你用最少的時間,最安逸的過程取得性價比最高的結(jié)果(最字夸張了,大概是這么個意思)

          建議1 不要死磕leetcode,個人感覺大部分人瓶頸并不在于算法題,而且面試的算法題并不算太難。我沒有任何競賽經(jīng)歷,也沒刷過題,憑課堂知識和臨時抱佛腳也能過個七七八八。但是我也不推薦學(xué)我直接躺平。把高頻考點做一做看一看,我感覺就差不多了,更多的時間應(yīng)該花在基本功和項目上。

          建議2 深挖一個或兩個知識點。面試中,一般會就一個問題展開問答,直到面試官和面試者其中有一個人不會為止。如果能在某一個知識點上讓面試官閉嘴,是一個相當(dāng)加分的點。

          建議3 了解各種框架模型的設(shè)計思想,在場景題時能夠給你更好的解題思路。即便自己依然不理解為什么,但是信手拈來地"引經(jīng)據(jù)典",也許會讓面試官感覺你的實戰(zhàn)經(jīng)驗豐富。

          其它的以后想到再更

          總的來說,我不推薦像高贊們說的那樣看大部頭的書(看不進去?。。?/span>


          最省力的辦法,就是用較少的精力讓面試官覺得你厲害。知識點大致掌握就行,挖幾個深的,多面幾家,總能瞎貓碰上死耗子。學(xué)有余力,再拓寬,再夯實

          作者:電子科大羅輯哥
          https://www.zhihu.com/question/399753856/answer/1790194123
          不需要每日刷題。
          我覺得LeetCode上的題,其實也和高考數(shù)學(xué)、物理題一樣是有跡可循的。我們不應(yīng)該追求立刻把題寫出來這種手感,而是應(yīng)該弄懂原理,達到寫1道題之后能做出同類型10道題的感覺。
          掌握了最基本的方法,在往后面試需要的時候,只要看一遍以前做過的筆記,就能夠想起來如何去寫。


          學(xué)會在刷題時分類總結(jié),比如說鏈表的部分,插入/刪除節(jié)點/查找倒數(shù)第k個節(jié)點,這些都是常考的題,你在做題之前更應(yīng)該知道他的思路是什么。然后還有一些trick,像有的題要在頭節(jié)點之前增加一個啞節(jié)點。

          網(wǎng)上也有現(xiàn)成的總結(jié),然后你再把其他章節(jié)也這樣過一遍,面試中手撕代碼的環(huán)節(jié)基本就沒問題了。

          在平時生活中我認為要做的是多寫代碼,培養(yǎng)自己對技術(shù)的興趣。體會在現(xiàn)實生活中用計算機解決問題的喜悅。刷題只要在找工作之前突擊一下,就沒太大問題了。


          END



          雙一流大學(xué)研究生團隊創(chuàng)建,專注于目標(biāo)檢測與深度學(xué)習(xí),希望可以將分享變成一種習(xí)慣!

          整理不易,點贊三連↓


          瀏覽 36
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美AL在线视频 | 91无码少妇a v久久欧美 | 色婷婷丁香五月天男人天堂 | 免费黄色A片视频 | 免费男女激情内射视频网站大全 |