IT好文收集Android面试题基本知识

寻找卓越的(Android)软件工程师

2017-01-30  本文已影响3587人  wutongke

在过去五年中,我一直做Android相关的工作。在这期间,我与不同背景,不同水平的工程师进行过合作。有些工程师有非常丰富的经验,有些是刚走出校园的应届生,它们拥有的只是学校学习到的知识并利用业余时间进行App的开发。还有些工程师甚至不是CS专业,仅仅是自学的。在合作过程中,我目睹了不同类型工程师的工作交付内容和方式。

所以,如果你是一个Android软件工程师,可以尝试读一下这篇文章。首先,很多人误认为移动开发非常简单,移动应用就是把根据后端的设计把一些界面组合在一起。真的是这样吗,其实这与实际情况差的很远。实际上,如果你看一下PlayStore上的应用,你就会发现app的质量分布其实是一个高斯分布,低质量的app很少,同时高质量的app也很少。

这里我定义一下平庸的App是什么

在一个非常基本的层面上, 一个平庸的app 与操作系统不能很好地兼容。首先,不遵循平台要求的 设计语言,这会使得用户感到困惑。第二,不考虑运行环境(内存、cpu、带宽、电量)实际上是有限制的。第三,在某些条件下不能工作(比如在弱网环境下)。现在的大部分软件都存在最后一个问题。

简而言之,以上三点就是构建一个好的移动应用的挑战。此外,App需要与公司的基础需求合理地整合,适应不断变化的业务需求。

所以如果我要寻找可以处理以上三个挑战的软件工程师,以下几点是我关注的:

我并不担心面试者是否对SDK本身理解多少。如果面试者理解以上的几点,即使他只是一个Android的用户,也可以快速地学习。也就是说,面试者同时拥有好的CS背景,了解android生态环境,还要知道以下的一些基本概念:

可以发现重要的是判断面试者是否知道核心的基础和概念,从而较好地处理分给他们的任务。一定不要雇佣只会使用一两个library的员工。工程师不仅在必要时会使用library,而且可以在提供解决问题的方法之前可以分析使用情景,预见可能的问题。

再次强调,一定不要雇佣只会使用一两个library的工程师。

当然,我这里描述的条件适用于senior 工程师。同样也需要雇佣一些junior工程师。但是一定要控制好两种工程师的比例。如果团队中有太多初级工程师,那么开发过程非常艰难,需要修改一个接一个的线上问题,直到可以代码达到维护性和测试性良好的程度。

如果你是一个Android工程师,你可以看一下以下的文章以提高自己的技术水平:

** 软件工程技术**
Clean Code — by Uncle Bob Martin
The Pragmatic Programmer — by Andy Hunt and Dave Thomas
Refactoring — by Martin Fowler
Head First Design Patterns — by Elisabeth Freeman, Eric Freeman, Bert Bates and Kathy Sierra
Patterns of Enterprise Application Architecture — by Martin Fowler (his blog is also worth following)

** java**
Effective Java, Second Edition — by Joshua Bloch

并发
Java Concurrency In Practice — by Brian Goetz

数据结构和算法
Introduction to Algorithms (a.k.a The Cormen book) — by Charles E. Leiserson, Clifford Stein, Ronald Rivest and Thomas H. Cormen.or The Algorithm Design Manual — by Steven Skienna

计算机文化
Subscribe to ACM Queue
Love the Papers
Listen to Software Engineering Radio and/or Software Engineering Daily

问题解决技巧
How To Solve It — by G. Polya and John H. Conway

写作技巧
On Writing Well — by William Zinsser

值得follow的一些blog
Chet Haas’s blog. Specifically These series of articles he (Chet) wrote about Android development
Dan Lew’s blog
Jake Wharton’s blog
Jesse Wilson’ blog
Cyril Mottier’s blog
Chris Bane’s and Roman Nurik’s blogs for UI related subjects.
Listen to Android Backstage and The Fragmented Podcast.
And finally do subscribe to Android Weekly, to read about the latest stuff in the Android development world.

此文为译文,原文地址https://hackernoon.com/what-makes-a-good-android-software-engineer-206562e1fdb6#.g108jtz8i

欢迎关注公众号wutongke,每天推送移动开发前沿技术文章:

wutongke

推荐阅读:

重要-作为Android开发者必须了解的Gradle知识

编写高效的Android代码(译)

Android中使用gradient的一条建议

寻找卓越的(Android)软件工程师

上一篇 下一篇

猜你喜欢

热点阅读