起因
事情是这样的。
4年前毕业那会,呆在公司的短视频项目,做 视频。那会做得比抖音还早,但是由于短视频太烧钱了,项目被公司关掉了。当时需要开发横竖屏直播/异步视频的场景,就研究下了市场上的 app,发现输入弹幕的交互并不友好。最直接的体验就是,微信比绝大部分IM软件在聊天场景下输入法与表情面板频繁切换时表现得更为平滑,不会给用户很突兀的闪烁感。但我们除了适配竖屏,们还需要兼容横屏/满屏/沉浸等场景。
摸索了一段时间之后,做出来的效果挺不错,比市面上的直播/异步视频播放场景下的输入交互体验都要好。于是写了个记录的 Blog Android -SystemUI的那点事 。主要是将如何设计横竖屏直/点播场景下良好的输入交互。但是文章并没有写完… 留了横屏模式下使用 PopupWindow 来实现的悬念… 本打算继续接着写第二篇。结果一拖,就是三年。
而在这三年里,前后参与开发了十多个项目(我们是流水线生产,老工具人),而涉及到输入交互的模块已经有IM聊天,直播间,异步视频播放页面,信息流评论等等。这些页面从最初使用 Activity 实现到演化成可用 Fragment,Dialog,PopupWindow 代替。所以原来那套技术实现已经不能满足。在寻找外部开源项目/技术博文无果的前提下,慢慢积累了一个库
推荐两个刷题网站:
牛客网
LeetCode
推荐几本Android进阶的书籍:
《Android开发进阶 从小工到专家 》何红辉 著
《Android开发艺术探索》 任玉刚 著
《疯狂Android讲义 》李刚 著
技术类
1.Java类类加载原理
2.界面卡顿的原因以及解决方法
3.自定义Handler时如何避免内存泄漏,内存泄漏如何排查,MAT分析方法以及原理,各种泄漏的原因是什么
4.app的架构是怎么样的,并且为什么这样,有什么优缺点?
5.TCP 有哪些状态。三次握手、四次挥手。为啥是三次不是两次?HTTPS 和 HTTP 的区别。HTTPS 2.0,3.0?
6.开源框架的使用和原理。 OkHttp内部实现、glide的内部原理、EventBus源码和RxJava的使用过程注意事项等
7.Activity的生命周期有哪些,知道onRestart么,介绍下
8.乐观锁和悲观锁,死锁 ,synchronized 原理
9.JVM 类加载机制、垃圾回收算法对比、Java 虚拟机结构等。
10.有什么工具可以看到Activity栈信息么?多个栈话,有方法分别得到各个栈的Activity列表么
11.插件化/热修复
其他
1.介绍下最近一年主要做了什么工作
2.遇到了什么印象深刻的问题。会顺着你介绍的项目问下具体实现。
3.以前的工作中,项目团队多少人,怎么分配工作
就是一些职业规划,或者可以体现你工作态度,为人处事方面的一些问题。
你有什么问题想问我的
一般的面试官都会问这个问题,这里搜罗了一些问题供大家参考
1.你在公司的一天是如何度过的?
2.能否给我简单介绍下贵公司业务与战略的未来发展?
3.贵公司最让你自豪的企业文化是什么?
4.对于未来加入这个团队,你对我的期望是什么?
5.通过刚才的面试交流,您觉得我还有那些不足?
学习福利
【Android 详细知识点思维脑图(技能树)】
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
详细整理在腾讯文档点击可见;
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。