面试了一位工作12年的程序员,
这位老哥有3年java开发经验,2年H5,7年Android开发经验,简历上写着精通Java,Android,熟悉H5开发。没有具体的技术点。
说实话我很期待这位老哥的面试,于是让人事邀约了他。
老哥面试的气场很足,我也很尊敬他,一大波的自我介绍之后,我们进入了正题。
我问了他Jetpack,他说几乎没用过Jetpack,于是我给他举了个小例子,老哥给我的答案是百度可以解决。
于是我又问了他Groovy,老哥还是说不清楚,于是我问了最基础的Handler,Binder等几个关键词,依旧说不清楚,老哥依旧那么强势霸气,他给到我的感觉就是“啥都会做,你别问这些没用的”。
看着他简历上写着,精通安卓开发,熟悉跨平台开发,js交互,我问了一句了解Flutter吗?他说不知道没听过,最后问了一句期望薪资他说25k,我不知道问什么了,于是匆匆结束了面试。
正文
JVM 语言得摆正自己的地位,既要考量自己的能力,也得考虑历史的进程。
Java 是亲儿子,又是 JVM 的“原住民”,主导着 JVM 的发展方向,树大根深,枝繁叶茂,“此诚不可与争锋”。
对比其他 JVM 语言,Kotlin 算是能把自己的地位摆得比较正的了,没有“王侯将相宁有种乎”、取 Java 而代之的雄心壮志,反而始终坚持与 Java 的极强兼容性,大量使用 Java API,把臃肿的 Java 代码包装成简短的语句,默默做着“裱糊匠”的工作。目前来看,Kotlin 相当胜任这个角色,类型推断、扩展、空安全、高阶函数,哪个不是实用又强大的语法增强?
在我看来,Kotlin 对 Java 开发者最大的改变不是减少浪费在写代码上的时间,而是一系列思维方式的转变:
- 与其让开发者手动控制循环,不如把循环封装在类库内部,类 C 语言的三段式 for 循环和 while 循环简直是 bug 和复杂代码的元凶;
- 面向对象,但不能被类和对象捆住手脚,把函数解放出来!
- 每一行代码都要用在刀刃上,尽量减少模板代码和多余的声明;
- 编程语言要设计好“默认配置”,引导开发者多使用“默认配置”,比如类默认不可继承、访问控制符默认 public、集合默认只读、类型默认不为 null 等等;
- **不变对象优于可变对象,**多用 val 少用 var、多用只读集合少用可变集合、多用非空类型少用可空类型;
- **类要“回归本心”,只承担“抽象对象”的功能,**Kotlin 鼓励多使用扩展、少在类里塞一堆 API 和实现,尽量采用“类基本框架 + 外部扩展功能函数”的模式。
这些东西都是在学习 Kotlin、写 Kotlin 过程潜移默化地传达给开发者的,能够引导传统守旧的 Java 开发者拥抱现代编程语言。
Kotlin 不是一门学问,而是一套工具,它不像Scala,没有那么重的书卷气,一切特性都为实用、简洁而生;
Kotlin 不是革命者,而是改良者,它不是 Go,没有取天下而代之的野心,只有“让 Java 更好用”的踏实目标,积跬步而至千里;
Kotlin 不完美,但在不断改善,它不像 Java 被 Oracle 一家把持,不允许任何不受控制的特性出现,Kotlin 的诞生和发展都离不开社区推动,越来越多的新特性正在应开发者呼吁加入其中;
Kotlin 不会面面俱到,而是以补 Java 的短板为先,Kotlin 不会变成 C++。
最后
分享一份工作1到5年以上的Android程序员架构进阶学习路线体系,希望能对那些还在从事Android开发却还不知道如何去提升自己的,还处于迷茫的朋友!
- 阿里P7级Android架构师技术脑图;查漏补缺,体系化深入学习提升(详细点击我的GitHub领取)
- **全套体系化高级架构视频;**七大主流技术模块,视频+源码+笔记
需要架构学习笔记导图的可以点击我的GitHub领取
群内有许多技术大牛,高手如云,有任何问题,欢迎广大网友一起来交流,群内还不定期免费分享高阶Android学习视频资料和面试资料包~
手如云,有任何问题,欢迎广大网友一起来交流,群内还不定期免费分享高阶Android学习视频资料和面试资料包~