L★Hawk L★Hawk
签名是一种态度,我想我可以更酷...
关注数: 108 粉丝数: 622 发帖数: 38,910 关注贴吧数: 110
一些适合时间不多的非科班同学自己补cs基础的网络资源 很久没发正经帖子了,看到吧里依然有一些想自学cs的人,来分享一些自学cs的网络资源。自学的别光看培训班视频,也得补补基础,修炼一下内功,不然真是被科班彻底吊打了。 如果你英文不好,请去考公,以下材料都是英文的。如果你是考研的,或者能啃厚书,请去啃书。我推荐的适用于啃不动厚书,但是又想自己补充cs基础以满足工作需要的自学党,换句话说就是适合懒人。 非科班学生,一般来讲最缺两样东西,一个是对数据结构和算法的全面系统的学习,另一个是对系统编程的理解和经验,这两部分可以说是码农的刚需知识,学好了才能开始实践,不然只能抄代码。然而补这两样东西,市面上常见的材料如《算法4》,《算法导论》,《CSAPP》等等,大部分人啃不下去,一上来就被吓退了。 这里提供三份资源,分别用来补数据结构,算法,和系统编程。三件套 1.数据结构 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fwww.geeksforgeeks.org%2Fdata-structures%2F&urlrefer=ba700fa9726b80b65a531a1611a06a87 一个印度人建的网站的其中一个section,东西非常多,但是不需要全看。第一遍看的时候只需要把每个数据结构的基本性质,表示方法,插入,删除,遍历操作的文章看一遍就差不多了,高端topic有兴趣可以看,没兴趣留着以后慢慢看。文章图文并茂,通俗易懂,有一些文章含视频(印度味英语)讲解,大多数文章都含代码,并且可编辑,可直接在网页上运行,语言是C/C++和Java,少数文章提供python运行环境。 这个网站虽然广告比较烦不过内容真的非常好,数据结构只是它所有内容的冰山一角。它的算法部分在我准备g家面试的最后阶段提供了极大的帮助,作用甚至超过leetcode,一些文章深入讨论了一些非常有意思的算法问题。不过算法部分初学我还是不建议用它,因为有更好的资料。 2.算法 http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fjeffe.cs.illinois.edu%2Fteaching%2Falgorithms%2F%23book&urlrefer=7253a4ca0adae6eb4cb5c7bd90241a48 我校知名算法老师Jeff Erickson的杰作。这是目录 1.前言 Preface (8 pages) 2.引言 Introduction (20 pages) 3.递归 Recursion (48 pages) 4.回溯 Backtracking (26 pages) 5.动态规划 Dynamic Programming (62 pages) 6.贪心算法 Greedy Algorithms (28 pages) 7.基本图算法 Basic Graph Algorithms (38 pages) 8.深度优先搜索 Depth-First Search (32 pages) 9.最小生成树 Minimum Spanning Trees (16 pages) 10.最短路径 Shortest Paths (35 pages) 11.全部最短路径(Floyd–Warshall算法) All-Pairs Shortest Paths (18 pages) 12.最大流&最小分割 Maximum Flows & Minimum Cuts (26 pages) 13.分割和流应用 Applications of Flows and Cuts (26 pages) 14. NP困难问题 NP-Hardness (50 pages) 每个topic的正文部分大概只有总页数的一半到三分之二,因为后面有习题。 页数远少于算法导论之类的书,并且字大,一页没多少内容,更容易看下去。包含了几乎所有重要算法。正文内容包含一些数学推导及证明(我认为还是有必要的),还有伪代码。有时间自己可以用熟悉的语言实现并运行,效果会很好。 上面两个学完可以去刷题(leetcode,PAT,whatever。。)了。这时候你应该已经可以秒掉很多不含奇技淫巧的基础题了。 3.系统编程 http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fgithub.com%2Fangrave%2FSystemProgramming%2Fwiki&urlrefer=fdaf9cdc8cb6d7664b5f1775b66b920d 依然是我校资源。算是本科生system programming课的衍生文字版资料。包含以下章节 1.学习C编程 2.进程(Process) 3.内存和内存分配器(Memory Allocator) 4.POSIX线程(Pthread) 5.同步(Synchronization) 6.死锁(Deadlock) 7.进程间通信和进程调度(Inter-process Communication & Scheduling) 8.网络(Networking) 9.文件系统(File Systems) 10.Unix信号(Signals) 每一个章节下面有若干小topic,文章含C语言代码示例和图片。注意,这个资料里面的代码可能初学者不好看懂,因为会用到一些你没见过他也不解释的Linux system call api,这时候就需要去Linux手册http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Flinux.die.net%2Fman%2F&urlrefer=3a01d9121bfe2d81ba019fcfcebdd98f查阅。查阅文档是码农必备技能之一。 这个资料涵盖了一个码农需要知道的所有系统知识,其中网络(Networking)这一章包含了应用层(client/server),传输层(tcp/udp)和rpc的基础内容,你只要不是写network infrastructure的程序员,这些就够用了,不用再单独学网络了,因为剩下的网络层链路层这些内容一般不归你管。基本的系统编程学完了,你能做的事情就很多了,基本上系统相关的领域你都可以尝试了。无论是java多线程,做数据库,写OS kernel模块,还是做分布式,涉及的无非就是上面这些东西。 大概就是这样了,希望有用吧,吧务觉得好的话不要脸的申个精
宇宙机吹的太响了,需要对内部方向扫一下雷。 谈谈个人眼中CS里面的宇宙宇宙机,普通宇宙机,辣鸡宇宙机。 一般吹的响的“宇宙机”基本都属于宇宙宇宙机类,培训班培训的内容全部属于宇宙宇宙机。 普通宇宙机其实都是很好的方向,而且很多不受互联网的冷暖影响,门槛也都很高,但是需求不如宇宙宇宙机那么爆炸。 辣鸡宇宙机类基本可以开除宇宙机籍,宇不宇宙机和他们没啥关系。 每个方向本身都非常有价值,这个主要是按照就业情况分的。个人浅薄理解,欢迎讨论。同级别中不分先后。 宇宙宇宙机: 1.机器学习类:包括NLP,基于深度学习的CV,数据挖掘,社交网络分析等等方向。大数据pipeline的倒数第二层,国内算法岗直接对口方向,正在爆炸。 2.网络和分布式系统类:直接对口web后端研发,以及大数据平台,云计算。需求最大的几个方向。越老越吃香,非常需要高端人才。 3.数据可视化/HCI:直接对口web前端,UI/UX,大数据pipeline的最后一层,也可以分大数据的蛋糕。 普通宇宙机: 1.数据库系统:大数据pipeline的第一层。非常重要的方向,之所以分到这一级主要是现在数据库已经趋于成熟,数据库公司普遍养老,对新人需求有限。Michael Stonebraker弄的新架构开的几家公司都半死不活,市场已经基本被Oracle和几个NoSQL系统锁定,新架构的应用场景有限。现在业界新系统的一个重要目标是,在高scalability的系统中做到ACID和strong consistency,但是这个应用场景其实很小,可能也就金融公司做高频交易是一个比较合适的场景,eventual consistency可以满足其他大部分场景。学界就更搞笑了,大部分搞数据库的教授都在往analytics方向走,又回到机器学习数据挖掘了。 2.操作系统(虚拟化方向):云架构基础,可以向宇宙宇宙机的2看齐。现在云硬件是一个趋势,未来还是大有可为的。虚拟机什么的就不说了,非常成熟,需求不是特别大。 3.操作系统(存储方向):刚需方向,和数据库一样重要。需求的话有几个公司一直在招人,基本不受互联网冷暖影响。 4.计算机安全:铁饭碗,门槛高,搞的人不多。越老越吃香。 5.嵌入式:物联网今后是大有发展的一个方向,可以给嵌入式续一波命。 6.高性能计算/并行计算:本来应该属于辣鸡宇宙机,NVIDIA一家公司和深度学习的火爆直接把这个方向可以提到这一档。CUDA高级工程师非常缺。 辣鸡宇宙机: 1.编程语言和编译器:虽然很多工作做到最后都是玩这个玩意儿,但说到底还是屠龙之技,光搞这个的话,如果不是真天才,刚毕业实在不好找工作。 2.操作系统(传统OS研发):对口就业几乎没有。微软windows组都拆了,苹果Core OS组这两年只招test。 3.体系结构:假宇宙机,找工作向EE看齐,而且门槛还高。但如果小方向走得好可以和普通宇宙机的6看齐。 4.科学计算与仿真:假宇宙机,常见情况是辣鸡专业博士生做了几年模拟跑到这个方向以为转成宇宙机了,实际上最后还是从哪来的回哪去,市场属于各行各业的科研界。 5.传统CV:如果不是贾扬清那样的神人还是别碰了。逆时代而行的辣鸡方向,踩坑率太高了,常见情况是辣鸡光电专业的被忽悠到这个方向以为翻身农奴把歌唱了,然而。。。 6.计算机图形学:主要对口方向是游戏和CAD软件开发,游戏需求虽然大,但其中一大部分是做策划,设计,系统和data的,并且应届生不容易找图形工程师的岗位,CAD软件就忽略不计了,需求太小。本来VR可以续一波,但现在看来没续上。 7.算法理论:对99%想找工作的人来说是辣鸡方向。实际上还是很有意思的一个方向。 8.软件工程理论:国内有做这个的吗?其实还是挺有用的,学了至少不白学,但是专门做这个就是比较虚的一个方向了,只能间接转化成生产力。
1 下一页