大学四年,靠着这些计算机书籍,我编程小白变成了别人眼中的大神,斩获 BAT SSP offer

本文主要是介绍大学四年,靠着这些计算机书籍,我编程小白变成了别人眼中的大神,斩获 BAT SSP offer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

记录一下大学四年对自己帮助最大的一些书单

毕业时,大学四年在学院一直默默无闻的我,因为拿到各大互联网公司的 Offer,包括 BAT SSP,被辅导员作为就业的代表推荐为软件之英候选人。

还记得四年前,我从18线小城市里走出,来到学校的软件学院报到,开始面对精彩的大学生活。

大一第一门课程是 C 语言,当时我对编程一窍不通,只觉得是高深无比的东西,而身边有些同学在高中 NOIP的奖牌就拿到手软。

当时链表、二分这种基础的代码都写不好,后来也在学长的建议下,开始自学看视频 + 看书。随着写的代码越来越多,看的技术书籍也越来越多,慢慢的,我发现似乎找到了编程的感觉,对编程也逐渐变得热爱起来。

在这期间,我买了很多书,也看了很多技术书,发现书不在于多,而在于经典。

你想想,那些前辈、大佬将自己十几年的经验都写进一本书里,我们通过几天就可以学习到,这不是血赚吗!

读经典的书是站在巨人的肩膀上。

所以我在这里列出我认为经典的书,尽量保持少,精简。

推荐大家看书的时候保持 看书、实践、看书… 这样不断的循环迭代,不要只看书也不要只写代码。理论结合实践才能进步最快!

这是我大学买过看过的一些书。。。毕业的时候大部分都卖了,因为实在是太重了,现在我看书大部分也都是在网上找 PDF,这样一方面是携带方便,我一个电脑就可以随便存几百本书,另一方面是可以方便我快速筛选一些书,如果确实有特别好的书就会去购买纸质版的。

在这里也只推荐我觉得比较好的书,宁缺毋滥。

书单推荐

一、计算机思维

  • 《数学之美》

    • **推荐理由: ** 吴军博士文笔流畅、干货满满,同时切合实际应用,可以作为计算机科学(尤其是AI领域)的入门读物

  • 《程序员的数学》系列

    • 推荐理由: 程序员需要一定的数学知识,但不是像高数那样,这个系列一共三本,比课本有趣,通俗易懂,而且切合实际应用,良心推荐。第1部讲数学思维,2是概率统计,3是线性代数。

  • 《编码》

    • 推荐理由: 隐匿在计算机背后的语言,这本书不应该叫编码,它更应该叫“Petzold教你造计算机”——作者Charles Petzold创造性的以编码为主题,从电报机和手电筒讲到数字电路,然后利用数字电路中的逻辑门构造出加法器和触发器,最后构造出一个完整的存储程序计算机。不要被这些电路概念吓到——编码使用大量形象贴切的类比简化了这些概念,使其成为最精彩最通俗易懂的计算机入门读物。

二、计算机基础

2.1 操作系统
  • 《现代操作系统》

    • 推荐理由: 本书虽然是理论的书,但是里面的一些操作系统算法介绍都挺非常的详细,有关操作系统的各种理论也是非常详实。

  • 《深入理解计算机系统》

    • 推荐理由: 这本书是一本导论型作品,并不单单的讲操作系统,它创造性的把操作系统,体系结构,数字逻辑,以及编译原理这些计算机基础学科知识有机的结合起来,覆盖了指令集体系架构,汇编语言,代码优化,计算机存储体系架构,链接,装载,进程,虚拟内存、文件、网络等这些程序员所需了解的关键计算机系统知识。如果想打下扎实的计算机基础又不想把操作系统计算机结构编译原理这些书统统读一遍,阅读深入理解计算机系统是最好的方式。

  • 《自己动手写操作系统》

    • **推荐理由:**这本书从零开始实现一个 mini 操作系统内核,一步步指导读者用汇编和C语言实现一个可运行的操作系统内核。看完之后可以对操作系统最基本的原理有比较好的理解。

  • 《操作系统真象还原》

    • 推荐理由: 这本书正如其名,带着你从 0 开始实现(还原)一个操作系统,最可贵的是,这本书会将需要的前置知识提前安排章节做讲解,比如汇编、内联汇编,你完全不用担心不会汇编、C语言,在这本书里作者讲的非常的详细,只要跟着做,自己就能写出一个 mini os内核,如果想实现操作系统内核的一定不要错过。

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CnD1S8dz-1599670300667)(/Users/kaseyli/Library/Application Support/typora-user-images/image-20200909235353537.png)]

2.2 计算机网络

  • 《网络是怎么连接的》

    • **推荐理由:**这本书以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。可以帮助你理解一个数据包是如何从一台电脑发送到另外一台的。看完这本书你就不会再被面试题 **”浏览器输入一个 url,到显示出来中间经过了哪些“**所难倒。

  • 《计算机网络-自顶向下方法》

    • **推荐理由:**这本书首创采用自顶向下的方法讲解计算机网络的原理和协议,将网络分层逐一拆解讲解,自顶向下循序渐进,能够帮助读者快速的理解整个网络世界,也经常被各大高校作为计算机网络的教材而使用。

  • 《图解HTTP》

    • **推荐理由:**这本书对互联网的基石——HTTP协议进行了全面系统的介绍,详细地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全、最新技术动向等方面。无论前端还是后端的开发人员都应该掌握HTTP,推荐。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1kTW1oTF-1599670300669)(/Users/kaseyli/Library/Application Support/typora-user-images/image-20200910000910764.png)]

2.3 编译原理

  • 《编译器设计-第二版》
    • 推荐理由:这本书深入剖析现代编译器运用的算法和技术,强调代码优化和代码生成。书中深入分析现代编译器后端所用的算法和技术,重点讨论代码优化和代码生成,详细介绍了用几个编程语言编写的示例等。这本书不像龙书那么偏理论,这本是理论结合实践讲解。

  • 《编译原理》

    • **推荐理由:**本书深入讨论了编译器设计的重要主题,包括词法分析、语法分析、语法制导分析、类型检查、运行环境、中间代码生成、代码生成、代码优化等,并在最后两章中讨论了实现编译器的一些编程问题和几个编译器实例,每章都提供了大量的练习和参考文献。被誉为”龙书“

2.4 算法与数据结构

  • 《算法-第四版》

    • 推荐理由: 一直以来,说到算法,大家便推荐《算法导论》,但是真正能看下来的人却比较少。而这本书比算法导论友好得多 ,非常适合初学者,同样内容也是非常详实,涉及到了算法和数据结构的绝大部分知识,强烈推荐。

  • 《算法导论》

    • 推荐理由: 如果推荐算法书不推荐这本的话似乎显得不太专业,原因就不说了,懂得自然懂,这本书偏向理论一点,书中证明比较多,大家可以量力而行,看得下去就看。看不下去就看上面那本👆。

三、编程语言学习

C/C++:
  • 《C程序设计语言》

    • **推荐理由:**这是一本穿越二十年风雨的经典C语言书籍,它用清晰的语言和简练的代码描述了C语言全貌,是C语言入门和提高的必备案头书~

  • 《C++ primer》

    • 推荐理由: 这是学习C++的必备之书,最新版包含了C++ 11、14、17标准各个方面,是久负盛名的 C++经典教程,这本书包含了C++的方方面面,无论是初学者入门,或是中、高级程序员提升,这本书均为不容置疑的首选。

  • 《C和指针》

    • **推荐理由:**是这本书拯救了我的指针,如果你对指针和动态内存有任何疑惑,看它!就完事了

  • 《C++ primer》

  • 《STL源码解析》

  • 《Effective C++》

  • 《深度探索C++对象模型》

  • 看完上面👆四本,C++算入门了,接下来靠你自己去进阶~

  • 网络编程:

    • 《Unix网络编程》
    • 《Linux高性能服务器编程》
    • 《Linux多线程服务端编程》
  • Java系:

    • Java 核心技术
    • 《effective java》
    • 《深入理解Java虚拟机》
    • 《Java并发编程实战》

持续更新中。。。

如果有需要文中提到的书PDF,可以直接在公众号 「编程指北」 后台回复 「PDF」 即可领取~
欢迎关注我会在这里持续分享学习经验和原创技术文章,以及如何靠技术赚钱等等

这篇关于大学四年,靠着这些计算机书籍,我编程小白变成了别人眼中的大神,斩获 BAT SSP offer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/857807

相关文章

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)

Java并发编程之——BlockingQueue(队列)

一、什么是BlockingQueue BlockingQueue即阻塞队列,从阻塞这个词可以看出,在某些情况下对阻塞队列的访问可能会造成阻塞。被阻塞的情况主要有如下两种: 1. 当队列满了的时候进行入队列操作2. 当队列空了的时候进行出队列操作123 因此,当一个线程试图对一个已经满了的队列进行入队列操作时,它将会被阻塞,除非有另一个线程做了出队列操作;同样,当一个线程试图对一个空

生信代码入门:从零开始掌握生物信息学编程技能

少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 介绍 生物信息学是一个高度跨学科的领域,结合了生物学、计算机科学和统计学。随着高通量测序技术的发展,海量的生物数据需要通过编程来进行处理和分析。因此,掌握生信编程技能,成为每一个生物信息学研究者的必备能力。 生信代码入门,旨在帮助初学者从零开始学习生物信息学中的编程基础。通过学习常用

计算机视觉工程师所需的基本技能

一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础