原创

看一看Facebook工程师是怎么评价《第一行代码》的

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://guolin.blog.csdn.net/article/details/99638991

本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。

大家好,我是一名Facebook的工程师,同时也是《第一行代码——Android》的忠实读者。

虽然我最近几年是在国外读书和工作的,但是和很多人一样,我也非常喜欢郭霖的博客以及他写的《第一行代码——Android》。

事实上,这本书在我面试 Facebook 的时候给我提供了很大的帮助。为此,我专门为这本书写了这样一篇书评,同时也跟大家分享一下我自己的经历。

我是谁?

先来简单介绍一下我自己吧。

2008 年,我进入北京理工大学就读。

2012 年的时候以交换生的身份进入了美国普渡大学攻读硕士。

2015 年毕业,之后加入第一家公司 VMware,在那里工作了近 4 年时间。

今年年初,我参加了 Facebook 的面试,并且顺利地通过成为了一名 Facebook 的软件工程师。

与书结缘

和很多人一样,我最初知道郭霖,是通过他 CSDN 的博客。那时候我还在 VMware 工作,并且刚刚从 Windows UWP 组转到 Android 组。

由于工作内容发生了很大变化,在开发过程中我遇到了很多问题。也许是机缘巧合吧,我在网上搜索 Android 学习资料的时候,正好在 CSDN 上看到了郭霖的技术博客。他的文章写得很有逻辑感,思路清晰,总结得也很好,而且基本都有代码展示,非常实用。

看了郭霖的博客,我连续解决了几个之前不太懂的地方,而且还比较系统地了解了 Android 的知识。可以说郭霖的博客堪称我 Android 学习之路上的“一盏明灯”。

后来得知郭霖要把博客内容整理出版,我就特别期待。《第一行代码——Android》第 2 版出版以后,我第一时间就在国内购买了,并托朋友带了过来,也算是海淘国货了。

助力面试

事实上,《第一行代码——Android》这本书在我面试的时候帮了我的大忙。

美国软件工程师的面试和国内可能不太一样。面试的内容主要分为算法、相关专业知识、系统设计,还有 Behavior Question,俗称 BQ。有的公司可能还会直接让你写一个 App 出来。面试的具体形式是什么样子的,面试官会提前跟你说清楚。

而面试 Facebook 时,我的 Android 主要备考资料就是《第一行代码——Android》,事实证明这本书派上了很大的用场。我是在 2019 年年初开始准备面试的,总共面了 Facebook、LinkedIn、Airbnb 和一家西雅图的初创公司 OfferUp。这几家全部都是美国西海岸的公司,而我从美国东海岸飞过去需要四个半小时的时间。于是,每一次面试的时候,我都在飞机上复习一下前面几章关于 UI 方面的知识,然后到酒店之后再复习一下后面的内容,第二天面试一般都是十点开始。在面试之前,我又会翻开书来随机看一看。可以说《第一行代码——Android》完全成了我的 Android 复习资料。

就我自己的面试经历来说,《第一行代码——Android》覆盖了绝大部分的 Android 面试题目,尤其是 UI 相关的问题,很多都在这本书里面讲到了。但是由于我签了 NDA,所以不能透露具体哪一家公司考了哪些题目。其中 Facebook有一道题目我印象非常深刻,当时我把《第一行代码——Android》中总结的知识点都说了出来,面试官大喜,说这是他面过的所有人当中回答得最好的!

其实,当时我还在亚马逊买了一些美国的流行 Android 教材,比如 Big Nerd Ranch 什么的。美国的教材特点是普遍篇幅很长,动辄 700 多页,甚至上千页。书中有很多细节和截图,非常适合一步一步地跟随学习。但是这样的大部头简直就像是字典一样,看起来非常不方便,对于想要快速入门或者准备面试的人来讲可能并不是一个很好的选择,因为这两种情景都需要在很短的时间里面把知识点总结出来,那么篇幅太长、充满太多细节的书显然不太适合这些场景。

而《第一行代码——Android》是一本有细节同时又高屋建瓴的一本书。在知识点的取舍上面,作者拿捏得恰到好处;在内容章节的安排上,也做得非常科学与合理。这本书在有限的篇幅里讲明白了关于 Android 基本所有必需的知识点,甚至还有业界的 Best Practice,这和美式的图书形成了鲜明的对比。


“Android 学习第一书”

《第一行代码——Android》被读者们亲切地称为“Android 学习第一书”,因为它对于新手来说非常友好,内容上由浅入深,语言上通俗易懂。

这本书先讨论了 Android 的整体框架,使读者对整个 Android 的历史还有运行的机制有一个大概的了解。这些内容虽然对开发没有直接的作用,但其实非常重要,对于读者形成一个框架思考模式很有帮助,在以后的学习和实践过程中也可以起到一定的指导作用。

然后讨论了能很快看到反馈的 UI 的知识,提升读者的阅读兴趣。接下来分别对 Android 的四大组件进行了较为深入的讨论。本书特别值得称道的一点是对四大组件的讨论并不是毫无联系地、孤立地去阐述,而是通过 Intent、AndroidManifest 等内容把四大组件串在了一起。另外,每一个章节都有实战的内容,亲自动手实践下会非常有好处。

就连官方内容之外的一些知识点书里也有介绍。这些知识点很多都是业界常用的, 比如 OkHttp、Glide,等等。这些开源库,如果没有相关的开发经验,只是看官方文档,就很难知道为什么要使用它们,在面试的时候就很容易回答不上来。而这本书将所有的这些知识点都结合应用在了实战当中,帮助读者去更好地理解。

当然,限于篇幅的原因,《第一行代码——Android》并不能覆盖到所有的知识点,比如关于 memory leak 等方面的讨论还比较欠缺,所以准备面试的时候还是要单独准备一些常考的知识点。但就概率来讲,能把这本书看完大半,就已经足够应付初级程序员的面试了。

自 Android N 之后,Android 系统本身也进化了不少,开发的方式也有了一些变化,比如现在 Google 已经首推使用 Kotlin 来进行开发了。听说《第一行代码——Android》要推出第 3 版,我也非常期待。同时也希望能够翻译成英文版,卖到美国来,这样子可以让美国的同行们了解一下中国程序员思考问题的方式以及对知识架构的理解。

当然了,纸上得来终觉浅,绝知此事要躬行。在学习本书或者说任何技术类图书的时候,动手总是最重要的。如果仅仅是看了书就想当然地觉得自己学会了的话,就很容易在实践尤其是面试中吃亏,因为在实际的编程过程中总会出现这样那样的小问题,尤其是一些公司面试喜欢直接上手写 App,如果平时没有大量的练习的话,就很难在这样实操型的面试中胜出。

《第一行代码——Android》的代码很有代表性,绝大部分示例都推荐你亲自去实现一遍,如果记不住,就算是上机抄一下代码也是极好的。此外作者郭霖的微信公众号也经常发很多高质量的干货文章,推荐关注。

seanlitow

2019 年 7 月于 Menlo Park


附:

很感谢seanlitow愿意帮忙写这样一篇书评文章,但是大家应该不知道,这篇文章背后的诞生过程其实还是很不容易的,最后我跟大家分享一下。

实际上这篇文章早在6月11号就已经写好了,我花了一周左右的时间进行了一些简单的修订。但是Facebook要求,如果员工对外发布与Facebook相关的信息时,需要通过公司的审核才行。于是seanlitow又将文章翻译成了英文,发给他的主管进行审核,又花了一周多的时间。可是过了主管审核之后才知道,原来还得再通过conflicts committee的批准才行,大公司在这方面的审查确实非常严格。

我不太懂conflicts committee的工作流程,但是估计他们每天都要处理很多审核吧。正好又在7月初赶上了美国的国庆节,这篇文章的审核流程就一直被卡在那里好几周,seanlitow也帮忙催了好几次,到了7月下旬才终于审核通过。

由于这是一篇《第一行代码》的书评,因此我联系了一下图灵出版社的编辑,希望这篇文章也可以在图灵官方的公众号上同步推送一下。虽然图灵那边很爽快地答应了,但是这篇文章也要经过图灵编辑的审核才行。而且出版社的公众号对文章的要求更加严格,即使像我这种已经写过两本书的人,每次的稿件发给他们也会被做大量的修订。

这篇文章当然没能躲过这个命运,修订又花了两周左右的时间,以至于拖到了现在才发布。但值得高兴的是,经过图灵的修订之后,这篇文章的确变得更加出色了,图灵编辑们的认真和专业态度值得钦佩。

在这篇文章从编写到发布的过程中虽然经历了很多预料之外的情况,但seanlitow一直都极力配合。不管是文章的编写、Facebook内部审核的推进、还是听取出版社这边的修订建议,seanlitow都做到了让人称赞的程度。我渐渐能够理解他为什么可以进入Facebook工作了,真的和《第一行代码》无关,而是因为他是一个无论做什么事情都非常用心的人,而我也很高兴能够认识这样一位朋友。

郭霖

2019 年 8 月


关注我的技术公众号,每个工作日都有优质技术文章推送。

微信扫一扫下方二维码即可关注:

文章最后发布于: 2019-08-16 07:56:50
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览