计算机里面的坑可太多啦~不知道题主是对于哪一块感兴趣呢?
我们从一些比较有意思的项目说起吧,顺便来看看分别需要什么样的知识:我想做一个自动监控温度,用电状态之类的参数,并且在屏幕上显示的工具,用来监控家中温度等状态。我们需要「传感器」来获得数据,并且保存(需要网络知识)到一个嵌入式设备上(比如「树莓派」,数据库用「SQLite」),并且将数据实时地显示出来(需要「HTML」和一些「PHP 或 Python」的知识)
我想弄一面表白墙,挂在校园内的站点上需要「HTML」的知识支撑整个页面,并且有「JavaScript」的知识渲染,加上一个「MySQL」数据库
从上面的例子中,我们可以发现,在许多情况下,数据库、网络、HTML 等知识是必不可少的,此外,我们可以考虑以下问题:如果需要实时渲染很多东西的话,是让数据源推送给显示端?还是显示端不断地从数据源抓取?
为了解决这个方面的知识并且获得一个最佳的优化,一些算法的知识也是非常重要的,它们虽然不能直接帮你解决某个实际问题,但是可以让你设计的东西更加精妙,算法,在计算机专业中也是一个非常有趣的话题,值得特别关注。
数学基础
基础对于外界同学来说可能表面上看来是屠龙术,但是对于基础的提升有助于提升我们的内功,由于计算机是由数学衍生而来的,所以数学的重要性毋庸置疑,以下推荐两本与计算机相关的数学方面的书供大家参考:《具体数学》
豆瓣评分:9.6
本书介绍了计算机的数学基础,内容涉及求和、取整函数、数论、二项式系数、特殊数、母函数(发生函数)、离散概率、渐近等,面向从事计算机科学、计算数学、计算技术诸方面工作的人员,以及高等院校相关专业的师生。《思考的乐趣》
豆瓣评分:8.2这本书有意挑选了初等的话题,让大大小小的读者都能没有障碍地阅读。文章内容新,让有数学背景的人也会发现很多自己没见过的初等问题。 文章是独立的。一篇文章一个话题,文章与文章之间基本不会做参考,读者可以随意跳着看。本书包括 5 部分内容,即生活中的数学、数学之美、几何的大厦、精妙的证明、思维的尺度
计算机专业基础
如果希望自己在专业水平上有所提升的话,在计算机专业相关的基础中,有以下课程非常重要:计算机操作系统方面:
《深入理解计算机系统(原书第2版)》
豆瓣评分:9.7本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共 12 章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级 I/O、网络编程、并发编程等。书中提供大量的例子和练习,并给出部分答案,有助于读者加深对正文所述概念和知识的理解。本书适合那些想要写出更快、更可靠程序的程序员阅读。
数据库原理方面:
《MySQL 必知必会》
豆瓣评分:8.4MySQL 是世界上最受欢迎的数据库管理系统之一。书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。通过重点突出的章节,条理清晰、系统而扼要地讲述了读者应该掌握的知识,使他们不经意间立刻功力大增。
《数据库系统概念》第六版
豆瓣评分:8.4本书是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。它被国际上许多著名大学所采用,包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学等。我国也有多所大学采用本书作为本科生和研究生数据库课程的教材和主要教学参考书,收到了良好的效果。
计算机网络方面:
《计算机网络自顶向下方法》第六版
豆瓣评分:8.9《计算机网络:自顶向下方法》是业界最经典的计算机网络教材之一。适合作为本科生或研究生“计算机网络”课程的教材,同时也适合网络技术人员、专业研究人员阅读。
计算机组成原理方面:
《计算机程序的构造和解释(SICP)》
豆瓣评分:9.5
这本书讲的是从数据抽象、过程抽象、迭代、高阶函数等编程和控制系统复杂性的思想,到数据结构和算法,到编译器/解释器、编程语言设计。
算法与数据结构方面:
《算法第 4 版》
豆瓣评分:9.4
本书全面讲述算法和数据结构的必备知识,是算法领域的经典参考书,全面论述排序、搜索、图处理和字符串处理的算法和数据结构,涵盖每位程序员应知应会的 50 种算法,且非常适合初学者入门。
《大话数据结构》
豆瓣评分:7.9本书以一个计算机教师教学为场景,讲解数据结构和相关算法的知识。通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。本书内容趣味易读,算法讲解细致深刻,是一本非常适合自学的读物。
《算法图解》
豆瓣评分:8.4本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。书中的前三章将帮助你打下基础,带你学习二分查找、大 O 表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;K最近邻算法。
《数据结构和算法分析- C 语言描述》
需要有一定 C 语言基础,在此就不做更多叙述。
《算法导论》
MIT 的经典算法教材,对于计算机专业的同学来说阅读起来都有一定困难,如果题主感兴趣,可以在一定算法基础上阅读学习。
有了一定的算法基础后,可搭配题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台leetcode-cn.com
以上内容的学习似乎不会直接带来开发上的帮助,但是却可以从内在地提升程序员对于计算机工作原理的理解,在 CoolShell 的一篇文章中指出:玩具手枪是易用的,重武器是难以操控的,多给他们一些玩具,这样他们就会对玩具玩地得心应手,觉得玩玩具就是自己的专业……
语言与应用
有了上面基础的学习后,我们就可以考虑往应用和语言的层面上去发展了,比如:
C++
做系统开发,刷题必备~《C++ Primer 中文版(第 5 版)》
豆瓣评分:9.3
C++ 经典教程,《C++ Primer 中文版(第5版)》所有示例均全部采用 C++11 标准改写,适合初学者入门,或是中、高级程序员提升。
《C++ 编程规范——101 条规则、准则与最佳实践 》
豆瓣评分:8.2
两位知名的 C++ 专家将全球 C++ 界 20 年的集体智慧和经验凝结成一套编程规范。这些规范可以作为每一个开发团队制定实际开发规范的基础,更是每一位C++程序员应该遵循的行事准则。书中对每一条规范都给出了精确的描述,并辅以实例说明。
《超越 C++ 标准库——Boost 库导论》
豆瓣评分:7.5
Boost 库是除了标准库之外,很实用的一个库,这本书作为 Boost 的入门书已经超越了导读功能。
《Effective Modern C++——改善 C++11 和 C++14 的 42 个具体做法》
豆瓣评分:9.6
C++11 虽然填上了一些 C++98 的坑,但又引入了不少新坑。很多新特性并不像它们表面上看起来那样简单。不过 Meyers 确实功力深厚,每个特性的前因后果都讲得一清二楚,给出的使用建议也很贴合实际。
Java
写 Android 程序,写 Spring 框架~《Java编程思想(第4版)》
豆瓣评分:9.1
本书是高等院校讲授面向对象程序设计语言以及 Java 语言的教材和参考书。本书共 22 章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Java I/O系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性。《深入理解 Java 虚拟机:JVM 高级特性与最佳实践(第2版)》
豆瓣评分:8.9本书是 Java 图书领域的经典著作和畅销书。《深入理解 Java 虚拟机:JVM 高级特性与最佳实践(第2版)》共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对 JVM 进行了全面而深入的分析,深刻揭示了 JVM 的工作原理。
《Effective java 中文版(第2版)》
豆瓣评分:9.1本书可作为技术人员的参考用书。介绍了在 Java 编程中 78 条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。通过对Java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰、健壮和高效的代码。
Python
这里需要注意的是,现在的主流标准已经是 Python 3,应该尽量避免看 Python 2 的书:
《Python Cookbook》
豆瓣评分:8.6
这是一本入门书,《Python Cookbook(第3版)中文版》介绍了 Python 应用在各个领域中的一些使用技巧和方法,其主题涵盖了数据结构和算法,字符串和文本,数字、日期和时间,迭代器和生成器,文件和 I/O,数据编码与处理,函数,类与对象,元编程,模块和包,网络和 Web 编程,并发,实用脚本和系统管理,测试、调试以及异常,C 语言扩展等。
Web 框架
写网站,做站点。《Spring实战(第4版)》
豆瓣评分:8.3《Spring实战(第4版)》适用于已具有一定 Java 编程基础的读者,以及在 Java 平台下进行各类软件开发的开发人员、测试人员,尤其适用于企业级Java 开发人员。本书既可以被刚开始学习 Spring 的读者当作学习指南,也可以被那些想深入了解 Spring 某方面功能的专业用户作为参考用书。
Django 的官方文档
网站架构
让自己的网站跑得更快,走得更远,架构更明确。《大型网站技术架构》
豆瓣评分:7.9《Kubernetes 权威指南》
豆瓣评分:7.3Kubernetes 是由谷歌开源的 Docker 容器集群管理系统,为容器化的应用提供了资源调度、部署运行、服务发现、扩容及缩容等一整套功能。《Kubernetes权威指南:从Docker到Kubernetes实践全接触(第2版)》从一个开发者的角度去理解、分析和解决问题,囊括了Kubernetes 入门、核心原理、实践指南、开发指导、高级案例、运维指南及源码分析等方面的内容,图文并茂、内容丰富、由浅入深、讲解全面;并围绕着生产环境中可能出现的问题,给出了大量的典型案例,比如安全问题、网络方案的选择、高可用性方案及 Trouble Shooting 技巧等,有很强的可借鉴性。适合软件工程师、测试工程师、运维工程师、软件架构师、技术经理阅读。
Git 与协作
和小伙伴一起开发一个项目《Pro Git》
豆瓣评分:9.3
本书目前只有英文版,感兴趣的话可以选择阅读。
最后,希望题主能够静心学习这些书籍,计算机行业看似入门门槛低,但是需要持续不断地钻研新技术,打好根基才会再以后的学习中不慌乱,并且,许多互联网公司面试也会问到非常多的计算机基础知识,即使从面试的角度,打好根基也是非常重要的,加油!
欢迎各位知友关注力扣官方微信公众号:「LeetCode力扣」,更多关于程序员面试、技术干货的内容等你来啃!