题目来源:
https://www.jianshu.com/p/c70989bd5f29
Android各个版本API的区别
谈谈对Volley的理解
描述一次网络请求的流程
ActivityThread,AMS,WMS的工作原理
AsyncTask+HttpClient 与 AsyncHttpClient有什么区别?
Android线程有没有上限?
参考:
http://blog.csdn.net/javalive09/article/details/50588525
15193
线程池有没有上限?
理论没有上限
RecyclerView和ListView的性能对比
ListView的优化
RecycleView优化
RecycleView原理
ListView重用的是什么?ListView 中图片错位的问题是如何产生的和解决方案?RecycleView和ListView的区别
请描述一下View事件传递分发机制
View刷新机制
View绘制流程
View渲染
自定义View的事件
自定义View注意事项
自定义控件原理
Android代码中实现WAP方式联网
混合开发有了解吗?知道哪些混合开发的方式?说出它们的优缺点和各自使用场景?(解答:比如:RN,weex,H5,小程序,WPA等。做Android的了解一些前端js等还是很有好处的);
服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达?
动态布局的理解
怎么去除重复代码?
画出 Android 的大体架构图
如果在onStop的时候做了网络请求,onResume的时候怎么恢复?
Android中开启摄像头的主要步骤
微信主页面的实现方式
Viewpager+fragment
微信上消息小红点的原理
CAS介绍
(一)图片
图片库对比
图片库的源码分析
图片框架缓存实现
LRUCache原理
LinkHashMap单向链表,最近使用的放在最后,不常使用的放在头部,超过限制就删除头部的缓存。
图片加载原理
自己去实现图片库,怎么做?
Glide源码解析
Glide使用什么缓存?
Glide内存缓存如何控制大小?
网络框架对比和源码分析
自己去设计网络请求框架,怎么做?
okhttp源码
网络请求缓存处理,okhttp如何处理网络缓存的
从网络加载一个10M的图片,说下注意事项
TCP的3次握手和四次挥手
TCP与UDP的区别,TCP与UDP的应用
HTTP协议
HTTP1.0与2.0的区别
HTTP报文结构
HTTP与HTTPS的区别以及如何实现安全性
如何验证证书的合法性?
https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?
client如何确定自己发送的消息被server收到?
谈谈你对WebSocket的理解
WebSocket与socket的区别
谈谈你对安卓签名的理解。
请解释安卓为啥要加签名机制?
视频加密传输
App 是如何沙箱化,为什么要这么做?
权限管理系统(底层的权限是如何进行 grant 的)?
数据库
sqlite升级,增加字段,数据迁移
参考:
http://blog.csdn.net/leehong2005/article/details/9128501
https://www.cnblogs.com/xgjblog/p/5647803.html
1.重命名原来的表
2.建立新表
3.复制数据
4.删除旧表
数据库的优化
参考:
http://blog.csdn.net/u014608640/article/details/52511310
http://blog.csdn.net/horkychen/article/details/18892223
http://blog.csdn.net/whb20081815/article/details/70142033
1.索引
2.事务
3.在Where分支中使用限定符
4.语句的拼接使用StringBuilder代替String
5.查询时返回更少的结果集及更少的字段。
6.异步操作数据库
数据库框架对比和源码分析
参考:
http://blog.csdn.net/u010134293/article/details/58590092
http://blog.csdn.net/da_caoyuan/article/details/61414626
greenDao 插入删除快
realm 查询快
插件化、模块化、组件化、热修复、增量更新、Gradle
对热修复和插件化的理解
插件化原理分析
模块化实现(好处,原因)
热修复,插件化
项目组件化的理解
描述清点击 Android Studio 的 build 按钮后发生了什么
谈谈你对Android设计模式的理解
参考:
https://www.zhihu.com/question/29575295
http://blog.csdn.net/happy_horse/article/details/50908439
单例模式:各种系统级服务
建造者模式:AlertDialog.Builder,静态内部类
适配器模式:Adapter
工厂模式:BitmapFactory
观察者模式:ContentObserver
手写生产者/消费者模式
写出观察者模式的代码
适配器模式,装饰者模式,外观模式的异同?
MVC MVP MVVM原理和区别
参考:
http://blog.csdn.net/copy_yuan/article/details/51524667
MVC Activity即是Controller又是View,View与Model耦合很高
MVP Activity充当View处理UI,Presenter用来负责事件分发,将View和Model隔离
MVVM 解决了数据绑定的问题,但是View中逻辑过重。
个人使用MVP,View中去掉数据操作之后,代码量完全可以接受,再加上findViewById插件或者ButterKnife插件写起来很快。
用到的一些开源框架,介绍一个看过源码的,内部实现过程。
谈谈对RxJava的理解
RxJava的功能与原理实现
RxJava的作用,与平时使用的异步操作来比的优缺点
说说EventBus作用,实现方式,代替EventBus的方式
实现组件间通信
register会把当前类中匹配的方法,存入一个map,而post会根据实参去map查找进行反射调用
RxBus实现EventBus
https://www.jianshu.com/p/b99d60a4e749
从0设计一款App整体架构,如何去做?
说一款你认为当前比较火的应用并设计(比如:直播APP,P2P金融,小视频等)
Fragment如果在Adapter中使用应该如何解耦?
Binder机制及底层实现
参考:
http://blog.csdn.net/universus/article/details/6211589
http://blog.csdn.net/huaxun66/article/details/52966087
http://blog.csdn.net/u011240877/article/details/72825706
对于应用更新这块是如何做的?(解答:灰度,强制更新,分区域更新)?
实现一个Json解析器(可以通过正则提高速度)
谈谈对java状态机理解
(七)性能优化
如何对Android 应用进行性能分析以及优化?
ddms 和 traceView
DDMS 可用于 检测内存泄漏;
TraceView 可跟踪代码的执行时间,需要SD卡访问权限
Debug.startMethodTracing("love_world_");
Debug.stopMethodTracing();
Java多线程引发的性能问题,怎么解决?
统计启动时长,标准
冷启动:Application.onAttachBaseContext->FirstActivity.onWindowFocused
热启动:onRestart->onWindowFocused
启动页白屏及黑屏解决?启动太慢怎么解决?
设置windowBackground,延时创建Application中的对象,不必要的类可以稍后实例化, 一些第三方 SDK延迟初始化
如何保持应用的稳定性
代码稳定性,提前用捕捉一些可能出现的异常,自定义异常捕捉器
现在下载速度很慢,试从网络协议的角度分析原因,并优化(提示:网络的5层都可以涉及)。
Https请求慢的解决办法(提示:DNS,携带数据,直接访问IP)
java中的四种引用的区别以及使用场景
强引用置为null,会不会被回收?
(八)NDK、jni、Binder、AIDL、进程通信有关
请介绍一下NDK
什么是NDK库?
jni用过吗?
如何在jni中注册native函数,有几种注册方式?
Java如何调用c、c++语言?
jni如何调用java层代码?
进程间通信的方式?
Binder机制
简述IPC?
什么是AIDL?AIDL解决了什么问题?AIDL如何使用?
Android 上的 Inter-Process-Communication 跨进程通信时如何工作的?
多进程场景遇见过么?
进程调度
谈谈对进程共享和线程安全的认识
谈谈对多进程开发的理解以及多进程应用场景
什么是协程?
(九)framework层、ROM定制、Ubuntu、Linux之类的问题