什么是Kotlin?
Kotlin,如前面所说,它是JetBrains开发的基于JVM的语言。JetBrains因为创造了一个强大的Java开发IDE被大家所熟知。Android Studio,官方的Android IDE,就是基于Intellij,作为一个该平台的插件。
Kotlin是使用Java开发者的思维被创建的,Intellij作为它主要的开发IDE。对于Android开发者,有两个有趣的特点:
对Java开发者来说,Kotlin是非常直觉化的,并且非常容易学习。语言的大部分内容都是与我们知道的非常相似,不同的地方,它的基础概念也能迅速地掌握它。
它与我们日常生活使用的IDE无需配置就能完全整合。Android Studio能够非常完美地理解、编译运行Kotlin代码。而且对这门语言的支持正是来自于开发了这个IDE的公司本身,所以我们Android开发者是一等公民。
但是在小编学习Flutter和Kotlin发现网上没有能将两个技术点讲的特别系统并运用的学习资料,我翻阅了各大平台网站都没有发现真正能把Flutter和Kotlin讲解的十分透彻,最终在一位大佬的指点下,我拿到了这份Flutter和Kotlin笔记,这份笔记中全面的讲解了Flutter和Kotlin相关知识。
有需要的朋友可在文末获取这两份笔记+所有资料文档哦!
这期间很多面试经验,正直现在面试季节,分享给大家。有想法和问题的欢迎在评论区留言。
正文
1.面试问得最多的是自定义 View 基本每家都问!
主要问 View 的绘制流程,自定义View的步骤。有时会涉及到细节;比如 PhoneWindow 实例是在哪个类哪个方法中实例化的?Selector 是怎么实现的?View 动画是怎么实现的?为什么移动后点击事件还在原来的位置?
2.Android 系统源码部分(这是大厂特别喜欢问到的)
事件拦截和分发
进程间的通信方式
应用的创建启动流程
Handler 是怎么导致内存泄露的
第三方库的源码,Glide、OkHttp 和 Retrofit 问得比较多,MVC,MVP和 MVVM 开发模式优缺点。
常用设计模式理解问得也多,大公司 Binder 驱动和虚拟机方面问得比较多。
3.数据结构和算法,Java 的常用集合和实现原理
比如 ArrayList ,LinkedHashMap 的实现原理,缓存淘汰策略,红黑树和二叉树,最短路径规划,海量数据筛选,很荣幸的是面试官目前还没有要我手写算法!
4.性能优化
如何检测一段代码的执行时间?
界面卡顿如何修复?
滑动不流畅怎么处理?
50fps 有什么办法可以提高到 60fps?
内存泄露怎么检测?
leakcanay 的原理?
5.线程和线程池,
wait() 和 sleep() 的区别?
同步锁
线程池的参数详解?AsyncTask 源码参数详解?
…
我能记得的大概就这些了。最后还啰嗦一下,有很多公司标明了,你必须要会 C 和 C++, OpenGL 或 OpenCv 或音视频编解码!这里要小心,我写的是熟悉,因为像音视频和 OpenCv 图像处理这些方面,没做个6、7年最好不要写精通!
来上海感觉学历真的很重要,大公司都要求本科以上,而且要能查的。如果没有学历这是个硬伤了,除非技术很强,或者有内推的话也会看情况而论。
小公司面试官一般不会问你细节,但大公司面试官都会抓细节,所以细节要清楚,概念不能模糊,但一个问题有些细节部分可能面试官也不太了解,如果你都能说出来那就不错了,所以面试就是谁面死谁的问题了。还有不要起争执,态度谦虚,心里敬佩人家。我们就是来聊聊,并不是来讨要工作的。
学习福利
【Android 详细知识点思维脑图(技能树)】
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
详细整理在腾讯文档可以见;
文档可以见;
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。