图 by:赵学弟@清华园

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

背景

今天 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,更多的就是抱着学习总结的态度。

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

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

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

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

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

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 行比较字符串相等的代码给我整懵了,不信你也来看看》。

小福利

最后,送大家一点小福利。(感觉是个公众号号主,不发个当当优惠券都不好意思了。

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

这里是推荐的部分书单:

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

总结

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

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

推 荐 阅 读

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

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

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

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

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

程序猿石头 

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

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

  1. 1024程序猿节:致敬改变世界的你

    如果你是70后程序猿,你也许还记得286机器特有的味道: 如果你是80后程序猿,为你打开编程大门的可能是小霸王学习机: 如果你是90后程序猿,在花花世界中顶着秃顶的压力毅然选择了计算机专业的理由,或许 ...

  2. 1024程序猿节:揭秘腾讯老中青三代程序猿工位

    相传敲代码是个高危行业,没有秃顶可能是工作不饱和,再出BUG还会被拿去祭天,程序员也是互联网的另类物种,钱多话少爱自黑,月薪五万像五千. 这当然只是一种有趣的调侃,他们应该获得我们的掌声. 在1024 ...

  3. 今天1024程序猿节啦!一起穿格子衫上班吧

    web前端教程 用大白话,来讲编程 查看全文 http://www.taodudu.cc/news/show-1159889.html 相关文章: Node.js v11.0 正式发布! 拜托!代码有 ...

  4. CSDN日报20170407 ——《嘿,程序猿,你该学点经济学了!》

    [程序人生]嘿,程序猿,你该学点经济学了! 作者:夏雨 笔者一直认为,一个好的程序猿,不仅仅是代码敲得好,其他方面的知识和能力同样很重要.特别是随着年龄的增长,很多人也慢慢的往管理层发展.这个时候沟通 ...

  5. 学习笔记 - 预祝CSDN 1024程序猿节日圆满成功

    1.CSDN社区置顶弹窗1024程序猿节日 这些天,访问csdn,首先置顶的就是1024程序猿活动节日,有很多大咖参加活动,虽然我一个都没有face to face见过,但是在社区和论坛都已经神交已久 ...

  6. 纪念一下第一个在csdn的1024程序猿节日

    纪念一下第一个在csdn的1024程序猿节日 啥子是1024 啥子是1024 1024 是自然数之一 1024是2的十次方 1024是二进制计数的基本计量单位之一 在数字世界里,1024BYTE(字节 ...

  7. 程序猿,这里有你想学的10门机器学习课程 | 资源

    Hung栗 编译自 Hackernoon  量子位 出品 | 公众号 QbitAI 一个程序猿,如果想在机器学习或者数据科学上补充一下能量,有哪些资源可以用? 来自印度的Javin Paul就是一只这 ...

  8. 在大厂呆过多年的35岁“大龄”程序猿,聊聊35岁以上的程序猿们都干什么去了

    在大厂呆过几年,后来带了几年技术团队.作为过了35岁的"大龄"IT人,聊聊身边同学同事和朋友的现状. 同学.前同事.一些朋友,大部分都过了35岁了. 1.前华为同事,之前部门业务没 ...

  9. SegmentFault 巨献 1024 程序猿游戏「红岸的呼唤」第三天任务攻略

    第三关也不是一般的难呐,那么继续写一下解题过程(第四关会是什么样呢?). 高速传送门:http://segmentfault.com/game/3 在用我想到的方法(booth算法.矩阵变换.各种CP ...

最新文章

  1. 在Data Collector中使用TensorFlow进行实时机器学习
  2. Android华容道之一步一步实现-7-重构代码
  3. 【CyberSecurityLearning 17】三层交换技术及实验演示、内部网络规划、HSRP
  4. java京东左侧固定层_京东首页右侧固定层
  5. 2019最新 Java商城秒杀系统的设计与实战视频教程(SpringBoot版)
  6. cad在线转低版本_为什么别人制图那么快?41个CAD实用技巧,3天轻松玩转CAD
  7. 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}
  8. 使用简单的5个步骤设置 Web服务器集群
  9. 深入理解Hadoop之HDFS架构
  10. 【Excel-2010】规范录入调查问卷
  11. c语言char a[10]; sprintf(a,%d,n);,c语言输入输出的一些细节
  12. 【转载】Redis在windows下安装和配置
  13. 在线php中文手册,JavaScript中文参考手册
  14. Linux 之十五 Kernel 仓库、Kernel 协作方式、订阅邮件列表、提交 PATCH
  15. 魔众视频管理系统 v3.2.0 系统自动升级,页面SEO优化
  16. 图嵌入综述整理(上)
  17. 2020年最全各省市矢量数据下载(含城市道路、铁路、高速、省道、县道、乡道等+河流水系网+建筑轮廓+铁路网等shp矢量数据+矢量量边界+wgs84坐标
  18. 可能是最好的设计模式入门教程——里氏替换原则
  19. 永恒之蓝实验 MS17-010
  20. 大数据都应用在哪些领域?

热门文章

  1. 村田muRata电源维修交换机服务器电源维修及主要功能特点
  2. 中兴c300业务板_中兴C300 GTGO ETGO GTGOE GTGOG OLT业务板 EPON GPON
  3. Excel批量数据拼接转换为 insert 插入语句
  4. c# short_C#中的short关键字
  5. 计算机语言栏在哪里,语言栏没了-语言栏消失了,怎么办?我电脑的语言栏为什么开机时总不找不见了?总 爱问知识人...
  6. uos打包——appimage包转uos的deb包
  7. python百度贴吧图片下载脚本实例
  8. 网站安全漏洞检测报告年度安全分析
  9. 一次让我瞬间长大的经历
  10. Quartus II 软件编写程序及烧录步骤