1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

Wesley13
• 阅读 443

1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

点击上方蓝色字体,关注我 ——

一个在阿里云打工的清华****学渣!

1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

图 by:赵学弟@清华园

关于作者: 程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader。 欢迎关注,交流和指导!

背景

今天 1024 程序猿节,首先祝大家节日快乐~1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

熟悉石头的朋友知道,我本科就读于某985(CSU,专 “教如何打 CS” 的大学,也称“长沙左家垅男子高等职业技术学院”),然后硕士保送到某 Top2(THU,也叫“北京五道口职业技术学校”)。

硕士毕业之后,石头也一直从事编码相关工作,从大一开始接触计算机,至今也有 10+年头。计算机相关专业有一个明显的好处,就是你在大学所学的相关专业知识和你就业联系得很紧密。所以,在学校的时候,专业课就一定要好好学习和理解。

如果不是计算机相关专业呢?前两天我一个公众号的读者朋友就比较焦虑,找我沟通说目前在某厂实习,因为不是科班出身,明显感觉和周围同期入职的科班实习生要差一些。

其实,这也没关系,从看到这篇文章的时候开始,就积极准备,弥补相应的专业知识即可。

积累专业知识,重视基础

专业基础知识其实才是重中之重,也是最能拉开程序猿之间差距的地方。在阿里社招面试的过程中也是非常看重基础的,过去项目不牛 X 没关系,基础知识一定得杂实。

石头在参与社招面试过程中,领导也特别交代,除了一般的沟通交流外一定要看基础,基础好,解决问题时有逻辑、有条理,简单的代码题目能写个八九不离十,基本上一面二面也就过了。

那么,到底有哪些专业知识呢?就以我本科 CSU 大学给安排的课程来挨个阐述。我还特意去翻了下我之前的成绩单,有各个学期的各个课程安排。

  • 可视化程序设计基础:其实就是上面提到的 VB,通过可视化的效果来正向反馈自己学习。其实,也可以通过比如用 HTML+JS 来体验一下,对“编程”有个直观感受作为入门也不错。

  • C/C++程序设计基础:C/C++ 还是非常基础的,建议入门编程之后都掌握一下。

  • 离散数学:离散数学对锻炼逻辑思维等还是有很大的帮助。印象中当初老师直接在课上跟我们玩了一个“数十八罗汉” 游戏,就利用了离散数学里面的思想让老师能够保证赢。

  • 数据结构:这个不言而喻,后文详述。

  • 算法分析和设计:这个不言而喻,后文详述。

  • 汇编语言程序设计:这门课程有利于让大家理解自己写的代码是怎样被计算机认识,底层是如何运转的。推荐学习,书籍可推荐王爽的《汇编语言》。

  • 操作系统:随便列几个话题,看看其中的分量。进程、线程、死锁,内存管理、进程调度、任务调度等等,是不是现在工作中也离不开。推荐参考书籍如:《深入理解计算机系统》、《操作系统导论》。

  • 计算机网络:TCP/IP,路由,网络 7 层/ 4 层协议,HTTP,DNS 等等。推荐参考书籍:《计算机网络-自顶向下方法》、《TCP/IP详解》等。

  • 数据库系统:ACID,做开发也绕不开的话题。推荐书籍:《数据库系统概念》、《高性能MySQL》等。

  • 编译原理:跟上面的汇编一样,有利于了解程序背后是如何运转。这门课也比较难,印象中是我当初所有专业课中,本人考试得分最低的一门,😂。词法分析、语法分析、语义分析,中间代码生成优化等等。建议一般人有个大概了解。推荐书籍《编译原理》。

以上是我挑选的部分专业课程,其中相关书籍的推荐仅供参考。其他的课程还有诸如:计算机图形学、软件测试、软件体系结构、设计模式、软件度量和应用等。

从中可看出,正如我前面所说计算机相关的专业基础知识和就业联系得很紧密。如果是在校生,就一定不要浪费时间、抓住这些专业课程的学习机会。不然毕业后从事了编程这个行业,也还是会回到这些基础知识上,正所谓“欠下的债,迟早都是要还的”。

况且,学校的课程学得好,还能帮助获得奖学金、保研、找工作等等,一举多得,何乐而不为呢?

就拿我来说,自认为不是特别聪明,但我足够努力呀。因我出生在农村,接触电脑比较晚,但在大学的时候相对比较勤奋,学好专业课程,各种奖学金拿得手软(得交学费呀,软件工程专业的学费可不便宜呢),最后又成功保研清华。当然,考得好就不一定等于专业课程学得好,但学得好总是对自己有好处的。

其中,上面提到的“数据结构和算法”这个确实是我认为的重中之重,就算在精力有限的情况下,其他可以放松些,但也不要放过这个话题。从我之前写的《有了这份程序员面试指南,你离大厂Offer还远吗?》 这篇文章中也可以看到,数据结构和算法一直是各大公司面试考察的重点。

好在现在网络资源很发达,网上有各种不错的课程可以学习。这里我推荐,清华大学学堂在线的在线课程《数据结构》,分为基础和高级上下两门课程。这门课程是国家精品课程,由邓俊辉老师讲授,在学校时,我上过邓老师的几门课程,真的很赞,他在讲授“数据结构”和“计算几何”方面拥有20多年的经验,课堂用的 PPT 和动画效果也特别赞。最关键的是,这课程可直接免费白piao,不香吗?

有很多人说数据结构和算法没用?那只是他觉得没用而已,或者他的工作当中没用而已。我一直有个观念就是,程序员这个群体本身也是符合金字塔模型的,不一定非得每个人都是编程高手,找到适合自己的,自己待着最舒服的位置就是棒棒哒。

我在之前的这篇文章也阐述了对待基础知识的看法——《从一道面试题谈谈一线大厂码农应该具备的基本能力》,因为在日常有些场景下,“复制粘贴”工程师貌似也够用了,遇到问题有更高水平的人来帮你解决就行,大家都一样的话,怎么体现高手水平呢?

不过从用人单位角度想,当然是更希望招聘更加优秀的选手,怎样体现优秀呢?候选人基数太大,怎么筛选,其实也就“高考”一样嘛,通过“考试”择优录取而已。

有时候感觉大部分程序员都被大量的需求压迫着,被产品经理催促着,仓促地码着繁琐的业务代码,不断的改着 Bug 又引入新的 Bug。业务代码重要么,当然重要(代码就是服务于具体业务的),但同时也还是希望我们不要抛弃一些基础的东西,多培养一下我们的编程素养。

我们在用编程语言,利用各种工具来实现我们想要达到的目的的时候,能做到“知其然,知其所以然”岂不更好?更何况很多时候要解决的问题,恰恰是需要上面提到的专业基础知识的积累。

勤思考、多总结

这个其实不必多说。不管那个行当,做到 “勤思考、多总结” 百利无一害。我在《10 年 bloger 告诉你要不要写博客,又该如何优雅地写博客?》 这篇文章中也提到了,我其实当初最初玩 blog,更多的就是抱着学习总结的态度。

例如,下图是我在读本科和硕士期间相关课程的学习材料,包括老师课件,课程作业和学习笔记和复习资料等,这种平日积累总结很有效,对于临近期末考试也能做到不慌不乱,还是很有作用的。

1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

目前我正在梳理相关的内容,后续我将逐步整理其中的精华内容,分享给大家。

哪怕正式工作之后,写周报、月报等也都是阶段性的总结,再比如晋升答辩等等都是需要你日常的思考积累和总结的。反正将来都会用得着,何不现在就开始锻炼呢。

在日常学习和工作之中,我们看到一个问题的时候,要学会思考背后的道理,比如在接到某个需求的时候,思考这个需求最终是要解决具体什么问题,有没有更好的解决方案?在阅读某段代码,思考原作者为什么要这么设计?

就比如看到这段代码,你能否多思考一下其中的奥秘?

public static boolean isEqual(byte[] digesta, byte[] digestb) {   if (digesta == digestb) return true;   if (digesta == null || digestb == null) {       return false;   }   if (digesta.length != digestb.length) {       return false;   }   int result = 0;   for (int i = 0; i < digesta.length; i++) {       result |= digesta[i] ^ digestb[i];   }   return result == 0;}

上述代码中,比较两个字符串是否相等,按道理,其实中间某位不相等就可以直接返回了,但为啥要遍历完了再返回,这么做的目的是什么?在问了为什么之后,你可能就会知道,原来这么做是为了防止计时攻击。完整文章可参考本人写的这篇文章——《这 10 行比较字符串相等的代码给我整懵了,不信你也来看看》

小福利

最后,送大家一点小福利。(感觉是个公众号号主,不发个当当优惠券都不好意思了。1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

我把上面石头提到的书整理一下,列到下面,感兴趣的同学可以购买,可以多方对比下价格,目前当当每满 100 减 50,最后我这边有个专属优惠可再省 40 元(160 买 400),只要结算时输入优惠券码【2YDRTV】即可。营销套路,书价格自然提升了,不过整体还是有一定优惠的,当然你也可以到其他地方购买, 咱们的宗旨是哪里便宜买哪里即可。

这里是推荐的部分书单:

啊,挑了半天好像最终只能选 10 本,下图是石头家书架躺着吃灰的部分书籍,也提供给大家参考1024程序猿节,聊聊石头学了哪些课,屯了哪些书? 。还有部分书用来垫显示器等等了,就不拍了1024程序猿节,聊聊石头学了哪些课,屯了哪些书? 。你也可以留言告诉大家,你的书还用来垫啥了?1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

以下是【博文视点】(左图)和【机械工业出版社华章公司】(右图)挑选比较经典的 CS 相关书籍,也一并提供给大家参考,趁活动价屯几本也未尝不可1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

1024程序猿节,聊聊石头学了哪些课,屯了哪些书? 1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

经典书籍(点击放大扫码识别)

总结

整体来讲,针对“入门进阶编程”这个话题,我谈了谈自己的理解,重点还是要重视基础,通过小项目正向激励自己多主动学习,然后做到勤思考,多总结。

觉得本号分享的文章有价值,记得添加星标哦。周更很累,不要白 piao,需要来点正反馈,安排个 “一键三连”(点赞、在看、分享)如何?😝 这将是我持续输出优质文章的最强动力。

1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

推 荐 阅 读

1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

快快加入我们——“阿里云-ECS/神龙计算平台” 招人啦
面试官:会玩牌吧?给我讲讲洗牌算法和它的应用场景吧!

面了 7 轮 Google,最终还是逃不脱被挂的命运

从一道面试题谈谈一线大厂码农应该具备的基本能力

互联网大厂内推求职的正确姿势?

给 JDK 报了一个  P4 的 Bug,结果居然……

程序猿石头

程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader。用不同的视角分享高质量技术文章,以每篇文章都让人有收获为目的,欢迎关注,交流和指导!扫码回复关键字 “1024” 获取程序员大厂面试指南。

1024程序猿节,聊聊石头学了哪些课,屯了哪些书?

本文分享自微信公众号 - 程序猿石头(tangleithu)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
10000,感谢有你
!(https://oscimg.oschina.net/oscnet/461c7da4bf4e44d9b6fbfc2ba4acd433.gif)点击上方蓝色字体,关注我——一个在阿里云打工的清华学渣!!(https://oscimg.oschina.net/oscnet/9a5006046
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
2年前
Spring Boot如何利用AOP巧妙记录操作日志?
!(https://oscimg.oschina.net/oscnet/7f1d6247ad65413fbca3b77b0bb9433c.png)点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/3f5a1c2360f9430c93a00b4715527ed9.jpg)本篇
可莉 可莉
2年前
10 年 bloger 告诉你要不要写博客,又该如何优雅地写博客?
!(https://oscimg.oschina.net/oscnet/a5f6a3b8057148fdb458379b1f71e33b.gif)点击上方蓝色字体,关注我——一个在阿里云打工的清华学渣!关于作者:程序猿石头(ID:tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端L
Stella981 Stella981
2年前
Maven 常用命令,你都会几个
!(https://oscimg.oschina.net/oscnet/772a49ea4d09920fdf0651e8c5662a12665.gif)点击上方【村雨遥】添加关注!(https://oscimg.oschina.net/oscnet/91f5066581719dd3c513dcf35da32289482.gif)目录
Stella981 Stella981
2年前
ClickHouse大数据领域企业级应用实践和探索总结
点击上方蓝色字体,选择“设为星标”回复”资源“获取更多资源!(https://oscimg.oschina.net/oscnet/bb00e5f54a164cb9827f1dbccdf87443.jpg)!(https://oscimg.oschina.net/oscnet/dc8da835ff1b4
Wesley13 Wesley13
2年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Wesley13 Wesley13
2年前
2020 北京积分落户结果公示,落户指标最多的公司竟然又是 ?
!(https://oscimg.oschina.net/oscnet/c06ccf32ab5b46beb16d8186bd2cba31.gif)点击上方蓝色字体,关注我——一个在阿里云打工的清华学渣!!(https://oscimg.oschina.net/oscnet/be4741ba2