首页 > 技术文章 > 安卓卡顿优化,7年老Android一次坑爹的面试经历,从理论到实践!

fusu1 2021-09-13 18:42 原文

O(∩_∩)O~今天又给大家带来了21道Android高级面试题,搞懂了这些相信你去面试的时候一定可以镇住面试官

为此我把这些知识整理成了一个983页PDF从基础到进阶。含有BATJ.字节跳动面试专题,算法专题,高端技术专题,混合开发专题,java面试专题,Android,Java小知识,到性能优化线程.View.OpenCV.NDK等应有尽有。还有辅之相关的视频+学习笔记

这期间很多面试经验,正直现在面试季节,分享给大家。有想法和问题的欢迎在评论区留言。

正文

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年最好不要写精通!

来上海感觉学历真的很重要,大公司都要求本科以上,而且要能查的。如果没有学历这是个硬伤了,除非技术很强,或者有内推的话也会看情况而论。

小公司面试官一般不会问你细节,但大公司面试官都会抓细节,所以细节要清楚,概念不能模糊,但一个问题有些细节部分可能面试官也不太了解,如果你都能说出来那就不错了,所以面试就是谁面死谁的问题了。还有不要起争执,态度谦虚,心里敬佩人家。我们就是来聊聊,并不是来讨要工作的。

总结

其实要轻松掌握很简单,要点就两个:

  1. 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
  2. 多练。 (视频优势是互动感强,容易集中注意力)

你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。

推荐阅读