在上周,我密集面试了若干位Android开发的候选人,工作经验在3到5年间。我的标准其实不复杂:第一能干活,第二Android基础要好,第三最好熟悉Framework层源码,我相信其它公司招开发时,应该也照着这个标准来面的。
我也知道,不少候选人能力其实不差,但面试时没准备或不会说,这样的人可能在进团队干活后确实能达到期望,但可能就无法通过面试,但面试官总是只根据面试情况来判断。
但现实情况是,大多数人可能面试前没准备,或准备方法不得当。要知道,我们平时干活更偏重于业务,不可能大量接触到算法,数据结构,底层代码这类面试必问的问题点,换句话说,面试准备点和平时工作要点匹配度很小。
作为面试官,我只能根据候选人的回答来决定面试结果。不过,与人方便自己方便,所以我在本文里,将通过一些常用的问题来介绍面试的准备技巧。大家在看后一定会感叹:只要方法得当,准备面试第一不难,第二用的时间也不会太多。
这里给大家分享本人收纳整理的2023年一二线互联网公司Android高级面试题总结和解析。
我们这份面试题,包含了十三大模块:据结构与算法、Java基础、深入泛型与注解、并发编程、虚拟机原理、反射类、网络编程、Kotlin、高级UI、Framework内核源码、组件内核、性能优化、开源框架 。如下图所示:
可能对于初学者不需要看后面的框架和 Framework模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。
适宜阅读人群
-
需要面试的初/中/高级 Android 程序员
-
想要查漏补缺的人
-
想要不断完善扩充自己 Android 技术栈的人
-
Android 面试官
![](https://i-blog.csdnimg.cn/blog_migrate/60f93ea4b58b8563bf1cf13e61846d12.png)
具体面试题
第一章 算法和数据结构面试题
- 请说一说HashMap,SparseArrary原理,SparseArrary相比HashMap的优点、ConcurrentHashMap如何实现线程安全?
- 请说一说HashMap原理,存取过程,为什么用红黑树,红黑树与完全二叉树对比,HashTab、concurrentHashMap,concurrent包里有啥?
- 请说一说hashmap put()底层原理,发生冲突时,如何去添加(顺着链表去遍历,挨个比较key值是否一致,如果一致,就覆盖替换,不一致遍历结束后,插入该位置) ?
- 请说一说ArrayList 如何保证线程安全,除了加关键字的方式 ?
- 请说一说ArrayList、HashMap、LinkedHashMap ?
- 请说一说HashMap实现原理,扩容的条件,链表转红黑树的条件是什么 ?
- …
第二章 Java核心基础面试题
- Java中提供了抽象类还有接口,开发中如何去选择呢?
- 重载和重写是什么意思,区别是什么?
- 静态内部类是什么?和非静态内部类的区别是什么?
- Java中在传参数时是将值进行传递,还是传递引用?
- 使用equals和==进行比较的区别
- String s = new String(“xxx”);创建了几个String对象?
- …
第三章 Java深入泛型与注解面试题
- 泛型是什么,泛型擦除呢?
- List<String>能否转为List<Object>
- Java的泛型中super 和 extends 有什么区别?
- 注解是什么?有哪些使用场景?
- …
第四章 Java并发编程面试题
- 假如只有一个cpu,单核,多线程还有用吗 ?
- sychronied修饰普通方法和静态方法的区别?什么是可见性?
- Synchronized在JDK1.6之后做了哪些优化
- CAS无锁编程的原理
- AQS原理
- ReentrantLock的实现原理
- …
…
…
…
第十章 Framework内核解析面试题
- Android中多进程通信的方式有哪些?
- 描述下Binder机制原理?
- 为什么 Android 要采用 Binder 作为 IPC 机制?
- Binder线程池的工作过程是什么样?
- AIDL 的全称是什么?如何工作?能处理哪些类型的数据?
- Android中Pid&Uid的区别和联系
- …
第十一章 Android组件内核面试题
- Acitvity的生命周期,如何摧毁一个Activity?
- Activity的4大启动模式,与开发中需要注意的问题,如onNewIntent() 的调用
- Intent显示跳转与隐式跳转,如何使用?
- Activity A跳转B,B跳转C,A不能直接跳转到C,A如何传递消息给C?
- Activity如何保存状态的?
- 请描诉Activity的启动流程,从点击图标开始。
- …
第十二章 程序性能优化与数据持久化面试题
- 一张图片100x100在内存中的大小?
- 内存优化,内存抖动和内存泄漏。
- 什么时候会发生内存泄漏?举几个例子
- Bitmap压缩,质量100%与90%的区别?
- TraceView的使用,查找CPU占用
- 内存泄漏查找
- …
第十三章 开源框架面试题
- 组件化在项目中的意义
- 组件化中的ARouter原理
- 谈一下你对APT技术的理解
- 谈谈Glide框架的缓存机制设计
- 谈谈你对Glide生命周期的理解
- 项目中使用Glide框架出现内存溢出,应该是什么原因?
- …
结语
本文的用意是让大家别再重蹈别人的覆辙,这还不算,本文还给出了不少准备面试的方法。你的能力或许比别人出众,但如果你准备面试的方式和别人差不多,或者就拿你在项目里干的活来说事,而没有归纳出你在项目中的亮点,那么面试官还真的会看扁你。