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

大家好,我是一名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 月

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

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

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

  1. thymealf如何实现传单个变量给html_梦回2013,看尤大vue的第一行代码,如何用30行代码实现vue(超简洁,适合初学者)...

    非非非标题党,干货预警!!! 介绍 大家好,我是清池交友 app 开发日记,记录清池交友 app 开发中学习过程和踩坑日记,伪全栈[1] 技术栈:前端 js,vue,uniapp,后端 java 尤大 ...

  2. 看完《第一行代码》再看什么书可以进一步提高?

    1.疯狂Android讲义 (豆瓣) 2.Thinking in Java (豆瓣) 3.看博客,GitHub · Build software better, together.上的优秀的项目源码. ...

  3. 安卓笔记-第一行代码版(看书慢,故不打算再抠书,但笔记是心血)

    /Users/yangyangzi/Desktop/YangZi2/android/第一行代码学习笔记.rtfd (公司电脑) 第一章 安卓系统架构 四层架构: 1.Linux内核层: 为安卓设备的各 ...

  4. 月薪3w算法工程师日均7行代码被开除 / AI歌手入学上海音乐学院 / 天文照片被植入恶意代码...

    文 | 日报君 发自 凹非寺 源 | 量子位 又到周四,不少人心中的「小周末」! 你有没考虑下班后放松放松? 劳逸结合,别忘关注这些「科技圈都在看」的新鲜事! 今日大新闻 月薪3.6万算法工程师,日均 ...

  5. 阿里巴巴工程师为什么用寻找第83行代码向代码致敬

    都说编程是一门艺术,优秀工程师写的代码往往来赏心悦目,遇到难以理念的点会加上注释帮助后来人理解,还会抽时间review自己的代码,并思考如何提高性能 在阿里巴巴,就有一群工程师们在追求这样的" ...

  6. Facebook工程师教你什么是随机森林,就算零基础也可以看懂 | 干货

    白交 发自 凹非寺  量子位 报道 | 公众号 QbitAI 今天的这篇入门贴,我们就来介绍一下决策树与随机森林. 这篇帖子适合机器学习基础为0的同学~ 当然,有基础的同学也可以来看一下,加深一下理解 ...

  7. 【职场】看一位前端工程师如何上班摸鱼

    这是对白的第 70 期分享 作者 l 霓虹(本文已获原创授权) 出品 l 对白的算法屋 大家好,我是对白. 今天给大家带来一篇我朋友霓虹写的摸鱼文章,他是一位前端工程师,擅长在公司里摸鱼,文笔清奇而搞 ...

  8. Facebook 工程师是如何高效工作的?

    编者按:Facebook 的工程师有哪些高效工作的经验呢?软件工程师访谈了多位 Facebook 的高产工程师,总结了他们的共同经验以及晋级之路,供各位参考. 成为高效开发者这件事你可以通过经验.书本 ...

  9. 这几本值得你一看再看的程序员素养必备好书

    有些经典书,你每次翻起来看看都会有不一样的感悟.推荐以下几本书: 重构:改善既有代码的设计(第2版) 豆瓣评分:9.1 星级:4星半 所谓程序设计,很大程度上就是与计算机对话:我编写代码告诉计算机做什 ...

  10. 你贷款买房了吗?贷款买房很多学问!不信你就看一看。

    朋友,你贷款买房了吗?你贷款买房时,是不是只看他们用计算器算,而一点没关心你的贷款方式和还款方式?如果是,你就一定遭遇了售房者和银行的忽悠,你将可能多付上万,甚至上十万的利息.不信你就看一看. 贷款计 ...

最新文章

  1. 商淘多b2b2c商城系统怎么在个人电脑上安装_B2B2c商城系统怎么选?开源和定制哪个好?...
  2. 控制~Control System 线性系统
  3. 网络安全模型_基于TCM的网络安全访问模型
  4. Centos中git的安装
  5. mysql 修复表和优化表
  6. 8小时删除,这波资源碉堡了 ! @所有人
  7. 11篇SCI论文,多次跨专业,武大物理博士敲开美国顶尖生命医学研究中心大门...
  8. IDEA:AbstractMethodError: Receiver class org.jetbrains.plugins.scala ScTraitImpl not define or inher
  9. JavaScript------表单约束验证DOM方法
  10. 期许伟大-基于CMMI的过程改进之道探索
  11. 3.2. 开始入住实验
  12. 题目57 6174问题
  13. python 两个nc文件 风场,ECMWF 不同step 的 NC 文件如何合并
  14. 西电计算机学院嵌入式所,祝贺计算机科学与技术学院张亮老师团队论文被顶级期刊TNNLS录取...
  15. 查看网络连接的netstat命令
  16. linux桌面lxde 安装_ArchLinux下LXDE的安装与设置心得
  17. MaxEnt报错处理方法
  18. CCS7.2的下载、安装及打开CCS3.3工程文件
  19. linux系统路由器地址查询,如何在任何平台上查找路由器的IP地址
  20. POJ 1000A+B我的入门

热门文章

  1. TD-SCDMA迫零块线性均衡
  2. Windows下Java环境配置
  3. 一阶惯性环节如何实现跟踪性能与滤波性能共存(总)
  4. ASP.NET编程总结
  5. 将.fla转换为视频文件(.mp4)或gif文件
  6. 屏保程序学中玩(下)
  7. 汇编原理6:opcode
  8. android 谷歌输入法切换,ANDROID谷歌拼音 输入法肿么切换?
  9. 复现IIS6.0PUT任意上传漏洞
  10. FMX控件演示(FireMonkey ControlsDemo)