作为一名软件工程师,这篇回答主要从找工作需要掌握哪些计算机专业的技能这个角度来谈谈编程语言、操作系统、系统设计、面试&刷题等方向的入门级的经典书籍。我将会介绍一些适合转专业或零基础的小白学习的书籍,也会介绍一些适合计算机专业的学生或者entry level的软件工程师使用的书籍。(内附PDF、课程链接)
答主Yiwen Xu, 2017-08~2019-05就读于卡耐基梅隆大学(CMU)Computational Biology专业,芝士圈留学行家,现在为美国Top4互联网公司软件工程师,从事人工智能语音识别相关的产品开发。
我建议学习计算机专业的方法是:
1. 先学习一门语言,比如Java
2. 在熟悉了一门语言之后开始学习基本的数据结构和算法
3. 学习操作系统的基本知识
4. 根据个人兴趣可以选择某一个方向细学,比如计算机网络,数据库,Web基础,系统架构等
5. 如果正在或即将找软件工程师相关的工作,可以学习系统设计、面试常考的数据结构和算法等知识
【编程语言】
工业界常用的编程语言有Java、C++、C,常用的脚本语言有Python,如果从事大数据相关的工作还需要掌握SQL。
1. Head First Java
https://www.oreilly.com/library/view/head-first-java/0596009208/
入门级的学习Java的书,书里面有大量的图片方便理解,内容也涵盖比较全面。
2. Thinking in Java
学完基本的Java后就可以看这本书了。这本不是入门书籍,适合有一定Java基础的人进阶学习Java用。
3. Data Structures and Algorithms in Java
UC Berkeley CS61B data structure这门课的教材。这本书主要讲了基本的数据结构,比如Array,LinkedList,Stack,Queue,Tree,Graph等,并且每章节都附了练习题。
这门课的链接:https://inst.eecs.berkeley.edu/~cs61b/fa19/index.html
4. A First Course in Database Systems
这本书主要教SQL查询数据库的基本技能,适合新手入门。除了计算机专业之外,想做信息系统、Business Analytics方向的人也适合看。
5. Python Crash Course: A Hands-On, Project-Based Introduction to Programming
我自己自学Python时看的书,很适合零基础的人看。内容讲的很全面,也很易懂,前半本书是过一遍Python的基本语法,后半本书会带你做3个project,难度依次递增,做完会很有成就感。
6. C++ primer
C++的经典教材。作者Stanley B. Lippman是微软Visual C++ team的架构师。这本书把很多知识点都写的很细,不适合初学者,适合已经开始使用C++并且想加深对C++理解的人看,因为很多内容太细了反而不便于理解。
7. C Programming Language
C语言学习的经典书籍,作者之一Dennis M. Ritchie是C语言的设计者之一,其他很多C语言的书籍都是以这本书作为参考的。同样这本书也不适合初学者,需要有了一定的C语言基础之后才能慢慢啃下来。
【面试&刷题】
1. Programming Interview Exposed
贴出此书pdf链接:http://taltos.pha.jhu.edu/~gupchup/tmp/app/material/programming-interviews-exposed.pdf
专门讲面试的一本书,内容包括申请职位、面试准备和面试常考的算法、数据结构和technical questions,也列举了很多常考的non-technical questions,比如why should we hire you? Tell me about your experience等问题。
2. Cracking the coding interview
这本书也是在美国找软件工程师工作很有帮助的一本书,介绍了如微软、Amazon、Google、Facebook等大公司的面试流程,讲了面试常考的behavioral questions,也按照数据结构和算法分了十几个章节来详细讲具体的面试题目。在leetcode的题库还没有现在这么丰富的时候,以前面试刷题就主要参考这本书。这本书上的题目现在看来可能有一些老了,但都是很经典的必要掌握的题。
【计算机系统】
1. Computer Systems A Programmer’s Perspective
Carnegie Mellon University神课15213 Introduction to Computer Systems的教材,上课的教授也就是这本书的作者。这本书深入介绍了计算机系统,涉及到内存、编译器、进程、信号、I/O、虚拟内存、动态内存分配等知识。
2. Operating Systems Internals and Design Principles
贴出此书pdf链接:http://dinus.ac.id/repository/docs/ajar/Operating_System.pdf
这本书介绍了操作系统中的设计问题和基本原理,使读者对操作系统的关键结构和机制能有所了解。这本书通过使用Linux、Unix、Android和Windows 系统中的案例来加强读者对操作系统的理解。
【系统设计】
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
系统设计也是面试,尤其是跳槽面试中的常考问题。这本书讲了在大数据领域中scalability,consistency,reliability,efficiency和maintainability等这些问题怎么解决,介绍了大数据处理和存储相关的工具有哪些利弊,面对大数据应该选用什么样的数据库才合适。
芝士圈留学平台把800多位海外导师、留学生行家,根据教育背景、专业经历进行智能数据分析,形成服务提供者数据库;平台根据用户需求和背景进行智能匹配,生成服务提供者名单供用户选择。
目前所涵盖的服务有:外籍顾问文书修改服务、留学顾问咨询服务、学术文章翻译润色服务、国际快递服务、留学申请档案查阅服务。截止目前,芝士圈已服务申请者超过35388 位,人均3.7个offer/AD。包括哈佛、剑桥、牛津、斯坦福等世界高等学府offer。
芝士圈留学免费福利
- 注册后免费查看一份成功者申请档案: 名校录取者GPA、语言成绩、留学文书
- 申请成功者背景参考: 注册 后添加客服微信,发送「目标申请国家/地区+专业」领取
- 注册后无限量查看:留学文书范文,含PS/SOP、简历、essay等