个人CS学习路线(持续更新)
BELGNAS成长路线(Java?)
PS:这是自学的大概计划,请在7天内整理一份大致的学习计划
引用:
这篇文章本来是写给 ACM 集训队里的学弟学妹们看的,一开始觉得写的并不是非常好,所以只在集训队内部分享过。后来发现虽然是烂文,但多多少少却是帮到了几个人,又觉得还是有点价值的,所以干脆丢到博客上来了。 -- 2022.4.30
最近几个打 ACM 的老队友交流时感叹,大家在大一大二时大部分精力都投入在了算法和数据结构的练习中,又因为学校课程缺少深度、缺少实操、缺少乐趣等原因,没有把专业技能树点开,对操作系统原理、计算机网络、数据库原理等专业科目了解不够深入。
但这些东西都是技术债,早晚要还的。实习前我还觉得有些知识是造火箭用的屠龙术,实习后发现如果只是图着混口饭吃那也确实是屠龙术,但稍微深入一点的工作那就不可避免地要和这些知识打交道。实习时被一致性哈希、单节点崩溃这些东西搞得满头雾水,实习完才发现这些东西都在分布式系统这门课都有详细讨论。还有次面试时被问到有没有看过 Linux 源码里 TCP 的 RTT 是怎么计算的,我当时被吓了一跳,根本没料到会问到这个深度,后面才了解到对方正在做用户态网络协议栈方面的工作,问的都是真的要用的知识。
如果大学真的有四年,那两年打 ACM,两年恶补专业课还挺合理的。但实际的时间点和预期不太一样,大三下学期一开始,找工作的要准备面试,考研的要专心复习,可自由支配的时间会一下少很多,很难抽出大块儿的时间来补这一块儿知识空洞。等找好工作或者考完研又突然多了一大把空闲时间,此时再回过头学虽然也可以,但总有点亡羊补牢的味道。
学校教授内容跟业界需求脱节这个现象在很多大学都存在,属于一种普遍性问题了。你可说这背后的原因有教育资源分布不均、高校教师评价体系重科研轻教学,但这些问题短期内也看不到根本性的改变,短期内的目标是实现自救,把自己的专业水平先提升上去。
但具体到怎么做上,还是没多少前人的经验能做参考。两年前我跟 ACM 的队友们探讨过:“我们学校这支刚组建一年的 ACM 队伍和别的学校组建多年的队伍差距为什么这么大?”当时讨论的结果是差在“沉淀”上,但沉淀这东西虚无缥缈,没人说的出来到底沉淀了啥。直到自己找工作时才意识到所谓的沉淀,就是一代代前人用自己的血泪填满的坑。有的坑前人填满了,可以踏着他们的尸体前进;有的坑前人没填,那只能自己跳进去当垫脚石,让后人不要重蹈覆辙了。
世界上本来只有坑,掉坑的人多了,也就变成了路。
——我说的
构建知识库
还是说一说记笔记这个事儿。记笔记的主要目的有二:
1)第二次遇到同样的问题能快速运用已有经验解决掉。小的比如某个程序要怎么配置,大的比如“进程的 CPU 占用率突增该怎么分析?”。这些东西虽然网上慢慢搜也能搜到,但还是不如翻自己的笔记来的快。不一定要自己从头手写一遍,收藏下前人写的博客链接也是一种记笔记的方法,重点是能不能快速翻阅知识库找到解决同样的问题的方法。
2)用来审视自己的知识体系,知道自己哪块儿薄弱。知识体系的构建是一个滚雪球的过程,最开始记笔记时只是零零散散的几篇,后来记得多了就开始分类摆放,慢慢的就有了一个体系的样子。
具体用什么工具记录完全看个人,喜欢搭博客就用博客记,追求方便可以用各种商业云笔记软件。
参考资料:
CS自救指南、HackWay计算机学习路线、TeachYourselfCS(github)、CS基础课不完全自学指南(博客园)。
需要学习的技能:
计算机基础、编程语言、相关技术栈、计算机使用技巧。
可以阅读的书籍:
《计算机科学导论/概论(原书第4版)》(相当于一本课外读物)(可以看英文版的)
《离散数学以及应用》
《Java核心技术第12版(卷1)》
《深入理解计算机系统》
《计算机网络自顶向下》
🐏 Java开发学习路线 | HackWay技术学习路线
路线:
【已确定】↓
第一阶段:
(已完成)计算机入门
计算机科学速成课
【计算机科学速成课】[40集全/精校] - Crash Course Computer Science_哔哩哔哩_bilibili
->
第二阶段:
计算机科学导论
哈佛 CS50X This is CS50x
哈佛大学CS50X 2022最新版本 计算机入门课_哔哩哔哩_bilibili
->
Java
Java入门-07-Java学习-JDK下载和安装_哔哩哔哩_bilibili
->
离散数学(先速通学校课程,然后读一遍《离散数学及其应用》)
【电子科大】离散数学 王丽杰(全63讲)_哔哩哔哩_bilibili
->
【未确定】↓
C语言和linux
->
Python(python非常好学,现在时间还充裕可以尝试速通)
->
软件工程、操作系统、算法、计算机网络、数据库、并行计算与分布式

浙公网安备 33010602011771号