程序员必读的三十本经典巨作- https://blog.csdn.net/shenziheng1/article/details/52714150
一个程序员的日常书单(更新于2017/4/4)- http://blog.csdn.net/dd864140130/article/details/54991817
学习电子书收藏- http://blog.csdn.net/way_ping_li/article/details/8617620
1.计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
2.想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”
3.有那么些人喜欢或者适合用“先具体再抽象”的方法学习和理解复杂事物;
而另一些人喜欢或者适合用“先抽象再具体”的方法学习和理解复杂事物。
> C语言,《计算机程序设计语言》,D.M.Ritchie,1972年;
C程序设计语言 K&R(英文第2版)Prentice Hall- https://pan.baidu.com/s/145d3G
1978年布莱恩·柯林汉Brian W. Kernighan和丹尼斯·里奇Dennis M. Ritchie出版了名著《C程序设计语言(The C Programming Language)》,很多年来被当作 C语言的非正式的标准说明。
《C陷阱与缺陷》《C专家编程》《C语言深度解剖》《C和指针》
-- 初学C语言,有什么好书推荐- https://www.zhihu.com/question/22524467
初级级别:《c primer plus》这本书是C语言入门书籍,讲的比较详细,里面也有很多代码,可以跟着代码练习。
入门级别:《c 和指针》和《C程序设计语言 K&R》,《征服C指针》《C点滴》需要大量的代码练习。C++之父本贾尼经典著作《The C++ Programming Language》第三版
进阶级别:《C陷阱与缺陷》,《C语言深度解剖》,《C专家编程》,回头看《C程序设计语言》。
-- 初学者建议看:《C语言程序设计-现代方法》,裘宗燕的C语言程序设计的书,C++之父《程序语言设计与实践》;
进阶的话 《C++沉思录》 《C陷阱与缺陷》 《C专家编程》《Effective C++》《C++标准程序库》;剩下的就是数据结构和算法的学习了。
-- C语言要学好必须理解三个概念。
1.什么是指针?,指针和数组的关系。
2.程序分为哪几个段,能说清楚全局变量,局部变量,静态变量等分别属于哪个段,各个段的特点是什么?
3.C语言的编译和链的接过程
-- 学习C++可分为4个层次:
第一层次,C++基础:挑选一本入门书籍,如《C++ Primer》、《C++大学教程》、或Stroustrup撰写的经典《C++程序设计语言》或他一年半前的新作《C++程序设计原理与实践》,而一般C++课程也止于此,另外《C++ 标准程序库》及《The C++ Standard Library Extensions》可供参考;
第二层次,正确高效地使用C++:此层次开始必须自修,阅读过《(More)Effective C++》、《(More)Exceptional C++》、《Effective STL》及《C++编程规范》等,才适宜踏入专业C++开发之路;
第三层次,深入了解C++:关于全局问题可读《深入探索C++对象模型》、《Imperfect C++》、《C++沉思录》、《STL源码剖析》,要挑战智商,可看关于模版及模版元编程的书籍如《C++ Templates》、《C++设计新思维》、《C++模版元编程》;
第四层次,研究C++:阅读《C++语言的设计和演化》、《编程的本质》(含STL设计背后的数学根基)、C++标准文件《ISO/IEC 14882:2003》、C++标准委员会的提案书和报告书、关于C++的学术文献。
读透《c++ primer》,啃一遍《linux内核源码整体》?
> C++语言,斯特朗斯特鲁普(Bjarne Stroustrup),英国剑桥大学计算机科学博士,C++语言的设计者和最初的实现者,也是《C++程序设计原理与实践》和《C++语言的设计和演化》的作者。
C++程序设计原理与实践pdf- https://u14147674.ctfile.com/fs/14147674-237091225
C++语言的设计和演化.pdf- https://download.csdn.net/download/baienguon/10464358
《C++程序设计》Bjarne Stroustrup- https://download.csdn.net/download/warfarin/10306100
C/C++从入门到进阶必修书籍- http://blog.csdn.net/u010236550/article/details/19005909
C/C++经典书籍推荐- http://blog.csdn.net/youxin2012/article/details/8641238
《C primer plus》《高质量程序设计指南——C++/C语言》《Effective Modern C++》《Effective C++》
《c++ primer》,《C/C++高质量编程》《C++编程思想》《深度探索C++对象模型》;
《C++ API设计》,讲解了很多软件工程、设计层面的知识。
-- 对C++的理解更加深刻,尤其是对软件工程有了一个新的理解:
1.要有造轮子的能力,但是不要轻易的去造轮子
2.单元测试的重要性,通过单元测试也可以提高程序员的信心,为了更好的写单测,会逼迫我们将模块之间的耦合降到最低,这样可以方便单测。
3.写易读的、可维护的代码
4.Google的C++编程规范,每一条都值得细细品味
5.Chromium开源项目有很多值得我们借鉴的地方
6.画UML图是程序员的基本素质,要有好的设计,设计要做评审
7.CodeReview一定要有的
8.类名和变量名的易读性
> 编译器相关书籍:
《深入理解计算机系统》;《Aho, Lam, Sethi, Ullman: Compilers 2/e 》, 编译器中的圣经;《Holub: Compiler Design in C》 编译器原理、技术、和实现。
> Linux/Unix编程
《linux内核源码整体》《深入理解Linux内核架构》《Linux环境编程 从应用到内核》
《UNIX环境高级编程》《深入理解计算机系统》《Linux环境编程:从应用到内核》《TCP/IP详解三卷》
《深入理解Linux内核》陈莉君;马哥 Linux,Linux 基础和shell脚本的基础;
《Linux/UNIX系统编程手册》
-- 学习LinuxLinux/Unix编程
1.各个socket API的对应到OS,做了哪些事情,比如connect后,做了哪些事情?,accept呢?,什么是RST报文?,什么是SIGPIPE,如何触发的?
2.网络IO模型,同步和异步,阻塞和非阻塞的概念,Linux上各种网络IO模型的优缺点对比,epoll、select、信号驱动IO等
3.服务器的网络编程模型,多线程、多进程、线程池等,各自优缺点
> 书籍推荐
1.云风(中国游戏编程先行者,前网易游戏部门资深程序员,简悦创始人):
如果面试,我会挑以下的我自己读过的书,让人选择他也读过的部分,再了解他对这些书的理解。这些书其实本质上就是两类,对所面对的东西(程序语言也好,操作系统也好,底层设施也好)本身的理解程度。以及另一类:对设计思想和原则的理解:
- C++编程思想
- Effective C++
- 深度探索C++对象模型
- C++语言的设计和演化
- C专家编程
- C陷阱与缺陷
- C语言接口与实现
- Lua程序设计
- Linkers and Loaders
- COM本质论
- Windows核心编程
- 深入解析Windows操作系统
- 程序员修炼之道
- 代码大全
- UNIX编程艺术
- 设计模式
- 代码优化:有效使用内存
- 深入理解计算机系统
- 深入理解LINUX内核
- TCP/IP 详解
2.冯大辉(丁香园CTO,贝塔咖啡创始人):
- 软件随想录
- 黑客与画家
- 重来
- UNIX编程艺术
- 编程人生
3.洪强宁(豆瓣技术总监):
StackOverflow上有一个程序员必读书单帖子,这里仅列出top10,更多参考这里。
- Code Complete 2
- The Mythical Man-Month (《人月神话》)
- Code: The Hidden Language of Computer Hardware and Software (《编码的奥秘》)
- TAOCP (不解释)
- The Pragmatic Programmer (《程序员修炼之道》)
- Design Patterns (《设计模式》)
- The Structure and Interpretation of Computer Programs (《计算机程序的构造和解释》)
- Refactoring (《重构》)
- The C Programming Language
- Introduction to Algorithms (《算法导论》)
4.郑昀(窝窝团研发副总裁):
- 工程师入门:
- Code Complete 2
- 程序员修炼之道
- 深入理解计算机系统
- 工程师升级:
- 设计模式
- 重构——改善既有代码的设计
- 工程师转型:
- 快速软件开发——有效控制与完成进度计划
- 人月神话
- IT项目管理那些事儿
- 软件随想录
- 最后期限
- 走出软件作坊
- 你的灯亮着吗?——发现问题的真正所在
5.张峥(微软亚洲研究院副院长):
- Algorithms (by Sanjoy Dasgupta, Christos Papadimitriou and Umesh Vazirani)
- Data Structure and Algorithms
- The C Programming Language
- The Design of the UNIX Operating System
- Compilers (龙书)
- Computer Architecture: A Quantitative Approach
- Flow
- Outliers (why hard work and luck are both important)
6.邹欣(MSRA创新工程中心首席研发经理):
关于创新的书籍(http://book.douban.com/doulist/1253169/):
- The Myths of Innovation
- The Innovator’s Dilemma
- The Innovator’s Solution
- Crossing the Chasm
- Inside Intuit
- 盛田昭夫
- 杰克·韦尔奇自传
- 梦断代码
- Innovation
- 浪潮之巅
> 面试微软前必须要读的十本书:
1.Code: The Hidden Language of Computer Hardware and Software (《编码的奥秘》)
2.Computer System: A Programmer’s Perspective (《深入理解计算机系统》) / Windows via C/C++ (《Windows核心编程》 / 《程序员的自我修养》
3.Code Complete 2(《代码大全》)/ The Pragmatic Programmer (《程序员修炼之道》,我也把这本书称为《代码小全》)
4.Programming Pearls (《编程珠玑》) / Algorithms / Algorithm Design / 《编程之美》
5.The C Programming Language
6.The C++ Programming Language / Programming: Principles and Practice Using C++ / Accelerated C++
7.The Structure and Interpretation of Computer Programs (《计算机程序的构造和解释》)
8.Clean Code / Implementation Patterns
9.Design Patterns (《设计模式》) / Agile Software Development, Principles, Patterns, and Practices
10.Refactoring (《重构》)