我之前的面试题停了很久, 是因为 - 我写书去了
前言
我于 2012 年 3 月开始工作, 到现在马上就满六年了这六年里, 我从一个连 Sql server 是什么都不知道, 只会写最简单的 c# 的程序员开始做起, 一步一步从一个籍籍无名的外包公司奋斗到了一个比较大的金融机构的中层, 工资也提升到刚参加工作的接近四倍在奋斗的过程中, 我也走了很多弯路, 一度十分消沉, 但幸运的是, 最终我的努力并没有白费
我一直就是一个比较喜欢写文章的人在平时工作时, 我也喜欢把很多必要的东西 (例如服务器的 ip 地址, 登录密码等) 写下来, 并做成文档以便随时查阅在前几年, 我对自己的公司不满意, 在业余时间一直在准备跳槽, 于是, 我搜集了很多面试题和解答后来我发现这样准备毫无系统性, 便去买了本书开始看说来惭愧, 我在工作的第三年才开始系统的看书, 那时买的第一本书是精通 C# 第 6 版在读书的同时, 我也知道了其实 C# 领域最出名的书是 clr via c#, 并买了一本, 重写了自己的文章(之前它们只是面试题的解答), 慢慢贴到网上, 成为了面试题系列在这个系列的编写过程中, 我也参考了博客园上很多杰出的网友的优秀文章这个过程中我的技术水平提高了很多在写博客的同时, 我也得到了某公司编辑的注意通过博客园站内信, 编辑希望我写一本关于 C# 的书当时我清点了一下自己文章存货, 发现总字数已经有大概 10 万左右, 而且那时候公司工作也不忙, 就同意了
书籍写作
在签了初步合同之后, 编辑将我的书命名为 C# 笔试面试题集, 因为毕竟我在网上的博客和面试题关系比较密切我根据自己电脑里已有的文章存货, 提交了目录, 并拟定为 7 大块:
1 .NET 基础知识, 包括类型基础, 面向对象等
2 C# 重要特性, 包括委托事件, 泛型反射, LINQ 等
3 设计模式
4 数据库基础知识
5 算法基础知识
6 测试, 部署和持续集成
7 多线程
之所以包括这么多内容, 是因为我在准备面试时对这些都写了文章但在写书的过程中, 我逐渐发现, 我的野心太大了如果我按照上面的大纲去写书, 我不仅时间不够, 目前的能力也完全无法胜任: 我的算法水平很一般, 也不是设计模式和数据库专家, 对测试和部署的经验也不多而且, 即使在刚开始写. NET 基础知识这部分我自以为最擅长的部分时, 我也在查资料和参考其他书时, 发现我的认知其实还颇为皮毛因此, 在刚开始写书时, 虽然是在过去文章的基础上改进, 我的进度仍然很慢有时候, 我还会不时的在网上撞到一篇超强文章, 它比我的认识透彻多了, 导致之前写的大部分内容都得重写
在写书进行了几个月之后, 我决定从书中砍掉设计模式, 数据库, 算法, 测试和部署, 并令书更加集中于 c# 的讨论这样一来可以不让书的内容过于松散, 二来也让自己更有信心现在, 整个书已经写了 90%, 这个月底就全部交稿了在交稿之后, 相信还会有一段审稿和与编辑讨论的时间等到该书正式出版时, 我再来通知大家现在这本书的内容包括:
1 .NET 基础知识, 包括程序集, 类型基础, 内存分配, 面向对象, 字符串, GC 等介绍了一点关于 IL 的知识
2 C#, 包括委托事件, 泛型反射, LINQ,DLR,C#6 和 7 的新特性等
3 多线程, 包括多线程基础知识, 同步与锁, 异步模型, async/await 等
第一部分主要参考了 clr via c# 的第一和第二部分以及其他国内外相关书
第二部分主要参考了深入理解 c# 以及其他国内外相关书
第三部分主要参考了 clr via c# 最后一部分(关于线程的), 深入理解 c# 的 async/await 那部分我试图用较为容易理解的语言将这两本书的相关章节解释清楚
我对本书的定位是: 适合有 1-2 年开发经验的人士阅读该书的书名已经确定为 c# 从现象到本质, 将会有以下几个特点:
与时俱进, 对最新推出的 C# 7 的特性也有涵盖, 但不会介绍最基础的 c# 语法
夯实基础, 深入本质, 并非简单的 msdn 搬运工 + 一段又长又没有注释的代码这种风格的图书, 例如, 21 天本书会提到 IL, 并不时张贴 IL 代码以便深入分析各种语法糖背后的实质
目前市面上关于 c# 多线程的中文资料较少, 大部分 c# 书籍在这部分都是简单一提, 但我的书中多线程将自成一篇, 包括 5 章, 使用通俗易懂的文字解释 c# 多线程相关的各种各样的锁和同步工具, 以及异步编程模型, 直到最新的 async/await
重视英语, 很多名词旁边配有对应英文翻译
参考书籍
我在写作的时候参考了大量书籍, 从大名鼎鼎的赵三本到很多博客园网友写的书, 和其他中英文书籍在阅读他人的书籍时, 我也发现有些书真的十分优秀, 但却默默无闻有些书的某些章节颇为精彩这里我也将它们列出来, 作为一个我自己推荐的 C# 进阶书单
如果你基础不是很扎实, 那么可以找来精通 C# 第 6 版入门(不用看 wpf,wcf 那几部分), 或者 Learning hard C# 学习笔记也行前者内容比较多, 后者相对比较简练, 可以增强学习信心但最好的入门书我认为是 NET 4.0 面向对象编程漫谈 基础篇这本
下面的书都不是用来入门的
CLR via C# 第四版
这本书实在太重要了, 太有名了实际上, 它几乎出现在任何一本讲 C# 的书的参考资料中该书虽然现在看来已经有点过时了, 但它对 CLR 的讲解是十分透彻的很多国人的 C# 书籍, 都或多或少的受了这本书的影响
该书虽然很厚, 但结构十分清晰, 分为五大部分:
1. CLR 基础, 讲程序集的结构和部署, IL,JIT, 类型系统第一章很重要, 必须好好看, 第二章和第三章相对不那么重要
2. 设计类型, 该部分遍览了一个类型可以拥有的所有成员, 所有章节都很重要, 第 12 章泛型尤其重要
3. 基本类型, 13,14,16,17,19 章很重要, 15 和 18 可以大概看看
4. 核心机制, 主要包括异常处理, GC, 应用程序域, 反射和序列化
5. 线程处理, 作为 Windows 操作系统的大师, 作者对线程的理解非常深入 26 章主要是概念, 27-30 章全是多线程, 通读这部分对多线程的理解帮助极大不过, 该部分充斥大量专有名词, 对非 windows 高手来说不太友好可以和其他多线程书配合着看
这本书由于成书较早, 因此缺失了对 C# 一些较新版本功能的介绍, 例如 LINQ 等此时, 就需要另外一本大名鼎鼎的书 - 深入理解 C# 出来救场了
深入理解 C#
这本书相比上一本不那么底层, 不过, 它的阅读难度也不小对于更喜欢特性而非原理的读者, 可以通读一遍此书, 它按照演进顺序讲述了 C#1-5 的所有特性, 对 LINQ, 异步的讲解既实用又涉及原理本书所有章节都很重要
.NET 设计规范: 约定, 惯用法与模式
在争论应该是抽象类还是接口, 应该是类还是结构时, 我们其实看看这本书就够了, 它早就给了我们一大堆最佳实践不知道怎么书写异常处理? 看看第七章吧本书实际上就是一个代码规范集合
本书适合在需要的时候随时查阅以上三本书相辅相成, 包括了一个中级开发者需要掌握的所有主语言相关技能(实际上, 即使只理解一半也已经足够好了), 故被某知名程序员称为赵三本该程序员还认为, 充分理解了赵三本的开发者在大陆的待遇应至少为 20k 人民币每月, 即中级开发者
Pro .NET Performance
本书以一个独特的视角 性能作为切入点, 讲述了. NET 程序和类型在性能这一方面的体现该书的前两章主要讨论了性能测试的衡量方法和工具, 第三章深入了类型系统, 第四章详细的讲述了 GC, 这两章值得细读
本书目前只有英文版, 阅读难度很大
.NET 本质论 第一卷 公共语言运行时(Don Box)
本书实际上就是在讲 CLR, 它也是对 CLR 的探讨中, 我目前知道的书中, 最底层, 最深入的一本该书的作者同时也是 COM 专家, 因此, 对于 CLR 这个更好的 COM 来说, 他必然也是驾轻就熟
本书中我最喜欢的部分是第 6 章, 作者使用了一章的篇幅讨论了方法调用该书过于底层, 成书年代也很早, 读起来可能有些脱离实际的感觉
NET 4.0 面向对象编程漫谈 基础篇
本书的作者是金旭亮老师他的这本书 (以及后面相邻的那本) 以生动有趣的笔触讲解了. NET 的方方面面我个人非常喜欢这本书如果你觉得 CLR via C# 太枯燥, 行文方式又过于老外, 看不下去, 可以先看这本这本书虽然没有 CLR via C# 那么深, 但对于底层也有颇多涉及, 它和很多粗制滥造的拖控件教程有着本质的不同
NET 4.0 面向对象编程漫谈 应用篇
作者在此书中着重分析了进程和线程以及在 C# 中的实地应用这是多线程方面来自国人的为数较少的好资料这本书和上一本一样, 我强烈推荐
你必须知道的. NET(第二版)
本书的编排顺序十分独特它的视角是完全面向对象的, 并且将. NET 各个知识点以逐个对比的方式呈现在了读者面前, 第一次阅读时, 可能会觉得不太适应本书有一定深度, 而且作者行文比较幽默, 因此读起来也不是很枯燥
本书有很多 SOLID 和设计模式方面的内容, 对开发者不无裨益
Threading in C#
本书 (以网页形式在网上公开) 提供了另一个关于 C# 多线程的介绍资料, 目前已经有翻译版本 https://blog.gkarch.com/threading/part1.html 该书对. NET 提供的各种各样的锁都有所涉及, 可以和 CLR via C# 最后四章一起看
.NET 之美 .net 关键技术深入解析
本书是博客园网友张子阳的作品这本书的委托那章是经典之作
其他多线程书籍包括 async in c#(只有英文),c# 并发编程经典实例 (这本内容新, 但实在是难懂) 以及 C# 并行编程高级教程(这本难度还比较温和但没有 async/await)
结语
我写书并非是指望它挣多少钱 (稿费很低) 首先, 我对技术与. net 有着浓厚的兴趣, 常常在写书时搞到废寝忘食, 玩游戏都觉得没意思了另外, 我的文章受到出版社编辑的赏识也是对我能力的一种肯定, 我既然接下了这个任务就应该认真完成, 对得起自己写的每一个字, 不误导读者最后, 我也希望通过写书这个契机认识更多的朋友, 给自己带来更多的机会这本书顺利出版之后, 我的下一步可能会转向人工智能或机器学习方向的学习和研究(我自学过作曲理论, 也一直对人工智能作曲很有兴趣), 或者算法方面的研究(出一本书用 c# 实现各种小游戏求解, 例如华容道, 数字拼图等等), 现在还没有确定但是我可以确定的是, 整个写书的过程中, 我收获了很多, 也很快乐
来源: https://www.cnblogs.com/haoyifei/p/8513687.html