Android 超全面试总结(面向P7)

Java相关

集合

在这里插入图片描述
Java集合简介

Android中的集合数据结构

最通俗易懂搞定HashMap的底层原理

HashMap实现原理

LinkedHashMap就是HashMap+双向链表:图解LinkedHashMap原理

ConcurrentHashMap就是HashMap+分段锁:ConcurrentHashMap详解

多线程

线程池执行流程:
在这里插入图片描述
在这里插入图片描述

线程池7大参数:
在这里插入图片描述
线程池分类:
FixedThreadPool:只有核心线程并且梳理是固定的,没有非核心线程;
CachedThreadPool:没有核心线程、非核心线程是无界的;
SingleThreadExecutor:只有一个核心线程;
ScheduledThreadPool:一个能实现定时和周期性任务的线程池;

深入理解synchronized底层原理,一篇文章就够了!

Java并发——Synchronized关键字和锁升级,详细分析偏向锁和轻量级锁的升级

volatile、内存屏障、指令重排序、内存一致性解析

比较synchronized和volatile,它们俩特性上最大的区别就在于原子性,volatile不具备原子性。

Java中如何优雅正确的终止线程

锁的分类:
在这里插入图片描述

JVM

深入浅出Java虚拟机课程

Java虚拟机(一)结构原理与运行时数据区域

Java虚拟机(二)对象的创建与OOP-Klass模型

Java虚拟机(三)垃圾标记算法与Java对象的生命周期

Java虚拟机(四)垃圾收集算法

Java四种引用解析以及在Android的应用

引用计数 根搜索法
在这里插入图片描述

在Java中,可以作为GC Roots的对象主要有以下几种:
①Java栈中的引用的对象。
②本地方法栈中JNI引用的对象。
③方法区中运行时常量池引用的对象。
④方法区中静态属性引用的对象。
⑤运行中的线程
⑥由引导类加载器加载的对象
⑦GC控制的对象

双亲委托模式
Android解析ClassLoader(一)Java中的ClassLoader
类加载器查找Class所采用的是双亲委托模式,所谓双亲委托模式就是首先判断该Class是否已经加载,如果没有则不是自身去查找而是委托给父加载器进行查找,这样依次的进行递归,直到委托到最顶层的Bootstrap ClassLoader,如果Bootstrap ClassLoader找到了该Class,就会直接返回,如果没找到,则继续依次向下查找,如果还没找到则最后会交由自身去查找。

异常相关

StackOverFlowError 常见原因及解决方法

Java语言按照错误严重性,从throwale根类衍生出Error和Exception两大派系

Error(错误)
程序在执行过程中所遇到的硬件或操作系统的错误。错误对程序而言是致命的,将导致程序无法运行。常见的错误有内存溢出,jvm虚拟机自身的非正常运行,calss文件没有主方法。程序本生是不能处理错误的,只能依靠外界干预。Error是系统内部的错误,由jvm抛出,交给系统来处理。

Exception(异常)
是程序正常运行中,可以预料的意外情况。比如数据库连接中断,空指针,数组下标越界。异常出现可以导致程序非正常终止,也可以预先检测,被捕获处理掉,使程序继续运行。

在这里插入图片描述

注解

Java注解总结(史上最全,有这一篇就够了)

反射

Java反射总结(史上最全,有这一篇就够了)

数据

Java数据总结(最值、存储、转换、大数处理)

其他

java中==和equals和hashCode的区别

基本数据类型的 == 比较的值相等;

类的 == 比较的内存的地址,即是否是同一个对象,在不覆盖equals的情况下,同比较内存地址,原实现也为 == ,如String等重写了equals方法;

hashCode也是Object类的一个方法,返回一个离散的int型整数,在集合类操作中使用,为了提高查询速度。(HashMap,HashSet等比较是否为同一个)

如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等;
如果两个对象不equals,他们的hashcode有可能相等;
如果两个对象hashcode相等,他们不一定equals;
如果两个对象hashcode不相等,他们一定不equals;

设计模式

设计模式(一)设计六大原则

GoF提出的设计模式总共有23种,根据目的准则分类分为三大类:

创建型模式,共五种:单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
另外随着设计模式的发展也涌现出很多新的设计模式:它们分别是规格模式、对象池模式、雇工模式、黑板模式和空对象模式等。

创建型设计模式:

设计模式(二)单例模式的七种写法

设计模式(三)建造者模式

设计模式(四)简单工厂模式

设计模式(十)工厂方法模式

设计模式(十三)抽象工厂模式

设计模式(十六)原型模式

结构型模式:

设计模式(六)代理模式

设计模式(七)装饰模式

设计模式(八)外观模式

设计模式(十二)享元模式

行为型模式:

设计模式(五)观察者模式

设计模式(九)模版方法模式

设计模式(十一)策略模式

设计模式(十四)中介者模式

设计模式(十五)状态模式

Android相关

Activity

深入理解Activity的生命周期

Activity的4种启动模式

《Android中高级工程师面试指南 — 基础知识 — Activity》

Activity 启动流程分析(Android10)

startActivity启动过程分析

注:Android启动流程

 1、bootloader启动内核和init进程;
 2、init进程产生守护进程— daemons;
 3、init进程启动Zygote进程;
 4、Zygote进程初始化第一个VM, 预加载framework和通用资源;
 5、init进程启动runtime进程;
 6、Zygote进程孵化出System Server;

startService与bindService 的区别

View

Android View体系(一)视图坐标系

Android View体系(二)实现View滑动的六种方法

Android View体系(三)属性动画

Android View体系(四)从源码解析Scroller

Android View体系(五)从源码解析View的事件分发机制

Android View体系(六)从源码解析Activity的构成

Android View体系(七)从源码解析View的measure流程

Android View体系(八)从源码解析View的layout和draw流程

Android View体系(九)自定义View

Android View体系(十)自定义组合控件

Android View体系(十一)自定义ViewGroup

Android View的绘制流程

android事件拦截处理机制详解

Android事件分发之ACTION_CANCEL机制及作用

如果一个组件没有接收到DOWN事件,那么一定接收不到MOVE,UP事件;
即时是MOVE和UP事件,在传递给子View之前也是可以通过ViewGroup的onInterceptTouchEvent方法拦截的,如果拦截了,那么该事件就会变成Cancel事件传递给子view;

Android动画总结

Android中Drawable整体介绍

Android VSYNC (Choreographer)与UI刷新原理分析

requestLayout、invalidate与postInvalidate区别

如果View确定自身不再适合当前区域,比如说它的LayoutParams发生了改变,需要父布局对其进行重新测量、布局、绘制这三个流程,往往使用requestLayout。而invalidate则是刷新当前View,使当前View进行重绘,不会进行测量、布局流程,因此如果View只需要重绘而不需要测量,布局的时候,使用invalidate方法往往比requestLayout方法更高效

Handler机制

Android Handler总结1-定义与用法

Android Handler总结2-子线程中的Handler和HandlerThread的使用

Android Handler总结3-源码分析

在这里插入图片描述
在消息队列获取下一个消息的时候,可能会发生阻塞。主要由两种情况导致:a、消息队列已经没有消息了,这个时候nextPollTimeoutMillis置为-1,当前线程进入无限睡眠等待,直到其他线程有消息放入,并把它唤醒。 b、消息队列头的消息执行时间大于当前时间,那么该线程需要睡眠等待后再执行该消息。进入阻塞前,就会把mBlocked标志位置为true。
而在MessageQueue入队的时候,当发现队列是空的,或者发现入队的消息的执行时间比当前处理的消息执行时间小的时候,就会去判断是否是阻塞的标志位mBlocked是否为true,如果是true表示当前线程处于阻塞状态,就会去把当前线程唤醒。

并发编程 | ThreadLocal 源码深入分析

从Handler.postDelayed来看看Android怎么实现处理延时消息

handler同步屏障

跨进程通信

Android IPC机制(一)开启多进程

Android IPC机制(二)用Messenger进行进程间通信

Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用

Android IPC机制(四)用ContentProvider进行进程间通信

Android IPC机制(五)用Socket实现跨进程聊天程序

Binder原理

Gradle

Android Gradle

Gradle核心思想

Android APK打包流程

Android APK打包流程

JetPack

JNI

Android JNI(一)——NDK与JNI基础

网络

android网络编程-刘望舒

TCP和UDP

TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。它使用三次握手协议建立连接,并且提供了超时重传机制,具有很高的稳定性。UDP协议则是是一种无连接的协议,且不对传送数据包进行可靠性保证,适合于一次传输少量数据,UDP传输的可靠性由应用层负责。在网络质量令人十分不满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多。

HTTPS

HTTPS加密机制解析与总结

Android中的HTTPS问题

HTTP2.0和HTTP1.0的区别:HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
①降低延迟,针对HTTP高延迟的问题,SPDY优雅的采取了多路复用(multiplexing)。多路复用通过多个请求stream共享一个tcp连接的方式,解决了HOL blocking的问题,降低了延迟同时提高了带宽的利用率。

②请求优先级(request prioritization)。多路复用带来一个新的问题是,在连接共享的基础之上有可能会导致关键请求被阻塞。SPDY允许给每个request设置优先级,这样重要的请求就会优先得到响应。比如浏览器加载首页,首页的html内容应该优先展示,之后才是各种静态资源文件,脚本文件等加载,这样可以保证用户能第一时间看到网页内容。

③header压缩。前面提到HTTP1.x的header很多时候都是重复多余的。选择合适的压缩算法可以减小包的大小和数量。

④基于HTTPS的加密协议传输,大大提高了传输数据的可靠性。

⑤服务端推送(server push),采用了SPDY的网页,例如我的网页有一个sytle.css的请求,在客户端收到sytle.css数据的同时,服务端会将sytle.js的文件推送给客户端,当客户端再次尝试获取sytle.js时就可以直接从缓存中获取到,不用再发请求了。

架构

美团:如何构建Android MVVM 应用框架

性能优化

在这里插入图片描述
Android-内存泄露的场景

算法

使用Master公式求解递归算法的时间复杂度

适配

Android各个版本API的区别

主要记住一些大版本变化:

android3.0 代号Honeycomb, 引入Fragments, ActionBar,属性动画,硬件加速

android4.0 代号Ice Cream,API14:截图功能,人脸识别,虚拟按键,3D优化驱动

android5.0 代号Lollipop API21:调整桌面图标及部件透明度等

android6.0 代号M Marshmallow API23,软件权限管理,安卓支付,指纹支持,App关联,

android7.0 代号N Preview API24,多窗口支持(不影响Activity生命周期),增加了JIT编译器,引入了新的应用签名方案APK Signature Scheme v2(缩短应用安装时间和更多未授权APK文件更改保护),严格了权限访问

android8.0 代号O API26,取消静态广播注册,限制后台进程调用手机资源,桌面图标自适应

android9.0 代号P API27,加强电池管理,系统界面添加了Home虚拟键,提供人工智能API,支持免打扰模式

UI适配

Android 屏幕适配:最全面的解决方案

其他

js相关

JavaScript教程

JavaScript语言总结

HTML5的十大新特性

面试题之ES6的新特性(详细)

Vue开发文档

别人的整理

Android 复习资料汇总版

Deep into Android

猜你喜欢

转载自blog.csdn.net/jiangguangchao/article/details/112857562