首页 > 其他分享 >Android学习第一书

Android学习第一书

时间:2023-06-25 18:06:54浏览次数:36  
标签:知识点 第一行 第一 代码 学习 面试 郭霖 Android


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

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

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

 

1. 我是谁?

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

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

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

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

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

2. 与书结缘

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

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

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

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

3. 助力面试

事实上,《第一行代码——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,这和美式的图书形成了鲜明的对比。

 

4. “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


标签:知识点,第一行,第一,代码,学习,面试,郭霖,Android
From: https://blog.51cto.com/u_15767091/6547442

相关文章

  • 热度直逼TensorFlow的深度学习框架,我用它画下女朋友最美的脸
    这不,又一个程序员为爱变身灵魂画手,看得我都想学画画了。阿华是幸运的,因为他找到了对的方法,事半功倍,最终有情人终成眷属。这也得益于PyTorch的易学易用,大多数人第一次使用PyTorch几乎可以做到无痛上手。就连深度学习三巨头之一,图灵奖得主YannLeCun都在Twit......
  • Android开发找工作之前先看看这些面试题吧
    前言要想在众多的Android竞争者中脱颖而出,就需要有扎实的技术功底和丰富的项目经验。而要证明自己的能力,就需要通过面试。面试是一个考验你综合素质的过程,不仅要回答好技术问题,还要展示你的沟通能力、逻辑思维、学习能力等。所以,在准备面试的时候,不要只关注知识点的复习,还要注意模......
  • opencv学习笔记(十二)
    harris角点检测:#角点检测importcv2importnumpyasnp"""cv2.cornerHarris()img:数据类型为float32bolckSize:角点检测中指定区域的大小ksize:Sobel求导中使用的窗口大小,一般为3K:取值参数为[0.04,0.06]"""img=cv2.imread('C:/Users/hellou/Deskt......
  • SSM学习第八天
    MyBatisPlus今日目标基于MyBatisPlus完成标准Dao的增删改查功能掌握MyBatisPlus中的分页及条件查询构建掌握主键ID的生成策略了解MyBatisPlus的代码生成器1,MyBatisPlus入门案例与简介这一节我们来学习下MyBatisPlus的入门案例与简介,这个和其他课程都不太一样,其他的课程都......
  • HEVC官方代码学习_1
    HM是HEVC(H.265)的开源实现,可以从网上直接下载。下载网址:https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/文件整体调用流程图 各类文件功能AccessUnit.h定义了存取单元(或者访问单元),实质是一个类型为NALUnitEBSP的list扩展比特流的不同数据类型SODB:数据比特串,......
  • 浅析AI深度学习计算机视觉技术在智能监控领域的场景应用
    计算机视觉技术是一种模拟人类视觉功能的技术,通过数字图像处理、模式识别、机器学习等方法,自动分析和理解图像和视频中的信息,从而实现图像和视频的自动理解、识别、分类、检测和跟踪等任务。计算机视觉技术的使用场景非常广泛,包括但不限于以下几个方面:1)智能监控:利用计算机视觉技......
  • P5JS学习笔记
    //启动方法,自动执行functionsetup(){createCanvas(400,400);}//绘画执行方法,自动执行,按设定好的帧数绘制functiondraw(){background(25);ellipse(50,50,80,80);//画圆//鼠标按下事件if(mouseIsPressed){//改变背景色fill(0);}else{fill(255......
  • Java学习之Mysql基础问题整理
    Mysql常见存储引擎命令:SHOWENGINES; Mysql版本5.5以后默认引擎是InnoDB,5.5版本以前的是MyISAMInnoDB和MyISAM的区别1、InnoDB支持事务,MyISAM不支持。对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个......
  • 前端学习C语言 - 初级指针
    初级指针本篇主要介绍:指针和变量的关系、指针类型、指针的运算符、空指针和野指针、指针和数组、指针和字符串、const和指针、以及gdb调试段错误。基础概念指针是一种特殊的变量。存放地址的变量就是指针。intnum=1;会申请4个字节的内存来存放数字1,每次访问num就是......
  • Rust学习笔记——基于官网和Rust语言圣经(二、猜数游戏)
    前面的helloworld项目还是太oldschool了,这样用一个猜数字的游戏来快速了解下rust语言,以及为啥cargo那么好用的原因。不要拘束新的语法点,后面都会详细介绍!2.1猜数游戏:一次猜测-本节您将学会:·let、match等方法·相关的函数·外部的crate·...猜数游戏-目标-生成一个1到10......