写点什么

Android 高级工程师进阶学习,架构师必备技能

发布于: 2021 年 04 月 07 日

前言

本人毕业于非 211、985 一本,学的是计算机网络,大一在一位师哥的引导下接触了 Android 开发,随着近一步的接触,慢慢的喜欢上了 Android 开发。于是大二开始,我开始自学 Android 开发。


大四的时候开始找实习工作, 因为喜欢 Android 开发,找的都是 Android 开发岗位,最后经过一段时间的面试,拿到了阿里的实习 offer。


今天就分享一下我的阿里面经和面试前的准备和学习方法,希望的想进大厂实习的同学提供一些帮助。

阿里巴巴

  • LRUCache 原理

  • 图片加载原理

  • 模块化实现(好处,原因)

  • JVM

  • 视频加密传输

  • 统计启动时长,标准

  • 如何保持应用的稳定性

  • ThreadLocal 原理

  • 谈谈 classloader

  • 动态布局

  • 热修复,插件化

  • HashMap 源码,SpareArray 原理

  • 性能优化,怎么保证应用启动不卡顿

  • 怎么去除重复代码

  • SP 是进程同步的吗?有什么方法做到同步

  • 介绍下 SurfView

  • HashMap 实现原理,ConcurrentHashMap 的实现原理

  • BroadcastReceiver,LocalBroadcastReceiver 区别

  • Bundle 机制

  • Handler 机制

  • android 事件传递机制

  • 线程间 操作 List

  • App 启动流程,从点击桌面开始

  • 动态加载

  • 类加载器

  • OSGI

  • Https 请求慢的解决办法,DNS,携带数据,直接访问 IP

  • GC 回收策略

  • 画出 Android 的大体架构图

  • 描述清点击 Android Studio 的 build 按钮后发生了什么,大体说清一个应用程序安装到手机上时发生了什么;

  • 对 Dalvik、ART 虚拟机有基本的了解;

  • Android 上的 Inter-Process-Communication 跨进程通信时如何工作的;

  • App 是如何沙箱化,为什么要这么做;

  • 权限管理系统(底层的权限是如何进行 grant 的)

  • 进程和 Application 的生命周期;

  • 系统启动流程 Zygote 进程 –> SystemServer 进程 –> 各种系统服务 –> 应用进程

  • recycleview listview 的区别,性能

  • 排序,快速排序的实现

  • 树:B 树的介绍

  • 图:有向无环图的解释

  • TCP/UDP 的区别

  • synchronized 与 Lock 的区别

  • volatile

  • Java 线程池

  • Java 中对象的生命周期

  • 类加载机制

  • 双亲委派模型

  • Android 事件分发机制

  • MVP 模式

  • RxJava

  • 抽象类和接口的区别

  • 集合 Set 实现 Hash 怎么防止碰撞

  • JVM 内存区域 开线程影响哪块内存

  • 垃圾收集机制 对象创建,新生代与老年代

  • 二叉树 深度遍历与广度遍历

  • B 树、B 树

  • 消息机制

  • 进程调度

  • 进程与线程

  • 死锁

  • 进程状态

  • JVM 内存模型

  • 并发集合了解哪些

  • ConCurrentHashMap 实现

  • CAS 介绍

  • 开启线程的三种方式,run()和 start()方法区别

  • 线程池

  • 常用数据结构简介

  • 判断环(猜测应该是链表环)

  • 排序,堆排序实现

  • 链表反转

  • 动态权限适配方案,权限组的概念

  • 网络请求缓存处理,okhttp 如何处理网络缓存的

  • 图片加载库相关,bitmap 如何处理大图,如一张 30M 的大图,如何预- - 防 OOM

  • 进程保活

  • listview 图片加载错乱的原理和解决方案

  • https 相关,如何验证证书的合法性,https 中哪里用了对称加密,哪里用了非对称加密,对加密算法(如 RSA)等是否有了解

美团

  • static synchronized 方法的多线程访问和作用,同一个类里面两个 synchronized 方法,两个线程同时访问的问题

  • 内部类和静态内部类和匿名内部类,以及项目中的应用

  • handler 发消息给子线程,looper 怎么启动

  • View 事件传递

  • activity 栈

  • 封装 view 的时候怎么知道 view 的大小

  • arraylist 和 linkedlist 的区别,以及应用场景

  • 怎么启动 service,service 和 activity 怎么进行数据交互

  • 下拉状态栏是不是影响 activity 的生命周期,如果在 onStop 的时候做了* 网络请求,onResume 的时候怎么恢复

  • view 渲染

今日头条

  • 数据结构中堆的概念,堆排序

  • 死锁的概念,怎么避免死锁

  • ReentrantLock 、synchronized 和 volatile(n 面)

  • HashMap

  • singleTask 启动模式

  • 用到的一些开源框架,介绍一个看过源码的,内部实现过程。

  • 消息机制实现

  • ReentrantLock 的内部实现

  • App 启动崩溃异常捕捉

  • 事件传递机制的介绍

  • ListView 的优化

  • 二叉树,给出根节点和目标节点,找出从根节点到目标节点的路径

  • 模式 MVP,MVC 介绍

  • 断点续传的实现

  • 集合的接口和具体实现类,介绍

  • TreeMap 具体实现

  • synchronized 与 ReentrantLock

  • 手写生产者/消费者模式

  • 逻辑地址与物理地址,为什么使用逻辑地址

  • 一个无序,不重复数组,输出 N 个元素,使得 N 个元素的和相加为 M,* 给出时间复杂度、空间复杂度。手写算法

  • .Android 进程分类

  • 前台切换到后台,然后再回到前台,Activity 生命周期回调方法。弹出 Dialog,生命值周期回调方法。

  • Activity 的启动模式

爱奇艺

  • RxJava 的功能与原理实现

  • RecycleView 的使用,原理,RecycleView 优化

  • ANR 的原因

  • 四大组件

  • Service 的开启方式

  • Activity 与 Service 通信的方式

  • Activity 之间的通信方式

  • HashMap 的实现,与 HashSet 的区别

  • JVM 内存模型,内存区域

  • Java 中同步使用的关键字,死锁

  • MVP 模式

  • Java 设计模式,观察者模式

  • Activity 与 Fragment 之间生命周期比较

  • 广播的使用场景

  • 百度


  • https 与 http 区别

  • https 下的 TCP 链接与一般 TCP 连接有什么不同

  • handler 机制

  • service 与线程的区别

  • service 中 startservice 与 bindservice 再停止时有什么区别

  • 实现一个队列的方式

  • view 的各自优势有哪些

  • view 绘制过程。

  • view 的分发机制

  • binder 源码

  • git merge 与 git rebase 的区别

  • B B-数树了解

  • Android 动画有哪些。属性动画与补间动画的区别

  • OKhttp 源码说一下

  • https 的加密流程,CA 证书怎么验证

  • http 格式,常用状态码

  • 对称加密算法,非对称加密算法

  • 手撕代码,归并两个升序数组,说一下时间复杂度

  • 腾讯


  • GC 机制;

  • RxJava 有没有了解;

  • 内存泄漏怎么排查;

  • app 的页面突然卡了一下,怎么排查?

  • ANR 怎么排查?定义是什么?

  • 使用过哪些开源库;

  • 对 OKHttp 有哪些了解?这个框架设计怎么样?

  • Databinding 有哪些了解?

  • EventBus 了解吗?

  • 安卓的注解有什么了解?

  • RelativeLayout 和 LinearLayout 怎么选?为什么?

  • 自定义 Layout 主要有那几个流程?

  • 滑动过程卡顿,刷新率太低,怎么排查?

  • 以上这些就是面试大厂时遇到的 Android 面试题目,希望能帮助到大家,最后嘱咐大家一句:“真正面试中,尤其是大公司中面试,没有固守成规的问法,唯有实力认真才能赢”。

小福利:

在当下这个碎片化信息环境的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了


很多朋友不是没有资料,大多都是有几十上百个 G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘


如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。


2021 大厂最新 Android 面试真题解析



各个模块学习视频:如数据结构与算法



只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。




这份体系学习笔记,适应人群:**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!点赞+评论即可获得!


直接点击这里前往我的GitHub中下载,就可以白嫖啦,记得给文章点个赞哦。

用户头像

VX公众号:编程进阶路 2020.11.28 加入

还未添加个人简介

评论

发布
暂无评论
Android高级工程师进阶学习,架构师必备技能