天天看点

android 技术点 整理

前言

学习一直是东一榔头,西一棒槌。看了人家的面试总结问题,就整理一下。试着总结学习,

一个月给个学习成果,一共86个点

事件分发流

View的渲染机制

触摸事件的分发?

点击事件被拦截,但是相传到下面的view,如何操作?

动画的原理,底层如何给上层信号

编译打包的过程

Android有多个资源文件夹,应用在不同分辨率下是如何查找对应文件夹下的资源的,描述整个过程

系统

ANR的原理(回答主线程5秒阻塞是不行的,要读源码)

Oom 是否可以try catch ?

内存泄露如何产生?

ANR 如何产生?

如何保证线程安全?

OOM的可能原因?

设计模式

适配器模式,装饰者模式,外观模式的异同?

简绘观察者设计模式UML图

Bitmap 使用时候注意什么?

比较/区别

String buffer 与string builder 的区别?

类别

java四种引用,强引用置为null,会不会被回收?

多进程场景遇见过么?

arraylist 与 linkedlist 异同?

进阶

bitmap recycler 相关

Jni 用过么?

volatile的原理

synchronize的原理

lock原理

Binder相关?

简述IPC?

数据库方面

Sqlite 怎么增加一个字段

XX项目中是怎么创建数据库的

Sqlite 怎么删除一个字段

sqlite升级,增加字段的语句

线程方面

线程和进程的区别?

如何保证多线程读写文件的安全?

如何实现线程同步?

为什么要有线程,而不是仅仅用进程?

关于handler,在任何地方new handler 都是什么线程下

线程死锁的4个条件?

不使用同步锁如何实现线程安全

多线程,多进程 相关

进程间通信方式?

XX项目中你们自己定义的线程池来管理任务,不使用框架,那么,后来新的项目怎么设计的

Integer类是不是线程安全的,为什么

你认为Rxjava的线程池与你们自己实现任务管理框架有什么区别?

简述工作线程更新UI的方法

第三方库

Glide源码?

glide 使用什么缓存?

Glide 内存缓存如何控制大小?

okhttp源码?

为什么用Retrofit(一个开源库)

Retrofit与之前的网络库有什么优势

RxJava简介及其源码解读?

热修复与插件化相关

算法方面

从上到下从左到右输出二叉树

算法,求公共子序列(或者是子串,记不清了)

算法判断单链表成环与否?

hashmap数据结构?

object类的equal 和hashcode 方法重写,为什么?

hashmap如何put数据(从hashmap源码角度讲解)?

fragment之间传递数据的方式?

网络方面

简述tcp四次挥手?

http 的session&cookie的区别

自由发挥

XX项目你负责什么

有什么你觉得自己做得好的地方

存储方面

threadlocal原理

内存管理

内存泄漏的可能原因?

用IDE如何分析内存泄漏?

应用最多占多少内存

常见内存泄漏情景及避免内存泄漏的措施

内存泄漏的常见场景

怎么发现&分析内存泄漏

性能优化

其他

差值器&估值器

简述消息机制相关

简述Activity启动全部过程?

性能优化如何分析systrace?

广播的分类?

ActicityThread相关?

Activity生命周期简述

Actvity启动模式简述

自定义view重写哪几个方法?

滑动卡顿如何解决(不同原因及对应处理方式)