熬夜复习90天,4面阿里Android研发成功上岸定级P6,分享我的面筋

正值金九银十面试季,从6月中旬开始复习,8月份开始投简历,一直到现在,简单记录一下,今天给大家分享的是我作为一位幸运鹅,拿到阿里offer的面试经历,整理分享给大家。

阿里一面(60分钟)

  • 自我介绍
  • 闲聊
  • Android掌握程度
  • JVM类加载中检验阶段的几种检验是什么,分别介绍一下
  • 创建对象过程中发生并发问题的几种处理办法是什么,介绍一下
  • 手撕算法,先说思路再开始写
  1. 链表倒数第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开发面试专题资料,高级进阶架构资料

这些都是我现在闲暇还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效的帮助大家掌握知识、理解原理。

当然你也可以拿去查漏补缺,提升自身的竞争力。

相信它会给大家带来很多收获。如果你有需要的话,可以点击获取

喜欢本文的话,不妨顺手给我点个赞、评论区留言或者转发支持一下呗~

猜你喜欢

转载自blog.csdn.net/ajsliu1233/article/details/108631382