太难了,面试阿里Android研发岗面了六轮终于拿到Offer,有些面试题想分享一波

532 篇文章 0 订阅
340 篇文章 3 订阅

面试过程:

1轮同级 + 1轮Android用人部门leader + 1轮Android 组leader + 1轮项目CTO + 1轮HR + 1轮HRBP

1、项目经历

  • 负责的模块,在工作中有什么总结
  • 用到了什么技术,有什么收益
  • 难忘的问题,对自己提升最大的功能/项目

2、handler源码部分:

  • handler 线程切换执行实现原理,
  • handler 延时执行实现原理,
  • messagequeue 数据结构,
  • handler.sendEmptyMessageDelayed() 和 * handler.postDelayed() 区别,
  • 如果让自己实现一个handler ,需要怎么实现,有哪些地方需要注意的

3、view部分:

  • view绘制流程,
  • view, window, activity关系
  • view 过度绘制解析,掉帧原因分析,怎么监测,怎么解决
  • cpu和GPU 绘制UI 流程(这个我不会)
  • 自定义view实现过程, 自定义view 怎么安全的刷新
  • 常用动画的种类,属性动画的使用, 插值器和估值器的使用

4、基础部分:

线程:

  • 线程开启的方式
  • 线程池使用,关键参数的取值依据和使用
  • 线程同步的方案,常用的锁
  • synchronized 和 volatile 关键字, volatile 是怎么实现可见性的
  • Java 中有哪些原子性操作

jvm:

  • jvm 堆/栈/方法区/本地方法栈/程序计数器 分别有什么作用, gc 垃圾回收流程
  • JVM / Dalivk / ART 了解多少,有什么区别

反射:配合retrofit 问的
类加载器:配合热修复问的
activity 启动流程

5、三方库:

热修复框架:

  • Andfix
  • Qzone
  • Tinker 修复原理
  • 有没有看过源码
  • 机型适配和版本适配怎么做的
  • LinkCanary 内存泄露框架原理, 除了这种方式监控内存泄露,是否还有其他方式

OKhttp:

  • socket连接池怎么复用的
  • 拦截器是怎么实现的
  • 用到了什么设计模式
  • 对OKhttp 还做了哪些优化

RXJava:

  • 怎么实现线程切换的
  • map 和 flatmap 操作符的区别
  • rx背压问题,怎么解决的,使用RXJava中还遇到哪些问题,怎么解决的

Glide:

  • 缓存怎么做的
  • 怎么和页面生命周期绑定(低版本是fragment,新版本 lifecycle?)

6、其他部分:

  • map 接口继承关系
  • set接口继承关系
  • list 接口继承关系

hashmap:

  • 原理
  • hash冲突
  • 扩容
  • java 1.8后的修改
  • 哪些map线程安全,怎么实现安全的
  • 怎么用一个数组实现一个栈结构,说说思路。
  • weex flutter有没有了解

手写两个算法:

一个巨大无序数组,查第一个不连续自然数的节点, 例如 1、2、3、5、6、7…. 第一个不连续自然数的节点是 4。 给定一个二进制数据位数, 输出所有2进制数所对应的所有自然数,要求时间复杂度最优: 例如 输入 1, 输出 0, 1, 输入2, 输出 0,1,2,3,4,5,6,7

  • app怎么保活
  • 怎么给所有的点击事件全局埋点,hock 系统的click事件
  • 用到了哪些设计模式,都运用在哪里,解决了什么问题。
  • 做过哪些性能优化,优化成果怎么样,是否有数据支撑,数据来源怎么取。

一个送礼的场景, 礼物有权重属性,怎么根据权重进行对礼物进行处理,然后再排队纷发,每次取一个礼物,怎么设计数据结构: 用有序队列,权重最大的排在队列最前,每次取礼物只拿第一个就行。细节还有数据重排,队列维护,数据同步等

面试前该怎么复习?

脑图 + 书 + 视频

什么意思呢?具体解释一下,首先你需要有一个全面的知识点脑图,然后遇到不懂的地方就看书,千万不要去看博客,毕竟博客门槛真的太低了,最后要配合一些高质量的视频,用来巩固知识和开拓视野。

脑图已经给你整理好了,可以根据这个图自行进行查漏补缺和规划:

Android知识体系简谱

接下来就需要梳理知识,提升储备了!(Android高级面试进阶学习需要的电子书也已经给你整理好了)

  • 架构师筑基必备技能:深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO

  • Android高级UI与FrameWork源码:高级UI晋升+Framework内核解析+Android组件内核+数据持久化

  • 360°全方面性能调优:设计思想与代码质量优化+程序性能优化+开发效率优化

  • 解读开源框架设计思想:热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack

  • NDK模块开发:NDK基础知识体系+底层图片处理+音视频开发

  • 微信小程序:小程序介绍+UI开发+API操作+微信对接

  • Hybrid 开发与Flutter:Html5项目实战+Flutter进阶

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。

然后再是通过源码来系统性地学习

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

《486页超全面Android开发相关源码精编解析》

刷大厂面试题备战,增加大厂通过率

包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《379页Android开发面试宝典》

视频呢?也给你整理了,够意思吧。

视频包含:

1、IPC机制相关面试题视频解析
2、项目相关视频解析
3、性能优化相关面试题视频解析
4、JVM从入门到着迷
5、源码相关试题视频解析
6、BAT面试总结分析

以上内容均放在了开源项目:【github】 中已收录,大家可以自行获取。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值