android面试重点:
1.app启动流程
2.Handler机制
3.Binder机制
4.线程
5.事件分发机制
6.HashMap原理
7.android性能优化
8.android常见的数据结构与算法
一、 android相关
1.app启动流程
- 如何做启动优化?
- 冷启动、懒加载、丢线程池同步处理(如何知道全部完成)
2.android进程间通信
- 进程和线程的概念和关系
- 如何启动多进程
- 为何需要IPC
- android中的IPC方式和优缺点?
- Binder机制的作用和原理
- AIDL
- 进程间通信的方式有哪些
3.Handler机制
4.Android中的多线程有哪些?
5.Activity相关
- activity生命周期
- 启动模式以及除了LaunchMode外还有哪些实现方式
- activity常用的标记位Flags
- onSaveInstanceState()属于生命周期方法吗?什么情况下会被调用?
- Activity跟window、View之间的关系
- 如何启动其他应用的Activity
6.Fragment相关
- Fragment生命周期
- Fragment add和replace区别
- FragmentPagerAdapter和FragmentStatePagerAdapter区别和使用场景
7.广播BroadcastReceiver
- 广播分类
- 广播注册方式
- 广播发送接收原理
8.Service
- Service生命周期
- Service两种启动方式和区别
- 如何保证service不被杀死
- 能否在service中做耗时操作
- Service和IntentService区别
- AMS(ActivityManagerService)
9.ContentProvider
1.android有哪些存储数据的方式?
10.自定义View和ViewGroup原理和流程
- 工作流程
- 绘制流程
- 如何自定义一个View?
11.事件分发机制?滑动冲突解决?
12.SurfaceView与普通View的区别?
13.RecyclerView和ListView区别和优化?
- RecyclerView有几层缓存?
- 如何让两个RecyclerView共用一个缓存
14.android 动画
- 属性动画、补间动画、帧动画区别和使用场景
15.图片框架
- Glide、Picasso、Fresco比较?
- 三级缓存?
- LruCache和DiskLruCache原理?
- 如何设计一个图片框架?
16.Bitmap压缩、优化处理、格式大小计算相关(RGB_565、ARGB_8888等),长图加载(世界地图、清明上河图)
17.三方框架原理(okHttp、Retrofit、RxJava、ButterKnife、EventBus、LeakCanary)
- Retrofit在okHttp上做了哪些封装?动态代理和静态代理区别?如何实现?
- RxJava线程切换原理
18.内存溢出和内存泄漏(常见内存泄漏情况和解决方案)
19.android性能优化
- 布局优化
- 绘制优化
- 内存泄漏优化
- 响应速度优化和ANR日志分析
- 列表ListView、RecyclerView和Bitmap优化
- 线程优化
- 性能优化建议
- android性能优化工具
20.组件化、插件化、热更新
- 如何实现组件化
- Router实现原理?以及它如何实现组件间通信
- 插件化原理
- 热更新原理
- android中的类加载器
21.开发模式mvc、mvp、mvvm
- 区别和使用场景
22.对后台返回的Json格式处理(对Gson、fastJson的熟练使用以及对java泛型的掌握)
23.android应用保活
24.android打包流程?
- apk里面有哪些东西
- 签名原理
25.jni ndk相关
26.代码混淆
27.屏幕适配方案
28.android系统架构
29.android各个版本特性以及适配(6.0 7.0 8.0 9.0 10.0)
30.android WebView
- js与android交互
- webview中有哪些漏洞
二、Java基础相关
1.面向对象思想
2.常见的数据结构
3.HashMap实现原理
- 内部数据结构的实现、扩容、存取操作
- 哈希碰撞、哈希计算、哈希映射
- 为什是头插法、扩容为什么是2的幂次
- HashMap HashTable ConcurrentHashMap区别
- hashMap jdk 1.7 1.8不同实现,Java8的链表转红黑树
4.线程和多线程相关
-
volatile、synchronized、ReentrantLock、CAS区别
①上面几个的特性和使用场景
②CAS的ABA问题
③有哪些锁 - synchronized修饰实例方法和静态方法有啥不一样(对象锁和类锁)
- 线程常见的几种创建方式和区别
- 线程有几种状态
- wait()和sleep()、yield()、join()、interrupt()方法区别
- wait()的线程如何唤醒
- 线程池线程池的使用
5.常用到的设计模式
6.String、StringBuilder、StringBuffer区别
7.ClassLoader
8.深拷贝与浅拷贝
9.final、finally、finalize区别
- 为什么匿名内部类使用局部引用要用final
10.static关键字作用
11.注解
12.反射
13.Java虚拟机相关
- JVM类加载机制
- 垃圾回收算法对比
- Java虚拟机结构
14.Java四大引用(强引用、软引用、弱引用、需引用)
15.Java的泛型
- <? super T> 和<? extent T>区别
- 泛型擦除、通配符
16.接口和抽象类的区别
17.Exception和Error的区别
18.ArrayList和LinkedList的区别
19.ThreadLocal原理
三、计算机网络相关
1.http
- tcp有哪些状态
- 三次握手和四次挥手 为啥不是两次?
- http报文结构
- http常用状态码
2.https和http区别
3.浏览器输入一个url,按下回车网络传输的过程
4.网络架构
- 每层有哪些协议
- FTP相关原理
- TCP建立连接后,发包频率是怎样的?