正值金九银十面试季,从6月中旬开始复习,8月份开始投简历,一直到现在,简单记录一下,今天给大家分享的是我作为一位幸运鹅,拿到阿里offer的面试经历,整理分享给大家。
阿里一面(60分钟)
- 自我介绍
- 闲聊
- Android掌握程度
- JVM类加载中检验阶段的几种检验是什么,分别介绍一下
- 创建对象过程中发生并发问题的几种处理办法是什么,介绍一下
- 手撕算法,先说思路再开始写
- 链表倒数第K个结点
2)用两个栈实现队列
- 抽象类和接口区别
- final关键字
- 重写和重载
- 四种引用
- 线程和进程
- 线程状态
- 线程间如何通信
- 介绍几种同步器,到源码级,就是acquire release这些的实现,包括内部CAS的变化,对state的操作
- 怎么子线程创建handler,主线程呢,looper怎么创建,什么时候,和handler关系,looper会死循环吗,怎么避免的
- activity启动模式,单例用的场景
- 进程通信,binder原理,两个进程怎么找到对方
- 客户端怎么保证和服务器传输安全性,https原理,客户端怎么校验服务端身份,公钥存在哪,会不会被篡改
- java 内存泄漏
- GC
- hashmap机制
- 反问
阿里二面(70分钟)
- 自我介绍
- 讲一下View的绘制,performMeasure 是哪个调用的
- 讲一下Handler机制
- looper 为什么设计成死循环
- 是否可以阻塞,如何阻塞
- RecyclerView 瀑布流
- RecyclerView 缓存(详细讲)
- RecyclerView性能优化
- 数据错乱处理方式
- 为什么不用notifiChangeAll()
- 知道DiffUtil吗,源码
- 图片如何高效加载
- 设计一个图片加载框架,怎么做
- 缓存有没有做过呢
- DiskLrucache 缓存
- 批量加载图片怎么做
- 内存泄漏 有没有解决办法 Activity—》onDestory() 弱应用 弱引用的具体实现
- 平时怎么学习的?
这里说一下,遇到这种大的问题,不要简单的回答,而是塑造一种类似英雄故事,你之前是什么样的,然后遇到什么困难很痛苦,寻求改变,最终升华,所以现在是这样,要说的绘声绘色,面试官好比在听一部英雄故事,让面试官也能感同身受,心想确实是这样,这种英雄故事的方法可以应用在项目介绍中,针对某一个技术点,说(bian)一段英雄故事,之前使用什么技术,后来遇到什么问题,寻求改变,改进过后达到什么效果等等,面试官不会在意你的项目深度,更多的是你怎么解决问题,怎么思考?不知道你们能不能get到我的点
- 反问
阿里三面(35分钟左右):随便聊了聊,当场就给过,叫我好好准备后续面试
- 自我介绍,项目介绍
- 两个IP地址压缩成int
- 内部类和静态内部内区别
- 普通内部类里面能有静态方法吗?
- == 和 equals 的区别,int和Integer的比较问题
- 泛型了解吗?List list=new ArrarList()能编译通过吗?
- 说一下volatile关键字?如果记录程序执行行数能用volatile吗?
- 为什么线程上下文切换要消耗资源
- 知道哪些线程池
- 线程个进程区别
- 进程间通信方式
- 什么是弱引用
- 一次URL过程
阿里四面(40分钟)
- 职业规划
- 你对Android后续版本有什么建议?
- 方案中遇到的难点,怎么解决
- 学习计划
需要准备的知识
以下为在近期面试中刷到的问题,分为初中高级,大致分类记录一下,目前只想起这么多,不过一定要知道这些问题只是冰山一角,就算都会了也不能怎么样,最最重要的,还是坚实的基础,清醒的头脑。
说到这里顺便给大家整理了一份《Android面试总结汇总》,整理了包括最前沿的Android技术,包括 java , 高级UI绘制、源码级分析、内存泄露分析、NDK开发、移动架构师、数据结构和算法、OpenCV打造人脸识别、QQ视频通话核心技术-WebRTC等,包含了作为一个Android工程师在面试中需要用到或者可能用到的绝大部分知识。由于字数的限制,有需要的朋友们可以私信【面经】即可获取免费的领取方式!
初级面试题:
1、Activity启动模式有哪些,分别有什么不同?
2、Service启动模式有哪些,对应的生命周期?IntentService呢?
3、ContentProvider的作用,是否支持多线程和多进程
4、Broadcast的注册方式,对应的生命周期是什么,有序和无序那种可以中断广播?
5、AsyncTask的作用,如何使用(包括有哪些方法,能说出同步异步,能说出不同Android版本下的区别加分)
6、有哪些异步的方式?
7、Handler机制
8、Dialog的使用及其生命周期
9、Activity的生命周期,能否改?
10、Fragment的生命周期,能否改?
11、Activity和Fragment如何通信
12、View的绘制机制
13、View的事件传递机制
14、如何监听手势
15、ImageView设置图片显示有哪几种模式,有什么区别?
16、有哪些存储方式
17、SharedPreferences是否支持多进程、多线程
别看以上常问的是入门级的,但是有两三年开发经验能回答圆满的人不多。
中级面试题:
1、如何理解Activity的任务亲和性
2、如何让Service为单独的进程
3、IntentService的实现原理
4、LocalBroadcast的作用,实现原理,相对于Broadcast的优势在哪,劣势在哪
5、Handler的缺点,会不会造成内存泄漏,有则如何解决
6、Fragment与Activity的区别和联系
7、Fragment如何缓存布局
8、Fragment与ViewPager的搭配使用,有没有问题重叠问题,怎么解决
9、同时提供侧滑和上下滑动,如何解决事件传播问题
10、是否使用过Design包
11、嵌套滑动理解
12、behavior的原理
13、对设计模式有什么看法,经常使用的有哪些?
中级的稍微偏底层一些,这个主要考察平时是否关注而不是一味地怼业务需求
高级工程师面试题:
1、Activity的启动过程
2、Service创建为单独进程会有哪些问题
3、简述AIDL的构建过程
4、IPC机制有哪些
5、android多进程通信方式,内部原理
6、App启动的入口在哪
7、LRU缓存算法
8、Bitmap的有哪几种压缩算法,有啥区别
9、图片在手机本地存储大小和在内存大小是否一致,为什么,Android默认像素一般占几个字节
10、第三方框架的熟练程度,如:
1、若用过Volley网络框架,则询问其架构,如何使用,自带网络缓存判断过程,与Okhttp、retrofit、RxJava 等网络框架的区别,原理
2、若用过Glide图片框架,则询问其架构,如何使用与毕加索、retrofit等框架区别
3、若用过ORM框架,则询问目前常见几种框架区别、优缺点,如何改进
11、SharedPreference内部实现原理
12、模块化、插件化、组件化等分别有什么区别,对用有什么好处
13、说说MV 模式,并画出做过项目的架构图
14、对跨平台方案有哪些了解,使用过哪些? 比如RN
15、对大前端有什么看法,了解多少?使用过什么?
16、对其他语言的了解,kotlin,python、php、c++等
17、兴趣爱好是什么?对未来有什么规划?
终极一问:什么是操作系统?
由于篇幅限制,Android详细资料太全面,细节内容实在太多啦,所以只编辑了部分模块的章节简单的介绍下,每个章节的节点里面都有更精细的内容!
Android学习PDF+架构视频+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料
这些都是我现在闲暇还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效的帮助大家掌握知识、理解原理。
当然你也可以拿去查漏补缺,提升自身的竞争力。
相信它会给大家带来很多收获。如果你有需要的话,可以点击获取!
喜欢本文的话,不妨顺手给我点个赞、评论区留言或者转发支持一下呗~