Android面试题 下载本文

Android面试题

一、阿里巴巴

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()方法区别 线程池

常用数据结构简介

判断环(猜测应该是链表环) 排序,堆排序实现 链表反转

二、腾讯

synchronized用法 volatile用法

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

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

图片加载库相关,bitmap如何处理大图,如一张30M的大图,如何预防OOM 进程保活

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

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

四、滴滴

MVP

广播(动态注册和静态注册区别,有序广播和标准广播) service生命周期

handler实现机制(很多细节需要关注:如线程如何建立和退出消息循环等等) 多线程(关于AsyncTask缺陷引发的思考) 数据库数据迁移问题

设计模式相关(例如Android中哪里使用了观察者模式,单例模式相关) x个苹果,一天只能吃一个、两个、或者三个,问多少天可以吃完

TCP与UDP区别与应用(三次握手和四次挥手)涉及到部分细节(如client如何确定自己发送的消息被server收到) HTTP相关 提到过Websocket 问了WebSocket相关以及与socket的区别

是否熟悉Android jni开发,jni如何调用java层代码