Android面试系列总结篇
熟练掌握
未熟练掌握
由于各种各类的知识点及面试相关问题较多,在此仅记录总结比较重要的基础知识点和高频的面试题。
Android面试之网络篇
TCP和UDP
HTTP和HTTPS
HTTP1.0、1.1和2.0的区别
HTTPS原理和请求过程
对称和非对称加密算法
网络耗时优化
Android面试之Java基础篇
特点和特性
面向对象和面向过程
八大基本数据类型
四大引用类型
...
Android面试之进阶篇
Handler机制Binder机制进程和多线程View事件分发View绘制流程Gradle构建流程内存泄漏
内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,从而导致程序运行速度减慢甚至系统崩溃(OOM)等严重后果。
性能优化
包体积优化
稳定性优化
存储优化
WebView优化
启动优化
包体积优化稳定性优化存储优化WebView优化启动优化常见面试题锦集Handler延迟消息机制Handler异步消息和同步屏障Looper怎么保证在线程里唯一进程间通信方式有哪些内存映射(mmap)原理Binder的最大线程数量
Android面试之基础篇
ActivityFragmentServiceBroadcastReceiverContentProvider四大组件区别和ContextAnimation常见面试题锦集APK安装流程Activity启动流程Serializable和Parcelable区别Activity、Window、View关系Activity获取View宽高的三种方式LruCache缓存机制SharedPreferences优缺点,如何优化ListView、RecyclerView区别
Android面试之Java进阶篇
JVM的内存分配
Java 虚拟机在执行 Java 程序的过程中,会把它所管理的内存划分为不同的数据区域。
java文件首先需要经过编译器编译,生成class字节码文件;
Java程序中访问这个类时,需要通过ClassLoader(类加载器)将class文件加载到JVM的内存中。
JVM中的内存可以划分为若干个不同的数据区域,主要分为:虚拟机栈、本地方法栈、堆、方法区、程序计数器。
虚拟机栈
虚拟机栈是线程私有的,与线程的生命周期同步。
虚拟机栈的初衷是用来描述Java方法执行的内存模型,每个方法被执行的时候,JVM都会在虚拟机栈中创建一个栈帧。
一个线程包含多个栈帧,而每个栈帧内部包含局部变量表、操作数栈、动态连接、返回地址等。
局部变量表:是变量值的存储空间,我们调用方法时传递的参数,以及在方法内部创建的局部变量都保存在局部变量表中。
操作数栈:(Operand Stack)也常称为操作栈,它是一个后入先出栈(LIFO)。当一个方法刚刚开始执行的时候,这个方法的操作数栈是空的。在方法执行的过程中,会有各种字节码指令被压入和弹出操作数栈。
动态连接:主要目的是为了支持方法 ...
Android面试之Java基础篇
特点和特性Java特点:跨平台、面向对象、安全性、多线程、简单易用、可维护性高。
特点
描述
跨平台
Java可以不受计算机的硬件和操作系统的限制,而独立于平台。因为Java中有自带的JVM,它执行经过javac命令编译完成的java源代码所生成的class文件转换成机器码语言在平台上操作。
面向对象
万物皆对象,Java以对象为基本粒度。对象中包含属性和方法,对象的说明用属性来表达,方法用来操作对象。这样可以对应用程序进行解耦,提高代码的可扩展性和重用性。
安全性
语言级安全性:Java的数据结构是完整的对象,这些封装过的数据类型具有安全性。编译时安全性:编译时要进行Java语义和语法的检查,保证每个变量对应一个相应的值,编译后生成Java类。运行时安全性:表示在运行Java类时要进行字节码校检器校检之后才可以运行。可执行代码安全性:Java类在网络上使用时,对它的权限进行了设置,保证了被访问用户的安全性。
多线程
多线程是指允许一个应用程序同时存在两个或两个以上的线程,用于支持事务并发和多任务处理。Java除了内置的多线程技术之外,还定义了一些类、方法等 ...
Android面试之网络篇
TCP和UDP
TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP(User Data Protocol,用户数据报协议)是一个简单的面向数据报的传输层协议。UDP不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。
TCP和UDP的相同点:都是传输层协议。
TCP和UDP的不同点:报头不同、特点不同、协议不同。
不同点
TCP
UDP
报头不同
报头最大长度60个字节
UDP数据报最大长度64K(包含UDP首部),如果数据长度超过64K就需要在应用层手动分包,UDP无法保证包序,需要在应用层进行编号
特点不同
面向连接:客户端和服务端的三次握手,四次挥手可靠传输:序列号,确认应答机制,超时重传 ...
Flutter面试之基础篇
Flutter版本更新记录
2020-05-13
Flutter3 更新详解(支持macOS、Linux、曲面屏、游戏开发支持等)
Flutter简介初识Flutter(Flutter框架结构)
LocalKey、GlobalKey的作用和区别GlobalKey可以主动获取以及主动改变子控件的状态。
Widget、Element、RenderObject三者之间的关系Widget不是真正渲染UI的对象,它只是Element的一个配置描述,去告知Element应该如何去渲染,Widget和Element之间是一对多的关系。RenderObject才是实际渲染的对象,Element持有RenderObject和Widget。大致总结三者的关系是:配置文件Widget生成了Element,而后创建RenderObject关联到Element的内部renderObject对象上,最后Flutter通过RenderObject数据来布局和绘制。
Flutter和原生的通信方式1.BasicMessageChannel: 支持数据双向传递,有返回值,可用于传递字符串和半结构化的信息。2.Meth ...