我究竟要不要学习Kotlin呢?
要回答这个问题,我们先把时间拨回到2017年5月18日,安卓团队在谷歌 I/O 2017 大会上宣布 Kotlin 成为官方头等支持语言。
彼时谷歌技术大牛?Steve Yegge 发表了一篇关于 Kotlin 的使用体会总结文章:“为什么说 Kotlin 比你们用的那些垃圾语言都好?”
一时间这条爆炸性资讯在引发的热议一直持续到了今天。
时间是检验真理的唯一标准,接下来我们来看看国内外技术专家,使用kotlin开发的感受!
Google Android 专家Annyce Davis:“当 Kotlin 出现时,我立刻被它吸引了,因为它的很多语法特性让我想起了 Groovy。它既整洁又精炼。”
Google Android 专家Sebastiano Poggi:“我真的真的很喜欢这门语言。我个人认为它在很多情况下使得编码变成一件愉快的事情,相比之前,同样的情况下用 Java 语言编码将会感到痛苦和繁琐。Kotlin 有时让我觉得自己就像一个 10 倍效率开发者。”
Google Android 专家Jorge Barroso:“Kotlin 迈出了 Android 开发的一大步,在这之前,Android 缺少 Kotlin 所带来的特性,相比于其他的 Java 平台,Android 平台的 Java 开发有些过时,即使现在有在推动 Java 8,但它还是不会变成我们喜欢的现代编程语言。
Google Android 专家Mark Allison:“虽然我也很喜欢 Kotlin,但我不认为它已经足够成熟到能够在线上产品中使用。成熟模式和最佳实践的缺乏,使得 Kotlin 编写的代码可能难以维护。”
Google Android 专家Dmytro Danylyk:“对于那些停留在 Android 世界的开发者而言,Kotlin 是一个真正的规则改变者,它拥有很多我喜欢的特性:空类型安全,data classes,属性和懒加载属性,扩展函数,协程,不变性等等。
我很享受使用 Koltin 来编码,因为我没有必要在项目中引入太多的第三方库,Kotlin 已经非常好的提供了大部分的支持。”
阿里面试需注意
1、面试前要做好充分的准备,一方面要尽可能多的搜集资料,对用人单位的历史、现状、规模、业务、产品、服务等方面要有所了解,掌握用人单位对人才的需求与使用情况;另一方面,要对照自己的实际情况,分析哪些是自己的特长,哪些是自己的不足。
2、携带好本人简历、推荐材料等。即使是曾经发过求职信的单位,也应该再带上一份材料,以备用人单位需要。
3、应在约定的时间以前赶到面试地点,绝对不可以迟到。一方面可以给自己留下一点时间,整理自己的仪容仪表,整理一下说话的思路;另一方面,提前赶到也表明自己对面试的重视,对对方的尊重。
4、不要带人同往。这会给招聘者留下缺乏信心的印象,尤其女同学更要注意这个问题,即使是两人同去一个单位应聘,也不要同时进去。
5、回答问题应口齿伶俐,思路明确。措辞要得体,有组织、有条理、不啰嗦、但也不能只说“是”或“不是”。
6、不要急着提出薪水待遇问题,尽可能避开这个问题,最好让主考人提出。
7、如果招聘小组集体进行面试时,应注意协调好关系。回答主试人问题的时候,可以用眼睛的余光观察一个其他人的反应,以示对其他人的尊重。如果有两个主持人同时提问,则应该逐一回答。
小建议
阿里实习生招聘/秋招开始的早
学校下学期开学时间是2020年2月20日,而阿里的实习生招聘内推开始时间是3月1日,也就是说开学一周后阿里就开始内推了,相信很多同学还没从寒假里缓过来吧。阿里的秋招内推开始时间是7月4日,也就是很多学校才放暑假或还没开始放暑假就开始内推了,相信还有很多同学是打算暑假复习两个月再战秋招的吧。而且阿里内推成功即开始面试,同样也没有缓冲的时间哟~
阿里实习生招聘/秋招并不在意素质测评和编程测验
按照阿里校招官网的流程图,内推成功后会收到素质测评和编程测验的邮件通知,要求三天内完成。但是可千万别理解为没完成就不会走到面试流程了,好多小伙伴拖着编程测验不做,准备腾出三天时间抱佛脚的,结果当天或者第二天就接到电话面试了。
阿里实习生招聘/秋招主要在内推,正式批次相当于补招
阿里的绝大多数部门的招聘都放在了内推,等到内推时间截止的时候绝大多数部门都已经招满人了。正式批次笔试后,能够收到面试通知的同学很少,而且面试的部门也主要集中在高德、虾米、钉钉、优酷等部门,而非集团、菜鸟和蚂蚁。
阿里实习生招聘/秋招名额先到先得
一般来说,越早内推,越早面试,面试通过的概率相对来说更大。在内推要截止的时候再内推多半因为部门招满人了没人鸟了。
那么,面试阿里P6岗,需要掌握多少呢?
1. Android基础 & 常用
- 针对Android基础&常用知识,我认为对于初级开发者来说,按照优先级最主要的知识点主要包括:四大组件、布局使用、多线程 & 动画;
- 具体介绍如下:
2. Android进阶
针对Android进阶知识,按照优先级最主要的知识点主要包括:自定义View、性能优化,具体介绍如下:
3. 与时俱进、热门技术
- 除了基础日常使用的
Android
知识,我们还需时刻关注行业动态,与时俱进的学习新技术,如近些年来较为热门的Android
新兴技术包括:Flutter
、热修复、插件化等; - 同时,了解 & 学习常用的开源库也十分重要,常用的开源库主要包括图片加载、网络请求、异步处理的开源库,具体类型如下:
4. 编程语言:Java与Java虚拟机
-
Android
是基于Java
的,所以学习Java
和Java
虚拟机(JVM
)十分重要 -
对于学习Java,我们移动端开发学习Java不需要后端那么深入,我认为作为Android开发者,学习的内容包括:语言特性、基础使用、集合类&机制。具体介绍如下:
二、阿里面试题(共4面)
一面:
时间:2020年8月23日
时长:1小时
1、 c++从cpp文件到exe可执行文件经历的流程
2、 c++动态链接和静态链接的比较
3、 了解Android的Linux层吗(我答不了解,然后没有然后了)
4、 JVM内存管理
5、 操作系统中虚拟内存的作用
6、 操作系统中的分页机制
7、 路由器和交换机的区别
8、 View的渲染流程
9、 内部类分两种,static和非static,有什么区别。
算法题:
1、层次遍历,自定义树的结构,不一定是二叉树,按顺序输出节点的值
2、只输出一层的首尾节点的值。
二面:
时间:2020年8月27日
时长:45分钟
1、 自我介绍
2、 TCP和UDP区别
3、 Java接口和abstract类的区别
4、 怎么才算abstract类,可以实现实方法吗,接口可以实现实方法吗
5、 Java泛型
6、 Java多态是什么,重载和重写的区别
7、 HashMap的put和get是怎么实现的
算法题: 输入一个由(、)、[、]、{、},组成的字符串,若其符合规则,输出true,否则输出false。比如)(、({)}、[、())等就不符合规则了,但是({})这种也符合规则。
三面:
时间:2020年9月8日
时长:65分钟
1、 自我介绍
2、 TCP三次握手和四次分手,为什么分手要四次
3、 Inner join、left join、right join的区别
4、 你了解范式吗
5、 java内部类有几种,他们的区别,匿名内部类有什么特点。
6、 sleep()和wait()的区别。
7、 service的启动方式
8、 service的生命周期
9、 讲讲你对广播的理解。
10、 给你一个项目,你会怎么做它的架构(我不会,扯到了设计模式)
算法:
1、 实现一下单例模式(因为之前扯到了设计模式)
2、 给一个数组和一个目标数,找出所有的相加之和等于这个目标数的数字组合。
HR面:
1、为什么来阿里?
2、之前没考虑过阿里吗?
4、毕业这么久了,你觉得自己最大的改变是什么?
5、用一句话总结一下自己
注:由于文章篇幅有限,面试题的答案的详细版整理在文档里
结尾
我还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料分享给大家。
(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录