《App 研发录》学习笔记(二)

第五部分 项目管理与团队建设

一、如何考察面试者的技术水平?

对app而言分为三个方向:

1.应用类:比如京东、携程、大众点评。他们共同的特点就是页面多,都需要频繁的调用MobileAPI获取数据,都涉及支付流程。这类App开发人员需要对UI、网络、登录、支付都非常熟悉。
2.手机管家类:也算是应用类,这类很少调用MobileAPI,更多设计手机系统内部的读写,要对ActivityManager、Service、BroadcastReceiver之类的知识很熟悉。
3.游戏类:必须对动画引擎很熟悉,如Cocos2d和Lua。

对于应用类的主要问题:

Activity的生命周期。
Activity的4种启动方式及使用场合。
做过的项目中,Activity是否有基类,如果有,封装了哪些共用的逻辑?
事件的各种使用方式及优缺点。
与HTML5页面的相互调用。
UI线程的阻塞与解决方案(Runnable与Handler)。
采用什么姿势调用MobileAPI并解析返回的数据?
怎样做列表的分页和刷新。
登录的实现,包括从哪儿来、到哪儿去的页面跳转机制,记住密码的逻辑设计。
性能调优,包括Layout调优、Activity中如何使用CONST常量、时间换空间策略、 ViewHolder、图集的优化策略、数据缓存和图片缓存,等等。
全局变量过多怎么办?
写过UT没
是否做过自动打包

对Android团队Leader的定位:

组织线上Crash的修复。
处理线上突发bug。
排查每口客人投诉的问题。
解决团队遇到的技术难题。
组织每周 Code-Review。
组织每周例会。
团队Leader —定要明确自己的职责,注意以下两点:
不要给自己分配具体的需求开发,你会发现,上述管理工作会消耗掉你大量的时间。
努力不耍使自己成为瓶颈。很耗费时间的事情,及时分配到具体的开发人员。bug如果都集中到自己手里,那么一定要及时分下去。
哪些工作是要尽早分出去给具体的开发人员的呢?具体包括:
Android项3的打包。
代码混淆。
设计Android的Lib框架,交给架构组去做。
技术凋研。
Monkey日志分析。

Android技能自我评测

这是该书作者提供的20条作为Android应用开发者应该掌握的技能。
Activity 相关。App 应用幵发,以 Activity 使用最多,涉及 LaunchMode、onSaveInsatnce- State、生命周期等技术。
Fragment相关技术。用的人不少,想明白是咋回事的人不多。这里推荐一本书:《Creating Dynamic UI with Android Fragments》。
序列化技术。有Parcelable和Serializable两种。前者是基于Service的,后者是基Bundle的,二者实现原理不同,但是达到的效果差不多。
ImageLoader的原理和使用。类似的,还可以学习Facebook新近开源的Fresco,对图片的处理会更好一些。
fastJSON或GSON的使用。做App不会用实体自动匹配JSON数据,相当于白做。
多线程相关。包括 Handler、Looper、ExecutorService 等。
Adapter和ListView。这两个技术捆在一起,经常容易崩溃,尤其是分页的时候,要仔细研究深刻领会。
用户Cookie设计。需要把登录机制彻底搞清楚,包括在HttpRequest头中夹带Cookie 来进行用户身份验证的技术。
网络请求封装。使用AsyncTask的网络底层封装,使用Handler+Runnable的网络底层封装。
Android与HTML5的交互。包括Android调用HTML5的方法,以及HTML5调用 Android的方法。
代码混淆。没用过ProGuard,不知道keep相关语法,就还是初级水平。
Android打包机制。涉及Android SD1C中的若干命令。对Android打包过程做一件事都很清楚。进一步是Android多项目依赖的打包技术。Ant、Gradle或者Maven,掌握 其中任何一种打包机制即可。
线上Crash分析并修复。要具备通过分析Crash信息修复线上Crash的能力。
内存泄漏。包括内存优化、内存泄漏的场景、MATT.具的使用。
调试工具。包括DDMS、Eclipse或Android Studio的调试功能。
Monkey机制。Android开发人员如何对一款App进行Monkey测试。这算是附加技 能吧。
单元测试。这里指的是JUnit。对复杂的算法写过单元测试以保证其没有问题。
GIT 的高级功能。包括 Stage、Rebase、Revert、Stash、Cherry Pick 和 Sub Module 等概念。如果项B中使用的是SVN,那么要掌握SVN的版本管理策略。
插件化编程,最少要理解DexClassLoader的概念。
设计模式。对常见的设计模式如工厂、生成器、适配器、代理、策略模式耳熟能详。 由此而看到,做

Android应用开发,不需要花太多精力去看Android系统源码,要先确 保我上面罗列的20点所涉及的技术都掌握了。

作者推荐学习书籍:

1)《疯狂Android讲义》我就是看这本书人门的。这本书很实际,比较适合于应用类 App开发人员做人门教材。已经人门的,建议也看一遍,梳理一下知识,做进一步提高。
2 )《Creating Dynamic UI with Android Fragments》这本书是专门讲 Fragment 的。关于 Fragment,很多书都只言片语,语焉不详。唯独这本书把Fragment从头到尾仔仔细细讲了一 遍。目前国内没有中文版。Fragment是Android技术中比较高大上的部分。
3)《Android应用测试与调试实战》乍一看这本书是讲测试的,其实不然,书中的很多章节涉及依赖注人、内存分析、打包部署等开发人员必知必会的技术。强烈建议仔仔细细通读之。

  1. 《Java与模式》这是本古董级的书了,所有介绍设计模式的书,论厚度,无出其另一点好处是,这本书是基于Java的,对Android开发人员比较适合。
  2. 《Git权威指南》s这本书名副其实,算是把Gk讲明内了。说到这里,我还要推荐 一款非常好用的Git图形化工具。除了能用来进行日常的Pull、Push和Rebase操作外,还能 教会你Git的高级用法,比如Cherry Pick、Stash、Sub Module等。
    下面是个人学习过的一些书籍,作为推荐
    1.《第一行代码》很好的入门书籍,讲的生动有趣。现在已经出版到第二版《第二行代码》
    2.《Android群英传》比上面那本更加深入一些,可以作为很好的进阶书籍。2
    3.《Android开发艺术探索》这本书就比较适合有一定的技术基础,已经更加想进一步深入学习系统底层实现的朋友了,如果基础不够看起来是很吃力的。
    4.《Android源码设计模式解析与实战》这本是我正在看的书,对于设计模式了解不多的朋友很适合看这本书,也是补充我在设计模式上的短板。而且这本书在实际教学上也很不错,带你去一点一点去改善Demo代码。

你可能感兴趣的:(《App 研发录》学习笔记(二))