V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SunshinePlanet
V2EX  ›  程序员

国内以竞赛为最终目的的计算机学习圈子到底是啥样

  •  3
     
  •   SunshinePlanet · 90 天前 · 11962 次点击
    这是一个创建于 90 天前的主题,其中的信息可能已经有所发展或是发生改变。

    进入大学也一年了,在大一开学初就有专门老师在一直在游说新生们去参加 ACM,CTF 。 那老师也一直在说刷一本通,一本通。那时候我还和那老师对线,他一直在那重复刷题,刷题,刷了题什么都懂; 这个观点。 而我当时的观点是 刚刚进入大学,大家的计算机基础参差不齐,这时候应该教大家先熟悉一下 windows,熟悉一下计算机硬件有哪些,是什么,干什么,怎么用之类的基础的东西。刷题是之后的事情,参加比赛也是之后的事情。

    那专门负责 ACM 的老师就一直在那重复“刷题,刷题,刷一本通。”最后管理员禁言,这事就这么过去了。 至于我的那些参加了 ACM,CTF 的同学,也是用 DEV-C++ 在那写代码,我跟他们讲 GCC 是什么,用 VSCode 会更舒服,可以用断点来调试代码等等之类的在我看来很基础的东西,他们也一头雾水,跟我说除了 DEV 其他东西都不知道是什么。简单说就是跟只会用 office 的人没区别,就是软件换成了 DEV-C++(无意冒犯)

    第一年我们编程语言只学了 C 。当然了,上的很水,一本清华大学出版社的教材,老师就是一章一章念完,课程就结束了 这个暑假我们有个 《 C++实验》的课,老师就是上文提到的负责 ACM 的老师。上课内容就是在 拼题 A PTA 上面过题,学生看他投影仪大屏幕做题,下面抄答案,把上面的题刷完。 上课期间,他还在一直说现在你们可以和大一一起刷一本通啊,大一新生已经刷了很多题了。之类的刷题的话。

    这是我自己身边的事实 在网上,好像知乎上,贴吧里,好像只要内容有关 ACM,CTF 之类的,大家好像都是参加过的人,都是这些领域的大佬,或者,很努力在里面奋斗的。根本就没有唱反调的,告诉新人这个东西需要你有一定的计算机基础。
    #因为我身边打 ACM 的同学真的就只会打 ACM 呀。。。

    第 1 条附言  ·  89 天前
    看了大家的回复,我自己好像也明确了自己的方向。但是就是有一种恐惧吧,我自己是对网络和图形学这方面感兴趣的,未来的职业道路也非常想往这两个地方选一个发展,当然最好是进入游戏产业了,开发游戏,算我的梦想吧。在大学实际用起了 linux 系统,在 linux 的世界里发现了计算机的深不见底,又对计算机有了新的认识。我想在这游戏领略有所发展,但是因为恐惧,恐惧我现在的计算机的知识还远远不够我支持我在这两条道路的其中一条走的舒服,走的远。因为我已经发现我要学习的东西有太多了。四年以后,我能够吃饭的手艺又是什么呢?或者说读研究生,但那也只是把焦虑抛在时间更后面了罢了。往大了说,我能实现我的梦想吗?

    而参加这些竞赛,是啊,我对这些也不是不感兴趣,也不是选择了之后不愿为之奋斗。但是这种刷题的模式,在经历了高考之后,对这也已经漠然了。看着身边的参加这类竞赛的同学,只要走下去,他们的路肯定是越走越宽的,只要得个还算可以的奖,至少这四年问心无愧。思考着自己的未来,加上又再一次跟那位 ACM 老师相撞,所以就有了这个问题。

    总之非常感谢大家的回答,让我知道了大学竞赛的圈子是啥样的,也愿望大家的路能够越走越宽吧。“踏上取经路,比抵达灵山更重要”
    126 条回复    2021-09-10 16:16:36 +08:00
    1  2  
    efaun
        1
    efaun  
       90 天前
    最后都进了清华北大
    nulIptr
        2
    nulIptr  
       90 天前   ❤️ 20
    毕业人家找到年薪 50w 的算法岗,你找年薪 20w 的前端,这就是区别。。。
    l00t
        3
    l00t  
       90 天前
    大学就一门课吗?计算机基础不是专门有个课。
    GrayXu
        4
    GrayXu  
       90 天前   ❤️ 7
    #但我身边打 ACM 的同学真的不只会打 ACM 呀。。。
    SunshinePlanet
        5
    SunshinePlanet  
    OP
       90 天前
    @efaun 因为清华大学有个 tuna 开源软件镜像站,要是打比赛能进清华 tuna 的组织那我一定天天打比赛
    SunshinePlanet
        6
    SunshinePlanet  
    OP
       90 天前
    @l00t 很水,没有干货,讲过去了就是过去了
    SunshinePlanet
        7
    SunshinePlanet  
    OP
       90 天前
    @GrayXu 那也是从小就接触电脑的大佬吧,选择计算机相关专业的对电脑接触时间的两级分化也很严重吧
    chendy
        8
    chendy  
       90 天前   ❤️ 1
    大学里刷题环境那么好,多刷一刷锻炼锻炼脑袋挺好的
    不刷题其实也没太多正事能干了是不是。。。
    heiheidewo
        9
    heiheidewo  
       90 天前
    程序员最重要的就是编码能力
    BrettD
        10
    BrettD  
       90 天前 via iPhone   ❤️ 3
    简历里写 ACM 金牌和写熟练掌握 Linux,大多数公司都会优先选择前者
    luooooob
        11
    luooooob  
       90 天前   ❤️ 3
    大学的老师并不像初中高中那样有家长的义务,他没必要考虑你的话,你也没有必要想着帮他改进教学内容,说得难听一点就是只是种互相利用的关系而已,想那么多干啥。能学学不能学拉倒

    另外我还是想帮 ACM 老师们说两句话,他们也许会有很多缺陷,比如除了几个几十年的老古董软件以外啥都不会,但是他可能是你在本科阶段能够遇到的最好的老师了。如果如你所说连你的 ACM 老师都是水货的话,那你们学校所有的课程都可以不上了。
    wtysos11
        12
    wtysos11  
       90 天前
    我周围刷 ACM 基本都是高中 NOIP 一路打上来的,不存在基础参差不齐什么的,所以不太能理解你的感受。计算机硬件这个我不太了解,但我记得 NOIP 初试的时候我也刷了很多类似的东西……这些乱七八糟的东西我觉得属于一个正常人在单位时间内( 1 天~1 个星期)可以掌握的内容
    以 ACM 为终极目的的圈子最终肯定是为了拿奖,如果感觉拿不了奖且没有兴趣我觉得直接无视掉这种比赛就好了,以后面试刷算法题基本也到不了 ACM 难度。ACM 这类比赛的意义在于它的高认可度,我所认识的三个区域赛金牌的同学都靠这块牌子取得了非常好的成绩,两个留在国内的去了微软和谷歌,另外一个出国的去了 UCLA 。就算不看 ACM,向 PAT 这种也挺不错的,关键就是毕业之后面试的时候简历上要有比较有说服力的成果。
    另外,我看你经常提到老师。我不知道现在计算机教育怎么样,我当年那一届比较厉害的基本都是抱团自学,真要按老师的内容按部就班走的话真的是毕业即失业。
    Lemeng
        13
    Lemeng  
       90 天前
    企业看重的,尤其是大企业
    rpman
        14
    rpman  
       90 天前 via iPhone   ❤️ 6
    柠檬味都快溢出来了
    acm 真的代表实力
    DeleteZN
        15
    DeleteZN  
       90 天前   ❤️ 31
    我感觉还是学校氛围的问题。
    我当时进入到 ACM 校队,老师和校队的学长学姐一直在告诉我们的一件事情是,ACM 是一个性价比很低的事情,如果不是真的喜欢做题就早点退出。自己真的去做的时候才发现,ACM 最强的那一波大佬们都 tm 是初高中就打 OI 的,他们之间都是互相认识的,人家早就开始竞争了。他们比我早学了好几年,咱们再去竞争就太难了。
    后来我就从校队退出来了。退出来之后反而更有时间去写自己真正想写的、有意义的代码。我写了一个自己的博客网站、做一个自己需要的油猴插件、去研究深度学习发了第一篇贼水的 CV 论文、去我想去的公司实习等等。这些东西都是我自己想做的,在做的过程中也帮助了许多人,真正的让自己的代码产生了价值。
    如果当时我坚持打 acm,可能就拼不过那些大佬们,同时还可能一直找不到自己真正想做的。
    我真的很庆幸,我大学选择了一个充满着正反馈的路。
    zen1
        16
    zen1  
       90 天前   ❤️ 1
    无需纠结啦,当然是题要刷,基础知识也要会拉 [doge]
    另外计算机自学很重要,只跟学校学四年那才是不行哒
    SunshinePlanet
        17
    SunshinePlanet  
    OP
       90 天前
    @luooooob 我接触到的 CTF 老师,是很有水平的。这个老师不是我们本校的,他只负责 ACM 新生的方面。我并没有说 ACM 老师都是水货的意思,无意冒犯。
    WebKit
        18
    WebKit  
       90 天前
    人与人是不同的。这个论坛里比你小的高中初中生,有不少都有很多开源项目了
    SunshinePlanet
        19
    SunshinePlanet  
    OP
       90 天前
    @DeleteZN 同感
    SunshinePlanet
        20
    SunshinePlanet  
    OP
       90 天前
    @WebKit 是这样没错的
    DeleteZN
        21
    DeleteZN  
       90 天前
    @wtysos11 可能这就是大佬吧。当初我最开始学 Java 的时候,环境变量都要搞很久。你们大佬 tql,最多一周的时间就可以搞懂 cpu 、gcc 、cmake 、gdb 等等。佩服佩服
    DeleteZN
        22
    DeleteZN  
       90 天前   ❤️ 2
    @rpman 人家不就是说需要全面学计算机的基础知识嘛,你急啥?自己代入了?
    他急了他急了
    DeleteZN
        23
    DeleteZN  
       90 天前
    @Lemeng 企业还看重只干活不要工资的呢
    NCZkevin
        24
    NCZkevin  
       90 天前   ❤️ 6
    acm 败犬路过,acm 性价比确实很低,除了个人努力外还有很多其他因素,说句老实话,我认为 acm 拿银牌以上所付出的时间(运气好,抱大腿的同学除外)用于学计算机其他方向也能学的很好。你举例连 GCC 都不知道的同学 acm 实力估计也很弱,我身边 acm 拿牌的同学能力都不低的,找工作也都非常顺利,这些同学就算基础弱点也很快就能补上。
    我大胆猜测一下,你们学校 acm 实力应该非常一般,要不然不会出现你说的这种情况。这种情况下打 acm 的性价比非常低,还不如和你一样多折腾基础知识。
    linvon
        25
    linvon  
       90 天前   ❤️ 1
    打 ACM 也不需要什么计算机基础,它本质上是数学和算法的问题。很多数学系的人都会去搞这种算法,以及高中选拔 OI 队员时大概也是参考数学成绩而不是计算机基础。
    此外至于是不是打 ACM 就只会打 ACM 的问题,这和 ACM 、刷题也没什么关系,都是看个人。愿意去拓展学习的都会自己去学的,你可以说学校教的内容和业界大量需要的内容不一致,但大学里本来也不是要培养这些人才的,理论与学术相关才是大学首先要考虑的,但又有几个人认真学了?
    至于总是想拉人去打 ACM 的老师,可能确实眼界窄了一些,能拉一个感兴趣的就拉一个了
    AkashicRecords
        26
    AkashicRecords  
       90 天前   ❤️ 7
    我打过 CTF 得过一点点奖,也曾拉人进入到 OI 的圈子(最后他得了区域金……),同时结识了很多 CTF 和 ACM 选手。从自我体验和周围人的表现来看,CTF 和 ACM [不能] 让你成为计算机方面的专家,但是是一个很好的 [试金石] ,让你证明自己的能力。

    其实这些竞赛和奥数竞赛一样,竞赛的成功不能代表学术上的胜利。诚然 Tao 12 岁就拿了金牌并最终成了地表最强数学家之一,但是更多的数学家都是那种竞赛上表现平平的。仅仅靠奥数无法培养出数学家,奥数也不是培养数学家的必经之途。不过话又说回来,正是因为竞赛有筛选人能力的功能,所以很多数学家都有奥数的背景也不足为奇。君不见,多少金牌得主都去做对冲基金了。总不能说奥赛能够代表金融投资的潜力吧 XD 。

    ACM 老师这样做挺正常的,因为大家投入越多,他带队的产出回报就越多。所以,他肯定就会让大家越多人打越好——即便一时半会出不来成果,培养好的氛围也是不错的,学生锻炼了编程能力也不是件坏事。但是, [大学教育] 中计算机更重要实际上的是操作系统、计算机组成原理、计算机网络等课。如果认为大学计算机就等于编程、算法,那就有失偏颇了。如果说以竞赛为 [最终目的] 的导向话,最大的可能性就是让学生以为编程就是计算机的一切,从而花了大量时间在竞赛的技巧上,这肯定是不值得的。例如计算机科学的明珠——计算理论,要是一个学生认为编程就是一切的话,这课大概就不会去听了。那么大学这种学术为导向的教育就会失去意义,不如网上找培训算了。

    想到我大一时候的程序设计课,助教就过于喜欢出使用竞赛技巧的题目。任课老师私下和我吐槽说,这样就变味了,一方面让那些没接触过竞赛的同学没有信心(虽然他会使用语言了,但是他不知道算法的存在,他会归结到自己编程能力的不行而不是自己根本就没学过那些算法);另一方面让大家认为计算机就等于编程和“竞赛用的算法”,很多同学就觉得自己不适合学计算机。但是最后读完大学发现,这些东西其实只是计算机科学中非常小的一块,即便编程能力稍弱的同学,在广阔的计算机科学的世界中,也能找到自己擅长的那一部分。
    LotusChuan
        27
    LotusChuan  
       90 天前   ❤️ 2
    这也算是能力的证明吧,刷题能去比赛,拿了奖之后学校有加分,所以保研简单;比赛得奖之后去校招面试也有优势;读研的话导师面试也不错。
    但这一切都建立在其他人在大学都只是老老实实按照学校课程学习或者是去参加一些含金量不高的比赛的基础上,当然国内大部分学校都是这么做的,相比之下你在大学通过刷题能去含金量高的比赛。说得简单点就是其他人都在混日子,你参加比赛没有混日子,那么能力相比之下肯定是你高,所以理应有这些保研读研工作的优势。
    打破这个局面的方法也很容易得出,就是找到更加高效的学习方式。刷题的学习效率以及学习面都不优,如果你看重实际能力的培养的话,基本上如果你大学能坚持按照 top 美本的培养流程来一套,能力是不会比只刷题的差的。比如你想了解计算机的基础知识,去刷一遍 CMU15213 就好了,学完要是还比不过只刷刷题的,那 CMU 也可以倒闭了。现在你比那些刷题的更懂一点计算机,但是大概你对计算机的了解也不是特别深入,让你写个 malloc 你写得出来吗,实现个简单的 TCP 做得到吗,命令行工具比如 vim git tmux 这种都熟悉吗。
    这些做不到的话,要么去学,要么还真的不如听老师的去刷题,起码你大学没有混日子。
    wenbinwu
        28
    wenbinwu  
       90 天前
    有幸跟国内大牛(特大牛的那种)交流过,都在搞算法,当教授,做 AI 啥的,自己有自己的圈子
    SunshinePlanet
        29
    SunshinePlanet  
    OP
       90 天前
    @LotusChuan 感谢指路。现在也是在 linux 上学习 vim 和 git,学搭环境编译 openwrt
    admin601
        30
    admin601  
       90 天前   ❤️ 2
    术业有专攻罢了。就从算法题来说面向大众的 Leetcode,一般人可能觉得上面的题目就已经够难了,但是搞算法竞赛的大部分都会去国内专门的 OJ 平台和 codeforces/atcoder 等这种国际平台进行训练练习。LeetCode 上除了个别题目,对于一个基础不错的搞算法竞赛的人来说就算是签到题 /热身题了。而且 LeetCode 上的题面很直,不像 ACM/OI 题目还有不少套路题。最后放一个抖机灵的某乎问答。
    为什么大家都贬低 LeetCode 的难度? - 知乎
    https://www.zhihu.com/question/348344092/answer/902655106
    admin601
        31
    admin601  
       90 天前
    @admin601 不过说实在的,如果从大学开始搞 ACM,不是有天赋或者极其有兴趣,那确实性价比不高
    fetich
        32
    fetich  
       90 天前
    某一行或竞赛干到第一的,都有过人之处或者投入了远超他人的努力
    Junzhou
        33
    Junzhou  
       90 天前   ❤️ 3
    dev c++是很舒服的,断点调试也很舒服,内置 gcc,可以通过编译命令使用 c++11,你觉得刷题没有用,是因为你不了解打 acm 意味着什么。(我是一个弱鸡选手,参加过,垫底,也只能在蓝桥杯这种比赛上拿奖)

    刷题的大致进度就是, 基本语句,基本数据结构,基础排序算法,搜索,递归,dfs,bfs,大数运算,高精度,高级排序(快排,归并,拓扑之类的),高级数据结构(优先队列之类的),记忆化搜索,然后图搜索,最短路,动态规划,网络流,自动机,贪心算法,全排列,后面数论,计算概率,博弈。 我说的可能略过了很多的内容。

    然后你现在跟这些人去讲 vsc 多好用? 以上这些内容都能学会的人,会学不会怎么用 vsc 吗,怎么用 gcc g++ gdb 调试? 断点? acm 现场赛(区域),基本代码都是打印出来 debug 的。 其他的我就不说了。



    如果 你身边有沉浸于打比赛的,你可以不理解他,但是你们毕业求职的,经历校招的时候,差距就出来了,工具确实能够提高生产力,但是并不是你用了先进的工具就有先进的生产力,说句不太恰当话,一个能把 acm 常规算法,常规题信手拈来来的老哥,会学不会用 vsc,idea 这种工具?
    agagega
        34
    agagega  
       90 天前 via iPhone   ❤️ 1
    我可以理解你的心情。当年 vczh 有篇回答就是说,为什么他作为一个中学就开始自己搞编程的人,大学却没有参加 ACM,印象很深。

    ACM 当然教不了你说的很多东西。不过真的搞过几年 ACM 还连这些都不清楚的,应该也很少。( OI 圈子里倒是挺多)

    我的感觉是,ACM 虽然可能性价比不高,但心智负担也不大,比较符合大家高考一路过来靠做题考试的这个思路。其他的路子(比如搞 infra )没有一个固定的考核标准,没有老师教,可能就容易走偏,或者像我一样因自制力不够而放弃。

    现在回头看来,大学时候,要是能有这个机会锻炼自己也挺好的。关键是能摆正心态,认识到进入大学校门后,不会千军万马都走同一条路这个事实就好。

    二楼的留言有点魔怔了,企业算法岗和大学打比赛还是有本质区别的。我知道的前选手,拿奖的没拿奖的,很多人也没去做算法。
    Junzhou
        35
    Junzhou  
       90 天前
    还有,如果是我理解的那个 ACM,大概率大学开始搞,真的晚了,我大学刷题的时候,认识几个小朋友,中学生打 oi 的,当时看了我写的某篇笔记,特意教我怎么用 c++的 pbds,给我讲一些题的思路。

    区域金银 只要不是打酱油的,就只靠打比赛积累的,外加常规课程积累,一线大厂是没问题的。
    iyear
        36
    iyear  
       90 天前   ❤️ 2
    @nulIptr #2 打 ACM 和算法岗不太一样吧。。。
    Junzhou
        37
    Junzhou  
       90 天前   ❤️ 3
    @SunshinePlanet 学习 vim 也好,学习 git 也好,这些本质上都是工具。还是建议多关注一些算法,数据结构,计网,操作系统,这些理论知识,外加一门拿得出手的语言,不需要精通深入,只需要扎实,在你走上工作岗位后,你会受益非浅,对于普通人来说,这些的性价比比打 ACM 高太多了。
    YvesX
        38
    YvesX  
       90 天前
    搞啥竞赛的不是只会竞赛呢,哪怕别人那就是个智商测试行不行
    又有谁规定的必须要会做工程呢
    feather12315
        39
    feather12315  
       90 天前 via Android
    我认为走 ACM 跟打好计算机基础,这两个并不矛盾,到工作前都是要均衡化的,但哪个走得更远点,是两个发展路线。
    目前的感受:找应用软件开发相关的工作,对算法的要求高点;做基础软件的,是计算机基础要求高。

    我个人跟楼主所说的一样,是从打好计算机基础开始的,上学时候喜欢瞎折腾,算法水平一般般,反倒乱七八糟的技能点了一堆。后来找的是基础软件相关的工作,做这方向代码开发不多,很多时候在 debug,我在这方面知道很多别人不知道的东西,上手速度、debug 速度要比别人快很多。
    SunshinePlanet
        40
    SunshinePlanet  
    OP
       90 天前
    @Junzhou 这里没有贬低刷题的意思,我也是很认同刷题的。是我周围的环境,ACM 老师都只在强调刷刷刷,可是大部分同学,进入大学前,连电脑都没怎么摸过,老师就开始给新生灌输刷题的理念。我是就这个点和老师冲突的。
    Junzhou
        41
    Junzhou  
       90 天前
    @SunshinePlanet 在刷题的过程,就能解决“连电脑都没怎么摸过”这个问题,你们肯定有计算机导论之类的课程,刷题和这些并不冲突。为什么强调刷题? 因为刷题就是一个主动学习的过程。
    webshe11
        42
    webshe11  
       90 天前
    人家出成绩的都是从高中刷 OI 的,竞赛老师想找的是最拔尖的一批人,“计算机基础”“熟悉一下 windows,熟悉一下计算机硬件”小学时候就解决了,都不算问题
    不想搞,没兴趣,基础不行竞赛搞得很痛苦,不出成绩的就别搞了
    天才和我们普通人的差别,很痛苦
    SunshinePlanet
        43
    SunshinePlanet  
    OP
       90 天前
    @Junzhou 这里明确下,咱老师对我们说的“刷题”,他就只是单纯重复在“信息学奥赛一本通”上面刷题。至于计算机导论,老师是个好老师,但是课时不够,讲几章,这门课程就结束了(末流大学)。基本没讲什么东西,对于初学者来说,是远没有获得能够主动学习的原始资本积累的。
    rpman
        44
    rpman  
       90 天前 via iPhone
    @DeleteZN 倒看出来你是真的急了
    Yc1992
        45
    Yc1992  
       90 天前
    真有人以为人家自黑几句做题家就觉得自己行了,哈哈
    20015jjw
        46
    20015jjw  
       90 天前 via Android
    Acm 和数学竞赛思路是一样的
    真正比的是智商
    刷题只是智商不够凑的
    jin5354
        47
    jin5354  
       90 天前
    @SunshinePlanet 你的要求已经太高了。刷题是正路,刷题能力在找工作时能直接获得面试加成,这已经是正确方向的点拨了,只是你们老师的方式太粗糙,不注重生态的培养;君不见很多 985 的计算机系老师既不劝你刷题讲课也一样照本宣科,还不如这个简单粗暴的呢。
    tiedan
        48
    tiedan  
       90 天前
    大学的时候 ACM 带我领略了一个全新的世界,寒暑假基本没有放完整过。暑假基本就一周在家,剩下的时间都在学校的实验室做题。至于益处对于 coing 能力肯定是有用的,不过对我来说更多是精神的锻炼
    mikumkf
        49
    mikumkf  
       90 天前
    别急,国内的普通学校都这样子的,相对来说这也是对新生性价比最高的事情
    BiteTheDust
        50
    BiteTheDust  
       90 天前
    从打竞赛的角度刷题肯定是最重要的,其他的都是添头。
    你有你的观点没问题,扩充知识广度也只有好处。
    可是有些知识只需要几分钟就能了解,有些东西却得花大量时间思考,实践。
    别人不了解,你可以科普,可以推广,告诉他们 vscode 有什么好处,怎么拿 gcc 直接编 binary,而不是作为一个新人一上来就让别人都听你的。
    wph95
        51
    wph95  
       90 天前
    前高中入坑 oi 选手,一个过气凉了的 oj 维护者发表下意见。

    1. oi 竞赛是极其有益的。而且通过 oi 很好的让人评估是否选择编程来作为专业。(我高中的竞赛队最后有一半的人选择了计算机相关的专业
    2. ACM 是一个性价比较低的方式。他一定意义上更像是高考。你要一遍一遍的刷五三刷题,练习肌肉记忆。
    3. 大学中 ACM 是一个很好的选择(这点看似和 2 是冲突的)。他更像高中生活,可以通过自己的做题努力换取相应的回报。打 ACM 总比按部就班的上着国内的计算机课,到最后毕业了也写不出什么代码好。在校招的时候也是个好的敲门砖,以后找工作刷 leetcode 也轻松些。
    4. ACM 和 OI 的答题技巧在未来的工作中可以说是毫无用处。更体现的是一个筛选机制,智商更高,更有毅力,更有学习能力的人才能更好的取得好的成绩。ACM/OI top 级的人换去做科研 /工程也是会成功的。
    5. 如果能有效获得资源 /有自学能力。最高效的学习路还是 1. 去实验室写 paper 2. 大一开始找实习



    你那段对 ACM CTF 的同学介绍 vscode 介绍调试等内容其实是竞赛等一个取舍。因为 ACM/oi 都是一个比赛导向 比的是解题,尤其是 oi,运行环境都是统一的 你了解 GCC 对你取的好成绩没有帮助。ACM/oi 圈没你想的那么弱,正常选手二分 debug 都是基础能力。厉害点的 gdb debug 都是轻车熟路 /
    mengjue
        52
    mengjue  
       90 天前
    刷题需要付出的劳动远比你一天到晚摆弄工具的奇技淫巧强的多,加油吧。
    Cu635
        53
    Cu635  
       90 天前   ❤️ 2
    @SunshinePlanet @GrayXu
    因人而异。

    那种刷题不求甚解、能拿高分、大纲之外的东西就认为“没用”的竞赛参与者,和真的把知识打通、知识体系建立之后,外围知识完整、自然而然跟随能力拿到高分的参与者是两回事。
    眼中只有竞赛成绩,其它东西——包括但不限于综合素质和人品——都舍弃的竞赛参与者,和什么都没耽误、竞赛也拿到了较好成绩的参与者相比,都是对后者的侮辱。

    所以,lz 实际上是把两种人混到一起了,当然,后者为有意无意的为 ACM 参与者争取来了名声和地位,而前者却故意的混淆当蛀虫也是没有分清的原因。而幸运的是, @wtysos11 遇到的同学应该大部分是后者。

    @rpman
    不一定,上面说的,因人而异。

    @efaun
    注意是“进入大学也一年了,在大一开学初”。
    zhuomu
        54
    zhuomu  
       90 天前   ❤️ 1
    有过竞赛经历的,更能看得清楚人外有人、天外有天,摆正自己的位置,毕竟排名在那放着。而有的人,可能会点三脚猫功夫,就会觉得老子天下第一。
    jakezh
        55
    jakezh  
       90 天前
    大学才开始刷有点晚了 很难出成绩了
    我们学校打 ACM 的都是从高中就开始搞了, 好几年国际金牌了
    Misakiye
        56
    Misakiye  
       90 天前   ❤️ 2
    @Junzhou 赞同你说的。对普通人来说,学基础知识和技能更有性价比。

    @SunshinePlanet 跑个题。看到楼主的发帖想到年轻时候的自己,感慨一下时间过得好快。作为一个大学生活和楼主差不多(想法也差不多),现在靠算法吃饭的屌丝来说,回过头看看,ACM 竞赛内容真的只是计算机科学很小的一块。

    我的经历和 @DeleteZN 差不多,还不如他哈哈哈。我大学的时候没有打过 ACM 和 CTF,经常看和折腾的乱七八糟的东西。不过这些还有学校的基础课受用到现在,陪我一路走来直到出国,直到我现在还会经常翻翻大学的经典教材(感谢老师推荐的经典书)。

    在国外,我的朋友找工作也是经常刷 Leecode,确实有公司会参考但是并不所有的都是,只是一种证明能力的途径。反正我是没有被问(摊手)而且我现在依旧是这个习惯,折腾自己喜欢的,看自己想看的。不想自己的创造力和学习兴趣被磨灭。

    不用和别人走一样的路,别人或者老师怎么想和做和你都没什么关系。喜欢刷题就刷题,不喜欢就不做,做自己喜欢的,创造力和学习的 motivation 比奖牌更重要。能力的证明有很多种,不是只有奖牌,努力付出都会有结果的。我的经历算是给楼主一些鼓励,祝好,加油💪。
    dcoder
        57
    dcoder  
       90 天前   ❤️ 1
    1. 结果找工作 /跳槽时, 发觉拿高薪 offer 就靠 LeetCode 刷题...
    而且 LeetCode 刷题, 就是标榜"创新"的硅谷推广开的.

    2. 刷题是非常傻 x, 同理, 刷这些题目也很傻 x: 高考, 考研, GRE, 公务员 etc
    但凡要考解题的地方, 刷题就会变成运动员式的枯燥内卷...

    3. 为了傻 x 的选拔制度, 只能捏着鼻子刷题.
    同时维护好自己的好奇心, 计算机的世界很大, 刷题只是里面的小泥坑.
    cassyfar
        58
    cassyfar  
       90 天前   ❤️ 1
    我觉得计算机竞赛重在启蒙。自己中学搞过几年 OI,应该说没有这段经历,我大概率也不会成为码农。

    我对 ACM 持有一点儿负面看法,因为我发现网上一些 ACM 参与者总认为 ACM 就等于作为码农的能力,比如 ACM 拿奖就一定得进大厂。。。我只想说 ACM 更像是兴趣班。就像你奥数世界第一名,也不代表你一定能当个优秀的数学家吧?

    所以如果你对算法问题,限时编程等感兴趣,ACM 是一个好的机会。如果你想成为一名优秀的工程师,ACM 并不是必经之路,也不是加分项。
    leido
        59
    leido  
       90 天前
    楼主不就是想吐槽同学很菜嘛, 有必要上升到 ACM 圈子吗?

    学校给你提供平台和机会, 本来就是好事情, 同学菜说明楼主高考也不咋地.
    MeatIndustry
        60
    MeatIndustry  
       90 天前 via iPhone
    二楼真的是…笑 Yue
    zjsxwc
        61
    zjsxwc  
       90 天前
    因为有钱途!
    tigerstudent
        62
    tigerstudent  
       90 天前
    就跟以高考为目的的圈子一样
    whywaoxaks
        63
    whywaoxaks  
       90 天前
    智商不够或起点不高,只能靠刷题来弥补了。
    身边 acm 成绩好的,很多小学就开始写代码了,一些经典教材,人家小学初中就滚瓜烂熟了。
    Tink
        64
    Tink  
       90 天前 via Android
    大学肯定先刷题啊,有了算法基础,计算机基础真的都是小儿科
    angryfish
        65
    angryfish  
       90 天前
    作为 ACM 败犬,确实比不过那些大佬们。这东西,除了努力,真的要看天赋。我还是乖乖去做 curd 吧
    ThirdFlame
        66
    ThirdFlame  
       90 天前
    ACM 不了解。 安全圈的 CTF 其实性价比挺高的啊。
    就算是最难的 PWN 入门曲线陡峭,但也不是非人类的东西 。 曲线越陡峭,竞争者越少。
    Yadomin
        67
    Yadomin  
       90 天前 via Android
    CTF 和 OI 是两类人好吧😅
    villivateur
        68
    villivateur  
       90 天前 via Android
    学好数学和算法,你再去接触计算机原理之类的,会觉得易如反掌。反之,你只会写写网页用一些 IDE,想要学会最精髓的计算机数学理论,会很难
    zxCoder
        69
    zxCoder  
       90 天前
    1 对大多数大学才接触计算机的普通人(普通学校),ACM 性价比极低,更别说这几年 XCPC 圈乱像,含金量怕是会慢慢降低了
    2 但是据我观察,大多数比较强的 ACM 选手基本可以分为两类,一类是 ACM 很强,其他方面也强到离谱,另一类是 ACM 很强,但是其他方面完全不感兴趣,换句话说,不刷题,你让他去干别的,他也不想干
    zmxnv123
        70
    zmxnv123  
       90 天前
    ACM 体现的不是勤奋度,不是知识水平,而是智商。

    为什么 Google, Facebook, Microsoft 找人都要白板算法,
    因为人家不是招进去就干活的,内部所有的框架都是自己写的,外面的人都没接触过。

    这种时候找个聪明人远比找个会背八股文的人效率高。
    即便一个人只会打 acm,打到了 world final 结果 gcc 都没听说过,但人家只要学起来肯定比一般人快。
    不得不说,智商的差距真的不是后天能弥补的。
    Jev0n
        71
    Jev0n  
       90 天前
    安全圈的 CTF 是安全学习者很好的比赛交流方式了,在国内除了靶场和授权渗透测试合法情况下就剩下 CTF 这种竞赛型的练习方式了。
    wszgrcy
        72
    wszgrcy  
       90 天前
    @nulIptr 但是我还找不到 20w 的怎么办........
    wupher
        73
    wupher  
       90 天前
    CS 三种人:

    A. 数学家
    B. 系统工程师:Linux, Kernel, Resource, Process Management
    C. Creator: Game, Info System ...

    大家各自的定位和产出都不一样。不想搞算法,就去看看另外二种呗。
    shanqiu7
        74
    shanqiu7  
       90 天前
    打 ACM 厉害的,做项目也不会太差...
    2i2Re2PLMaDnghL
        75
    2i2Re2PLMaDnghL  
       90 天前
    首先,你必须承认一点,所谓『能力』是多种多样的。就好比你我都不太可能在拳击场上把泰森打趴,指不定在座有人连马保国都打不过。
    即使限定到电子设备,也有很大的不同。倒不如说计算机只是工具,它体现了很多不同的方法论。
    甚至连『什么是计算机基础知识』都有分歧,有人认为是图灵机,有人认为是 Lambda Calculus,甚至还有图演算的基础模型( by Stephen Wolfram )。还有人认为只要懂了编译原理就什么都懂了(是,我就是指王垠)。
    实际上这些 OI/OJ,不过是 Hacker's Delight 和 Programming Pearls 的翻版 —— 只不过运用的算法更复杂,而且把抽象的问题写成了应用题的形式。我倒也是充分相信编译优化能够取代大部分优化算法(比如(举例 fibonacci 数列) 毫无优化的递归 -> 记忆化搜索 -> DP -> 局部状态 DP 的这条线完全可以被自动地简化),但是编译优化到现在仍然没有大一统理论。
    back0893
        76
    back0893  
       90 天前
    别酸了
    最少说明别人聪明,学习能力强
    pusheax
        77
    pusheax  
       90 天前
    大家都在讨论 ACM,我作为前 CTF 选手扯一下 CTF 。鉴于 CTF 还比较冷门,门槛会高一点,因为获取知识和进行训练会相对困难一些。
    其实大学的时候,挑大一新生,大家关注的都是有竞赛经历的,最好在上大学之前就有过省赛、国赛获奖。
    虽然这么说不太好听,但是赛队的老师和学长学姐,是不太 care 零基础新生的:两三年时间,从没有竞赛基础,到能打国赛,基本上是不可能的事情。我确实见过能做到的师兄,但那是凤毛麟角。大多数人只能停留在入门阶段。
    所以不做基础知识的培训,可能只是老师的选择罢了。我们之前运营战队的时候,也是新生入学就广撒网,但是后面只挑本身就技术过硬的重点培养。
    也就是 lz 提到的“刷题”,如果入学之前就有能力自主刷题,那么就会被忽悠到战队里面,大家一起刷题,打小型比赛。对于还没有能力看懂题目的新生,我想除非他非常感兴趣,或者个人足够努力,不然很少有指导老师会重点培养。
    pusheax
        78
    pusheax  
       90 天前   ❤️ 1
    关于 CTF 刷题有没有用,因题而异吧。
    之前接触的一些国家主办的赛事,题目基本上是 10 年前的那种风格,考点也是现在用不到的。那种比赛,说实话是拼学校实力,你懂的: )
    至于企业举办,或者高校战队自行举办的,质量会高很多。题目考点也会贴近实际生产应用。基本上是源于生活高于生活。
    不过确实也有不好的风气,就是内卷。比如 Web 安全的题目,现在已经到了离谱的程度,考的和福尔摩斯探案一样,一环扣一环。和实际生产生活严重脱轴,我估计 ACM 也有这个情况吧。
    不过话说回来,CTF 还是入门信息安全最快的方法之一。基本上所有要用到的知识点,CTF 赛题中都有映射。做培训什么的,课程设计都是靠 CTF 做实操。总体来看效果很好。
    不过能不能理解背后的原理,化为己用,还得看个人的悟性。
    aguesuka
        79
    aguesuka  
       90 天前
    @2i2Re2PLMaDnghL 快了, 证明论这块发展得挺快, 现在已经有一些模糊的思路了.
    changepc90
        80
    changepc90  
       90 天前
    大一先掌握基本算法知识其实是挺好的,毕竟还有三年去学其他知识。
    pixiaotiao
        81
    pixiaotiao  
       90 天前 via Android
    跟刷 leetcode 没本质区别
    dinjufen
        82
    dinjufen  
       90 天前
    以前一 leader 从初中开始编程,高中信息竞赛保送清华,感觉什么都会并且都挺厉害
    qinwangzeng
        83
    qinwangzeng  
       90 天前
    同学们只知道 dev,老师只知道叫你们刷题。
    初一看他们不行,太死板;
    又一看他们学习效率高;
    再一看他们以结果为导向,楼主以过程为导向。
    draymonder
        84
    draymonder  
       90 天前
    从早上起床看到了这个贴,把每个人的留言都仔细看了下。

    作为一个菜菜的 acmer,还是会感激当时的教练,尽管并没有教给我太多专业知识,但为我们提供了舒适的比赛氛围。

    也体验过区域赛,作为幕后,把题导入赛场的机器上,部署打印机程序。

    也感叹在 face++实习时,亲身体验过身边有 acm final 选手的学习天赋。

    即使大学时的我只会用 devc++,codeblocks 写着一堆乱七八糟的不入眼的代码。

    不影响我工作中快速学习 linux,vim,tmux,gcc,gdb...xxxx

    看中间件源码甚至觉得不是那么难。

    ===

    选择自己喜欢的一条路,坚持下去就好~
    msg7086
        85
    msg7086  
       90 天前   ❤️ 1
    我以为你要批判一把中学搞 NOIP 的。进来一看是说大一开始从零 ACM 的。
    身边周围还有很多大四毕业了还不会写代码做软件的人,大一零基础 ACM 啥都不会那不是很正常么……
    est
        86
    est  
       90 天前
    CTF 就是信息安全那个夺旗吗?

    这个和 ACM 不是一回事吧。
    xylxAdai
        87
    xylxAdai  
       90 天前   ❤️ 2
    ACM 和算法岗有个屁关系啊。。楼上都让我费解了。。大多数人都拿不到金牌的,ACM 打个一两年就知道行不行了,学点基础有那么难吗,又懒又喜欢做梦,一群奇葩。
    libook
        88
    libook  
       90 天前   ❤️ 2
    你觉得你身边打 ACM 的就只会刷点简单的 ACM 题,那么那些打 ACM 的人可能也觉得你就只是了解一些时下流行的工具而已。

    打竞赛不是玩游戏,有问题大家讨论问题,没有任何必要唱反调,因为你不能假设每一个讨论的人是什么样的知识和技能水平,假如你是一个计算机技术很好的人,在发帖讨论某道 ACM 题的各种思路,然后有人上来就让你去了解计算机基础,你肯定会觉得莫名其妙。

    做竞赛、做工程、做研究是三个不同的方向,不存在哪一个方向做得好了其他方向都能做得好。

    一项工作越复杂,就越可能同时需要多个方向的人才;每个人都可以选择自己的发育路线,打好自己的位置就行,管别人也没啥意义。

    作为一个技术人员,技术到了一定程度之后,发展瓶颈就成了知识和技能的广度,要想继续发展,就需要在其他方向加点了。
    将来参加工作之后,特别是参加工作两三年之后,不管是哪个方向出身,大家都会去补课,计算机基础差的回去补基础,算法差的会去补算法,也有的人会作为选手参加竞赛的集训(比如地区或单位的代表队)。

    当一个人对一个事物不了解的时候,这个人会倾向于使用自己过往对其他事物的经验来给眼前这个事物下定义,但当这个人了解的知识越来越多,就会不断打破自己以前下的定义,无限趋近于事物本质。对于打竞赛,你没有真正参与过的话,不做评价是最明智的。
    Anshi
        89
    Anshi  
       90 天前
    你这就像在吐槽,武林高手除了武功什么都不会,
    Origami404
        90
    Origami404  
       90 天前 via Android
    我学 oi 的时候老去学些别的七七八八的,结果就是我 oi 很菜。。。
    Origami404
        91
    Origami404  
       90 天前 via Android
    不过结果就是我正常的计算机学得很好()
    huiyifyj
        92
    huiyifyj  
       90 天前
    还是那句话,没天赋,没兴趣,或者你不感兴趣也没天赋还不愿意努力就别参加 ACM
    fengsi
        93
    fengsi  
       89 天前
    我觉得没啥问题啊,好好学算法不好吗?

    你说的哪些调试,编译器之类的掌握基础使用很难吗?难不成真得花一周时间去学习怎么单步调试?

    我打 acm 的同学用的最多的也是 devc++

    各人有各人的选择,第一个编程课不都是念念 ppt 吗?我觉得你们老师挺好了,还让你们刷刷算法题了。

    你要是对这个没兴趣,可以做自己喜欢的事,大学不都是这样吗?
    Nich0la5
        94
    Nich0la5  
       89 天前
    天天像高三 通宵刷题看题解。
    软件工程能力是 ACM 不需要的,基本都是退役之后光速补的
    xiaoxinX
        95
    xiaoxinX  
       89 天前
    还是有用,那些问题的解题技巧,算法,思路值得了解,在现在很多都是开源,现成多的基础上,了解更多其实不是坏事,个人有时候就是缺那点思路
    jaywhen
        96
    jaywhen  
       89 天前
    看样子你是不太认可你大学老师的教学方式和周围同学的学习观念,这没什么。周围的人是以一个怎么样的态度对待这些的你管那么多干嘛,本身打 acm 打得 6 的做 development 又做得很厉害的就大有人在,你可以向他们看齐(比如这位 github id:shuding,或者知乎 id:Parabola),而不是到后面慢慢讨厌竞赛编程了就不好了
    iyear
        97
    iyear  
       89 天前 via Android
    @jaywhen 跟风学然后发现不行退队,跟不上正常课程节奏,项目经验又不行的才是大多数吧
    拿 acm 中的大佬来反驳不太严谨呃
    loryyang
        98
    loryyang  
       89 天前   ❤️ 2
    V2 难得的好问题和高质量答案
    其实我个人觉得,这事就和奥赛很像,普通人么,参与一下就可以了。真的风光的就是金字塔顶的几个,你说他们行不行,那肯定非常行。但是其他陪读书的就不是这样了,更多的得到一些锻炼就可以了
    iyear
        99
    iyear  
       89 天前 via Android
    @jaywhen 况且大多数多方面都很强的大佬很少是大学零基础开始的
    大学老师想靠堆人拉人然后选苗子的做法对不太有兴趣和基础的人挺伤的
    lzfnb
        100
    lzfnb  
       89 天前
    对于之前没接触过编程的普通大学生来讲,工程方向比 ACM 性价比更高,风险低,更容易出成果也更容易有成就感。不是说算法不重要,只不过没必要搞到 ACM 那种程度,LeetCode 足够应付大多数问题了
    1  2  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3939 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 08:33 · PVG 16:33 · LAX 00:33 · JFK 03:33
    ♥ Do have faith in what you're doing.