知识屋:更实用的电脑技术知识网站
所在位置:首页 > 教育

想自学编程,看编程书有些看不懂,下一步应该怎么办?

发表时间:2022-03-25来源:网络


大一想要学计算机的同学们猪学长知道你们刚上大学,刚刚接触计算机,面对众多的书籍,纷乱的方向有些不知道该如何下手。

不要再听那些乱七八糟的答案,来看一下猪学长对所有刚刚接触计算机的同学在学习上都只有一个建议!!!

不要把计算机学成文科,计算机学习要从基础编程开始,先接触算法与数据结构!!!

不要把计算机学成文科,计算机学习要从基础编程开始,先接触算法与数据结构!!!

不要把计算机学成文科,计算机学习要从基础编程开始,先接触算法与数据结构!!!

零基础的同学你要先知道

什么是编程?

如何编程?

先会编程!

爱上编程!

然后才能热爱计算机这个专业。

字节跳动猪学长曾经担任过某高中信息学奥林匹克竞赛NOIP教练员,亲手带过50多个无任何计算机基础的高中生,其中还有一个初三的女生,从零开始入门编程

亲手从c语言基础语法带起,最后一直到基础算法数据结构、dp、高级图论、数论等高级算法知识与题目。

最后班级50多个学生在当年的信息学奥林匹克竞赛(提高组)复赛中,3个人拿到了省一等奖,17个人拿到了省二等奖,10+多个人拿到了省级三等奖。

那个只有15岁的初三女生,最后在初三那年就拿到了NOIP提高组复赛省级二等奖。

这些都是没接触过任何其他计算机知识的同学,

因为相对来说,算法与数据结构是独立于其他计算机理论知识的。只需要简单入门使用c/c++的基础语法,就可以直接开始手撸算法。

与此同时,如果你早早的在大一就打下了扎实的编程基本功,与算法数据结构功底,对你的大学可以说是受益良多:

说大学:如果你大学里想要超过很多同龄人,在成绩比赛等加分方面超过别人,大学计算机专业里有非常多程序设计类比赛都是非常有含金量的。如果你能在大一就多刷一些题目,打下坚实的编程基础,绝对可以让你在大二大三在各种别赛中崭露头角,最后大学里各种评奖评优奖学金都不是梦。

说深造:如果你有意向大学毕业进入高等学府继续深造,那么无论你是保研还是考研。现在国内著名的计算机高等院校复试均有上机在线编程考试。无论你大学里成绩多优异,无论你考研初试多高,研究生复试机考永远是你不可避免的一关。大学里热爱算法,热爱编程刷题很多的同学们,往往都会在机考中取得优异的成绩,甚至可以弥补你初试分数低的不足。学长还见过大学里非常优秀的其他同学,就是因为只注重考试的分数,疏忽了对自己编程能力的训练,最后导致复试机考爆冷,与自己心仪的大学失之交臂的。

说工作:随着国内互联网行业的发展,对编程人员求职者编程能力的考察越来越重视。如果你以后希望去外企工作,你会发现外企非常注重对求职者算法与数据结构基础,编程能力的考察。国内互联网早些年可能不会要求职者面试时编写程序,现在几乎各大公司面试都会模仿外企的模式,考察求职者的编程能力。很多面试题背很多,很多开发框架了解多少,面试造的火箭对你以后做的工作不一定影响很大,但是你的编程功底是否扎实直接影响了你以后的工作效率。如果你没有通过编程题目的考察,几乎很难通过心仪公司的面试。

说关键:除非你是天才,否则大多数普通人很难短时间提高自己的编程能力的。有很多人临时抱佛脚,到复试机考,到快面试的时候才想起来刷题。除了少数人运气好的碰巧遇到了原题之外,剩下绝大所述人临时抱佛脚几乎都是不起作用的。作为一个走过大学的科班学生,就是到了大三很多成绩优异的同学连递归,二分都写不明白的同学大有人在,真的计算机不是一个文科专业,很多人把计算机都学成了文科,背各种各样的面试题。其实远知打好编程基础才是大学里非常重要的。

说c++还有同学有疑惑,我以后想从事的方向可能不用c++,那我还需要用c++刷题吗?答案是非常需要。如果你对大学里各种程序设计竞赛有了解的话,你就会发现对于做算法题目来说c/c++真的是使用率非常高的语言。因为c/c++非常接近底层,对于单纯的做算法题而言,几乎用不到面向对象的特性,所以c/c++对于写面向过程较多的算法题而言非常的简洁舒服,并且运行速度快。入门编程的同学在用c/c++练习题目的过程中,也会对计算机底层的很多知识有更深的了解。c/c++如果打下了坚实的基础,以后学习其他语言真的轻而易举的。

说了这么多,下面直接进入重点如何做!

一、写给零语言、零编程基础同学的干货算法学习提高路线

猪学长之前为所有计算机大一大二或者非科班想要转行的小白同学原创算法提高刷题路线:

(这里只给出刷题路线,如果想要学习路线,直接翻到此文末尾就行!)

pat乙级 ——> pat甲级 ——> 《剑指offer》——> leetcode(简单、中等)

(特此声明:此路线以及我之前的算法相关回答都是我个人原创,其他人如果未得到我个人授权禁止抄袭违规转载我的回答!!!)

重点强调:如果你只是一个普通的计算机专业的同学,并不是算法竞赛爱好者或者ACM选手,你只需要按照上面这个路线来做普通的算法题目就足够符合大厂技术岗位对算法编程能力的要求了。


a、小白入门算法编程先要正确的学习c/c++语言

关于c/c++语言这块简直有太多小白同学来问我了,有无数的大一的同学看了知乎上很多其他已经工作多年的前辈推荐学习c++需要看《c++ primer Plus》,然后刚接触编程就去买了一大厚本厚厚的《c++ primer Plus》,然后买回来根本看不懂。

上面这本书是我任意找的一本c语言教程书籍,小白同学们学习c语言只需要重点学习:

输入与输出

类型、运算符、表达式

控制与循环

函数

指针与数组

结构体

这几个章节就可以啦,其中额外说明一下指针如果觉得难的同学可以不用先搞太懂,算法竞赛刷题用到的指针也只是简单层面上的使用。

然后c++的学习,猪学长之前推荐过这本书:


上面这些书籍猪学长之前一直有整理,如今都免费分享给同学们:

点这里, 计算机优质书籍项目免费推荐分享!

大家不用一定要用一模一样的我推荐的书籍来学习,其实用于算法竞赛刷题,c++这块只需要学习补充很少的知识,额外很多c++的特性其实是用不到的。下面我也详细的告诉大家需要学哪里:

首先大家可以看到,c++书籍中很大一部分的基础知识其实就是c语言的知识,如果同学之前c语言都学习过了,接触上手c++其实是很快的。c++相对于c语言最主要的就是扩充了一系列的面向对象的机制,但是类这些面向对象的机制我们在算法竞赛中其实是用不到的。那c++我们重点需要学习哪些呢?

上面这些书籍猪学长之前一直有整理,如今都免费分享给同学们:

点这里, 计算机优质书籍项目免费推荐分享!

我们只需要重点了解标准容器中这些概念知识就足够啦!

其他尤其关于类的各种抽象、封装、继承等面向对象机制与其他的知识,暂时先简单阅读了解就行,如果不是能够很好的掌握也没关系。

关于算法相关的部分知识,也就是简单的阅读,大致的理解这些都是什么,如何使用就可以了。如果对其中很多概念还是不理解,可以翻翻书其他部分或者Google搜索一些博客补充一些知识。

尤其是同学们千万不要上来就死记硬背c语言c++编程书籍,看过了的语法忘了是很正常的,后面大家做算法题目练习编程的时候,忘记了某些语法是可以随时翻书的

猪学长之前本科打算法竞赛的时候,学习的时候,有收藏使用一个汇总了所有c/c++ STL等关键模板库以及常用语言知识点的电子版手册,可以说是真的非常的好用。

其中最关键的就是有c++ STL 标准模板库的详细整理总结!!!这个对正在刷算法题的同学们,帮助真的是非常的关键。这里直接现在免费分享给同学们!!!


如果你觉得新手看书实在不容易理解,那么猪学长推荐我们浙江大学翁恺教授的免费的c语言入门课程:


B、想要提高算法与编程能力真的不能只看书,一定要动手!动手!动手!

我看知乎上有太多太多的同学提问,啊啊啊编程语言看了记不住改肿么办?啊啊啊算法与数据结构课程好难,看了半天书也不知道讲的是什么?

真的同学们,真的学习计算机编程,只看书不写程序都是耍流氓!

猪学长当初入门编程,完全是从接触了大量的编程题目开始的,以完美的解决编程题目的为导向,然后反过来推动自己进一步看更多的书籍。

解决问题的过程中,不仅可以激发起自己的兴趣,还能一步一步来提高自己的编程算法能力。

我看到有的回答,上来就直接给推荐《算法导论》,LeetCode....

猪学长之所以推荐这个,是因为之前我之前一直活跃过非常多的oj平台,一直觉得PAT (Basic Level) Practice (中文)乙级的题目是最适合编程小白入门的题目合集了。

乙级的题目每个题都是一个有趣的小例子,然后只涉及数组,循环,判断,字符串等基础编程语言语法的知识,不会设计复杂的算法与数据结构。

同时同学们要记住刷题的目的是为了提高自己的编程能力,不是为了数量。

乙级的题目大概做30-50题目,对c/c++的基础语法掌握的非常扎实了。

你就会发现你初步的了解什么是编程,什么是算法。

你还会知道原来编程可以解决这么多的问题呀!

当然在做题目的过程中,如果语法忘记了就可以随时翻书。

有的题目为什么差一个点没有通过,都需要你去排查bug,

这个过程既是对语言语法的熟悉,也是对程序设计能力的高。

遇到不会的问题,可以去网上搜对应的题解参考,

pat题目的题解网上比如csdn之类的是全部都可以找到的。

尤其是当看到其他人写的优秀的题解代码的时候,

真的会由衷的觉得,怎么能写的这么简洁精美!

这个过程中,你的编码能力就在提高。


当然学长之前学习的时候也有找到pat题解的优质pdf文档,

这里直接免费分享给同学们。 提取码是:uat0


c、算法编程进阶,开始接触数据结构与更多算法

猪学长之前看到了一个问题,特别有意思:这个问题我还没来得及去回答。

这个同学的提问很明显暴露出了我国计算机教育的问题,就是按部就班的推进课程,其实学生能力根本没得到训练与提高。

算法与数据结构是猪学长本科时候觉得最有意思的课程,这门课程我们是大二才开,但是我大一的时候自己提前学了好几遍了。印象很深刻这门课我一学期没怎么去上课,最后期末拿了99分的成绩。哈哈,不给我100老师说是怕我骄傲。

那猪学长是怎么把数据结构学的这么好的呢?

还是前面的方法论,要以解决问题为导向,反过来看书!!!

而不是先去啃厚厚的困难的算法书籍,然后看的一头雾水。

当你已经能完全可以胜任pat Basic Level的题目后,

你就可以在学校课程之前,提前去学习了解数据结构的相关内容:

这里推荐: 《啊哈!算法》这本书来入门

这本书真的是用非常幽默易懂的语言,

以及各种有趣具体的例子,来帮助很多同学入门算法与数据结构!!!

这本书跟之前一样,先简单的翻阅,

初步的了解什么是线性结构,链表,栈?

什么是非线性结构,树,二叉树?

什么是图?哇,计算机程序中咋还有图?

通过这些,你就会发现你对算法与数据结构有了初步的了解!

这时候,你会发现你的编程有多了很多技能,这时候你就可以去挑战更高难度的题目了!

叮!Pat Advanced Level 解锁!

你就可以去做PAT advanced 甲级的题目了,

真的pat甲级题目所设计到的数据结构难易程度真的是非常棒的。

没4个题目为一组,

前两题是乙级题目,后两题是甲级数据结构的题目。

会涉及到主流的链表,栈,树,以及基本图论算法的知识,

最关键的是不会出现很多ACM困难级别的算法题目!

真的建议所有有时间的同学,好好的做一下PAT甲级的题目,这个质量真的是高。

题解同样去网上搜索,或者用猪学长整理的也行。

当然学长之前学习的时候也有找到pat题解的优质pdf文档,

点这里直接免费分享给同学们。 提取码是:uat0

当你Pat甲级做了50道左右,比较熟练了的时候。

叮!剑指offer习题集解锁!

这个还有配套书籍:

你看到了题目丝毫不会做,这时候你就去找大佬的题解,发现题解写的完全看不懂,

然后你就想起来了这个题用到了二叉树这种数据结构,

然后自己回头再去翻数据结构教材或者书籍,重新结合这个题目再去学习二叉树的基本知识,

比如二叉树的遍历等等。

等你复习好,这回回来再看大佬的题解,发现明白他的思路了,

然后你自己努力把题目完成通过!!!

当你剑指offer60多题目都弄懂,同时PAT甲级题目做了50题左右,

如果你还说自己不懂算法与数据结构,

你就来打猪学长!!!

这个时候你就已经具有扎实的算法与数据结构基础了,

如果你在大一的时候就看到了猪学长的回答,并且早早的开始行动,

大一一年的时间足够完成上面的所有内容学习,甚至努力的同学一学期就可以。

这时候你就具备了参加一些大学里的程序设计比赛的能力了!

里面详细的把LeetCode热门的高频面试题目按照知识点做了分类整理,同时给出了最优的题解!有需要的同学记得保存起来,日后一定会用到!

而且于此同时,你会发现你的编程能力有了很大的提升,

你遇到新的题目往往会在思路上可能有所困惑,但是一旦有了思路,

你编写程序去实现是非常得心应手的!正常的本科同学做到这一步,

就足够达到校招面试对算法编程能力的要求了!!


赠人玫瑰,手有余香

猪学长之前一直都有认真整理很多技术书籍互联网校招面试题目,现如今猪学长也已经毕业啦,都分享出来直接分享给有需要的同学们。

同学们如果觉得有帮助的话,不要白嫖猪学长,给猪学长点一个吧,

这样可以让更多的同学看到!


最后同学如果还有什么计算机相关互联网大厂求职技术方向等等问题,都可以在评论区给猪学长留言,或者关注我猪学长哈,猪学长不向同学们开通付费咨询!

同时对字节跳动感兴趣的同学,想要找猪学长内推的,也可以联系猪学长哈。

真心希望可以帮助到你。


收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜