当前位置:网站首页>掌握这套精编Android高级面试题解析,oppoAndroid面试题
掌握这套精编Android高级面试题解析,oppoAndroid面试题
2022-07-07 14:43:00 【InfoQ】
开头
Android开发面试的几部分
- 触摸事件一定是先传递到Activity然后才传递给View的么?
- 如果要在Application的onCreate生命周期之前执行一些逻辑,可以放在哪里?
- draw、onDraw、dispatchDraw执行的顺序如何?
- View真正显示是在onResume之前还是之后?
- Activity中嵌套有一个Fragment,startActivity之后,Activity和Fragment的生命周期顺序是如何的?
重点项目经历
- 为什么要做这个点,
- 考虑了什么因素并且是如何做的,
- 取得了什么效果(比如启动速度从1000ms降到200ms,这种具体的数据)
技术以外的东西
我的面经总结
- Android各个版本的特性(例如6.0,动态权限)
- ANR的原因
- Android中进程间通信的方式和对比
- AsyncTask的实现原理及优缺点
- Handler机制
- 自定义view三部曲,流程(或者实际场景题,例如实现一个表盘,怎么做)
- FrameWork层次结构
- Activity生命周期(A跳转到B,A和B中生命周期的执行顺序)
- Dvlik、ART、JVM三种虚拟机的区别
- 能不能在非UI线程更新UI
- Service和IntentService的区别
- Thread和HandlerThread的区别
- Touch事件分发机制
- 怎么知道一个Activity是否发生了泄露
- 从点击一个APP图标开始发生了什么
- Activity启动流程(源码看一遍,能大致讲出来就行)
- Activity启动模式(四种)
- Intent启动Activity的方式
- onStart和onResume的区别
- LruCache以及实现原理
- Android中的MVC、MVP、MVVM的区别和联系
- Parcelable和Serializable的区别
- Service生命周期
- Service的启动方式及区别
- Binder机制
- onSaveInstanceState和onRestoreInstanceState的调用时机(需要理解,一般会出个场景让你判断)
- onNewIntent的调用时机(同上)
- Android中的性能优化和内存优化
- RxJava说一下(常用操作符,背压,线程切换原理,实际应用)
- RxAndroid说一下
- EventBus原理
- Volley原理
- OkHttp原理
- Retrofit原理
- RxJava和Retrofit结合
- Dagger2原理
- 组件化介绍一下(为什么要有组件化,怎么解决合并冲突问题)
- 快应用介绍一下
- 屏幕适配的常用方法
- Service、进程保活
- Glide原理
- AsyncTask原理
- SurfaceView和普通View的区别
- 依赖注入框架的实现原理
- Git项目管理
- 什么是三级缓存
- 常用的设计模式(掌握常见的大约10种就Ok)
- ThreadLoal的作用及原理
- 线程的实现方式和实现原理
- 线程的状态,怎么创建线程,线程状态之间的转化(例如什么情况下线程会由运行变为阻塞)
- 进程的状态
- transient关键字的作用
- sleep()和wait()的区别
- hashcode()方法的作用
- ==和equals()方法区别(为什么重写了equals()方法还要重写hashcode方法)
- Java的三大特性
- 接口和抽象类的区别
- 进程和线程的区别
- 线程池各参数的含义,以及四种常用线程池的应用场景
- 阻塞队列的特点和原理和应用场景
- yield()方法的作用
- 多线程锁的类型,ReentrantLock,Lock,synchrnoized关键字等
- volatile关键字的作用(在单例中的作用)
- 闭包的概念
- 泛型(什么是类型擦除,为什么要有泛型)
- 锁优化方式(自旋锁、自适应自旋、锁消除、锁粗化、偏向锁)
- 类执行顺序
- StringBuffer和StringBuilder的区别
- HashMap的实现原理(最好是1.8之前和1.8之后都要知道)
- ConcurrentHashMap的实现原理(同1.8之前和之后都要知道)
- ArrayList和LinkedList的区别
- Java内存区域(堆区和栈区的区别,什么是运行时常量池)
- 装箱和拆箱
- OOM异常
- GC机制(GC区域,如何判断一个对象是否可以回收,GC算法,GC策略)
- 类加载机制(类加载过程双亲委派模型)
- Java内存模型(主内存与工作内存)
- 原子性(AtomicInteger原理)、可见性(volatile关键字)、有序性,如何保证
- 先行发生原则(happens-before原则)
- 线程安全的实现方法
- 锁的类型(悲观锁,乐观锁CAS算法,公平锁,非公平锁等怎么实现)
- StringBuffer和StringBuilder区别
- 注解(自定义注解)
- 四种引用的概念和区别
- HTTP协议(头结构,几种请求方法,缓存机制,各版本的区别)
- HTTPS协议,和HTTP协议的区别,密钥协商的过程,SSL机制
- 对称加密和非对称加密
- TCP和UDP的区别
- TCP的三次握手、四次挥手(包括状态码,以及四次挥手后为什么要等待2*TIME_WAIT)
- TCP拥塞控制机制
- TCP滑动窗口机制
- TCP超时重传机制
- DNS协议
- 五层网络模型(物理层,数据链路层,网络层,传输层,应用层)
- IP头部
- 在浏览器地址输入一个网址,发生了什么
- 链表(单向链表,双向链表)
- 数组(旋转数组)
- 队列(双端队列,阻塞队列)
- 栈
- 堆(大根堆、小根堆)
- 二叉树(完全二叉树、满二叉树、二叉排序树、平衡二叉树,红黑树)(深度遍历,层序遍历)
- 图(重点掌握图的深度优先遍历和广度优先遍历)
- 七大排序算法(冒泡,选择,插入,归并排序,快速排序,堆排序,希尔排序)
- 剑指offer上的算法题(能够对照目录,一看题目,能有思路,就ok)
- 二分查找
- 两个栈实现一个队列,两个队列实现一个栈
- 海量数据排序
- topK问题,有1千万个数,怎么快速找出最大的100个
- 合并两个有序数组,合并两个有序链表
- 杨氏矩阵(横向递增,纵向递增)中如何找到指定的数字
- 翻转一句话,例如I am 3 years old,翻转后,old years 3 am I
- 有10亿条数据,现在只有200M内存,怎么找出这10亿条数据中出现次数最多的100条数据
最后
边栏推荐
- Binary search tree (basic operation)
- Opportunity interview experience summary
- The difference and working principle between compiler and interpreter
- 谎牛计数(春季每日一题 53)
- 华东师大团队提出,具有DNA调控电路的卷积神经网络的系统分子实现
- PHP has its own filtering and escape functions
- Opencv configuration 2019vs
- three. JS create cool snow effect
- Vs tool word highlight with margin
- Set the route and optimize the URL in thinkphp3.2.3
猜你喜欢
Balanced binary tree (AVL)
95.(cesium篇)cesium动态单体化-3D建筑物(楼栋)
[designmode] proxy pattern
如何快速检查钢网开口面积比是否符合 IPC7525
Cesium(3):ThirdParty/zip. js
Unity3d click events added to 3D objects in the scene
平衡二叉树(AVL)
【Android -- 数据存储】使用 SQLite 存储数据
【C 语言】 题集 of Ⅹ
The team of East China Normal University proposed the systematic molecular implementation of convolutional neural network with DNA regulation circuit
随机推荐
Set the route and optimize the URL in thinkphp3.2.3
数据中台落地实施之法
Personal notes of graphics (3)
47_ Contour lookup in opencv cv:: findcontours()
Laravel service provider instance tutorial - create a service provider test instance
logback.xml配置不同级别日志,设置彩色输出
Build an all in one application development platform, light flow, and establish a code free industry benchmark
作为Android开发程序员,android高级面试
Laravel5.1 Routing - routing packets
Tragedy caused by deleting the console statement
Performance comparison of tidb for PostgreSQL and yugabytedb on sysbench
Laravel5.1 路由 -路由分组
【Vulnhub靶场】THALES:1
laravel中将session由文件保存改为数据库保存
[C language] question set of X
How can laravel get the public path
AutoLISP series (2): function function 2
Balanced binary tree (AVL)
删除 console 语句引发的惨案
[designmode] facade patterns