IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 一年经验 Android 开发面经总结,Android社招面试题 -> 正文阅读

[移动开发]一年经验 Android 开发面经总结,Android社招面试题

类加载机制问的也不少,除了 Java 中的,还可以说一下 Android 中的 DexClassLoader,Android 8 的改动?然后就可以引申到了插件化和热修复了。

还有一些问到虚拟机的。这时候先从 Java 的 HotSpot (解释执行和编译执行,分层编译)说起,然后到 Dalvik,最后到 ART。期间涉及 JIT、AOT 编译,什么区别?profile 性能分析?对垃圾回收的改进,如果优化 GC 停顿(可以参考 G1 回收流程)?

  1. 并发

问的最多的也就是 synchronized 和 volatile 的实现原理了。synchronized 的基本使用?1.6 的改进(无锁、偏向锁、轻量级锁、重量级锁)?Java 对象头?实现原理(ACC_SYNCHRONIZED、monitorenter/monitorexit 指令)?volatile 的可见性(lock 前缀+缓存一致性协议)和有序性(内存屏障)的实现原理?CAS 的实现(ABA 问题、循环时间长开销大问题、只能保证单个共享变量的原子性)?UnSafe 类的理解?

线程池,问的也很多,但是基本上都是问线程池的那几个参数的意思。

Android

  1. 基础

基本上都大差不差,Activity 和 Fragment 的数据传递,生命周期、启动模式;

动画的使用,估值器、插值器(其实就是三角函数)都比较简

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

单。

View 的绘制流程(从 Activity 的 attach 到 onResume),然后延伸到如何自定义 View,为什么要重写 onMeasure、MeasureSpec 的理解?

View 事件分发,需要注意 onCancel 的触发时机(典型的就是 RecyclerView 的点击滑动)?除了一般博客上面写的 Activity -> ViewGroup -> View 的流程。还可以说一下事件从哪里来的(InputManagerService)?事件最先是分发给 Activity 的吗(其实是 ViewRootImpl 里面的 mView,也就是 DecorView)?IMS 是如何分别处理 KeyEvent 和 TouchEvent 的?

在讲 View 的绘制流程,在 scheduleTraversal 时可以延伸到 View 的刷新机制。Vsync 信号的处理?四种回调前三种都比较好理解,Commit 回调是怎么触发的(onTrimMemory)?Vsync 计算掉帧,如何监听线上的卡顿情况,一种就是利用 Vsync,还一种就是 BlockCanary 的利用 Handler 回调。

然后就是 Handler 机制,这个基本上大家都懂,不过可以说一下内存屏障、为什么没有卡死、IdleHandler 在实际项目中怎么用到的?

  1. Framework

其实前面我们在回答 Android 基础时就已经讲到不少 Framework 的东西了。所以这一块直接问的比较多的就是 Activity 启动流程和 Binder 机制。在讲 Activity 流程的时候,可以说一下插件化 hook 式的 hook 点,以及 Android 8、10 启动 Activity 的流程改动。

Binder 机制,先说一下 Linux 下的 IPC 通信方式(管道、Socket、信号量、共享内存,其实这些在 Framework 层都有使用到,可以简单讲一下)。然后就是着重讲 Binder 的通信模型,Binder 在驱动层是如何表示的(binder_node、binder_ref 数据结构)?ServiceManager 的代理对象的获取(getStrongProxyForHandle(0))、Service 的注册?打开 Binder 机制的三大流程?

插件化和热修复,插件化的静态代理式(这个很好写,就是刚哥的 dynamic-load-apk)和 Hook 式;热修复我也只了解腾讯系的类加载机制的 dex 插桩,如果熟悉阿里系的底层替换方案也可以说一下。

  1. 性能优化

这个就可以根据实际在项目中做了哪些来说了。我是写了包体积优化(减少 8M+)、布局优化(过度绘制和布局嵌套)、内存优化(LeakCanary + Android Profile)。

  1. Gradle

因为我简历上的个人技能和项目经历都写了 Gradle,所以这一块问的也比较多。主要是问了编译打包流程(AAPT 和 AAPT2 的区别)以及一些项目中做了哪些事(构建优化、写了一个 Gradle 插件)。

计算机网络

  1. TCP

必问,一定要回答全哦。TCP 的面向连接(三次握手、四次挥手)、基于字节流、全双工、可靠性(流量控制、拥塞控制、重传机制等)。TCP 的缺陷(队头阻塞),以及 HTTP3 的怎么解决的?TIME_WAIT 状态的理解?

  1. HTTP/1.x、HTTPS、HTTP2、HTTP3

必问,这个只要成体系了,就很好回答了。

先从目前使用最广泛的 HTTP/1.1(二十多年前的版本)开始回答,长连接、如果传输大数据、现在有什么优化措施(每个域名六个并发连接、域名分片、精灵图等等),HTTP 1.x 的问题(应用层的队头阻塞、未压缩 Header、明文传输),HTTP2 是如何解决的(多路复用、HPACK 算法、二进制数据)?HTTP 的不安全性(机密性、问完整性、身份校验)由 HTTPS 保证(TLS_ECDHE_RSA_AES_128_GCM_SHA_256 + PKI)?

HTTP2 (基于 SPDY 协议)只解决了应用层的队头阻塞问题,但是并没有解决传输层的队头阻塞,所以可以说一下 HTTP3 是如何解决的(基于 QUIC 协议,使用 UDP)?连接迁移、前向冗余纠错?

算法

某度:判断合法的 IP 地址。

某多:数组奇偶排序,树的最大深度(递归和迭代都要写),加面算法判断是否是同花顺:

花色:R : 红色,B: 黑色,M: 梅花,F: 方块;牌大小:A、2、3、4 … K;

输入:[“RA”, “R2”, “R3”, “R4”, “R5”, “B4”, “M2”, “F1”]

返回 true,可以构成一个同花顺。

输入:[“FJ”, “FQ”, “FK”, “FA”, “F2”]

返回 false。

复制代码

某讯:岛屿问题

某宝:对称二叉树(递归和迭代都要写)

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 17:47:32  更:2021-12-16 17:49:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:49:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码