Android面试集锦系列(5)——一大波面试官正在准备Kotl
前言
2017年的Google I/O大会上, Google将Kotlin列为Android官方开发语言,Android Studio 3.0的预览版默认集成了Kotlin。Kotlin这门语言从诞生到稳定已历经7年时间,终于在16年底发布了1.0的稳定版。Angroid官方也终于忍受不了Java 6(貌似还有版权问题),迫不及待将开源的Kotlin作为官方指定用语。
Google的官方说明:https://developer.android.com/kotlin/index.html
这势必会对Android的应用开发造成影响,虽然不会让很多习惯Java开发的程序员立刻转投Kotlin的怀抱,不过作为Java的程序员你至少还是要知道Kotlin是什么的,是否“弃暗投明”或是“弃明投暗”那就是后话了。

面试题:你有使用过Kotlin来开发Android应用吗?说说Kotlin和Java有什么区别?
让一个不知道Kotlin为何物的同学去回答这个问题,有些折磨人。虽然很多公众号头条在密集推送Kotlin的文章,里面说了各种Kotlin对比Java 6的好处。
我估计你也背不下来,所以有什么比让你直接体会一下更有效呢?而且与其花时间纠结要不要学,还不如直接上手试试来得生猛有效。
文末还有更多思维脑图分享~

我是Mac系统,Window系统的读者请行参考官方的安装说明。Android Studio 3.0 Preview下载地址:https://developer.android.com/studio/preview/index.html
建议直接安装3.0的预览版,预览版可以和稳定版本并行运行。
区别
是不是发现视频中的例子好清新,写了许久Java,才发现世上还有很其他省事的代码写法,一直在Java 6的海洋中,确是有点难跟上现代语言的步伐。
Kotlin和Java的区别有很多,这样的问题你可以随便挑几点你感兴趣或者对你目前Java代码改善比较大的来回答。
这样的回答会让你的答案更生动真实,还记得吗,我们之前说过面试官很重要的一个工作就是辨别真伪。
如:
- Kotlin更安全;
如空引用由类型系统控制,你不会再遇到NullPointerException。
- 简洁,可靠,有趣
如你可以用Lambda 表达式;可以减少了很多模版代码;我们的演示视频中就不需要findViewById。
-
函数式支持;
-
扩展函数;
Kotlin同C#类似,能够扩展一个类的新功能而无需继承该类或使用像装饰者这样的任何类型的设计模式。Kotlin支持扩展函数和扩展属性。
-
Kotlin中没有静态成员;
-
......
与Java交互
Kotlin可与Java进行100%的互操作,允许在Kotlin应用程序中使用所有现有的 Android 库 ,Kotlin的标准库更多的是对Java库的扩展。
注意:目前我也是刚使用Kotlin,还有很多其他区别和优缺点,我会在稍后的文章中和大家分享。
学习资源
官方网站:https://kotlinlang.org/docs/reference/
小结
Kotlin的一个主要优点是它的简洁。你用很少的代码就可以实现原来Java写的功能,而你写的代码越少,你犯错误的概率就越小。光这个原因我就比较推荐大家尝试一下Kotlin来开发应用。
正如巴菲特所说“投资的秘诀不是如何赢,而是如何比别人少犯错误。”
不知道用在程序员身上是否也适用呢?也许可换成这样的说法:“厉害的程序了不是代码写的有多巧妙,而是比别人写的代码更好读更少出BUG。”
最后
针对于上面的面试题我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案做成了文档和架构视频资料免费分享给大家【包括高级UI、性能优化、架构师课程、NDK、Kotlin、混合式开发(ReactNative+Weex)、Flutter等架构技术资料】,希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
资料获取方式:加入Android架构交流QQ群聊:513088520 ,进群即领取资料!!!
点击链接加入群聊【Android移动架构总群】:加入群聊
