网络面试题
session和cookie的区别,使用场景是什么。
简答来说
cookie是存储在客户端浏览器上的,session是存储在服务器上的。
cookie不是很安全,容易被别人分析出来,进行cookie欺骗。
session存放在服务器,访问量较大的时候会有服务器压力。
一般来说,cookie存储的数据量会比较小。
复制代码
网络通信原理
3次握手,4次挥手
HTTP和HTTPS的区别,HTTPS加密过程
SSL/TLS 加密,对称加密&非对称加密
复制代码
移动端网络优化
减少DNS 查询 URL 对应 IP 地址。(HTTPDNS,DNS预解析)
与服务器建立连接(通常情况下为 TCP/IP 协议)。(基于HTTP/2链接复用)
根据应用层协议(HTTP/HTTPS)发送请求。
服务器响应请求,返回序列化的数据(Json/Proto)。
APP 反序列化数据,并予以呈现。
复制代码
建连策略,心跳策略
计算机基础
Java基础
软引用,弱引用,强引用,虚引用
软引用是用来描述一些有用但并不是必需的对象,在Java中用SoftReference类来表示。对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。
弱引用也是用来描述非必需对象的,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。在java中,用WeakReference类来表示。
虚引用和前面的软引用、弱引用不同,它并不影响对象的生命周期。在java中用PhantomReference类表示。如果一个对象与虚引用关联,则跟没有引用与之关联一样,在任何时候都可能被垃圾回收器回收。虚引用主要用来跟踪对象被垃圾回收的活动。
复制代码
线程同步,线程池
synchronized(锁对象,synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类)
volatile(保证数据一致性,不能保证原子操作)
ReentrantLock类是可重入、互斥、实现了Lock接口的锁, 它与使用synchronized具有相同的基本行为和语义,并且扩展了其能力。
核心线程数,最大线程数,阻塞队列,保活时长,核心线程超时,任务拒绝策略。
复制代码
HashMap ArrayList LinkedList
线程不安全,位桶,哈希因子,扩容,链表&红黑树,哈希冲突。
基于动态数组和基于链表。前者查询快,后者删除和增加快。
复制代码
JVM内存模型
设计模式
常用的设计模式
工厂模式,适配器模式,单例模式,Build模式,观察者模式,责任链模式(拦截器),策略模式
复制代码
Android
WebView http怎么实现跨域请求
这里的域指的是这样的一个概念:我们认为若协议 + 域名 + 端口号均相同,那么就是同域。
1:通过代理自己的服务器实现接口,后台调用其他域的接口
2:JSONP服务端调用本地js,并将结果带回
3:CORS扩展HTTP协议,根据服务端返回的有关HEADER来决定是否展示结果
WebView跨域:setAllowUniversalAccessFromFileURLs
复制代码
混合编程WebView:JS和Native的通信(相互调用,URL拦截)
H5调用Native
1、拦截shouldOverrideUrlLoading
2、拦截alert、prompt、confirm处理方法
3、addJavascriptInterface注册Android对象供H5调用
Native调用H5
native目前通过WebView.loadUrl("javascript:方法名('参数')")来调用H5的方法
在Android版本大于4.4(SDK19)时,可以使用evaluateJavascript(js,callBack)来调用H5端方法
复制代码
WebView里面 shouldOverideUrlLoading和shouldIterceptRequest的区别
加载前可以对连接进行拦截。
可以指定请求是否用本地数据。
复制代码
插件化,模块化,大型APP怎么协同开发
SP进程安全吗?怎么实现跨进程存储
hybrid混合开发,跨平台技术,Flutter等
ThreadLocal的原理
Thread ThreadLocal ThreadLocalMap
复制代码
跨进程通信方式:IPC的机制
AIDL
ContentProvider
Messenger
Socket
Bundle
复制代码
静态代理和动态代理的区别,用于什么场景
编译时就确定了被代理的类是哪一个,那么就可以直接使用静态代理;
运行时才确定被代理的类是哪个,那么可以使用类动态代理。
复制代码
APP安装过程
View的绘制流程和事件机制
Android6.0运行权限
什么是内存泄漏,Android中的内存泄漏怎么排查。
Android性能优化
电量
内存
View绘制
复制代码
ANR是什么导致,线上ANR怎么排查和收集日志。
长链接,短连接,IM相关知识。
Activity,Fragment的生命周期
Service的启动方式,有什么区别。
Handler机制
gradle
熟悉的三方开源框架
Apk打包过程
Android插件化技术,热修复原理
多dex打包问题
kotlin 协程相关
MVP MVVM MVC的区别
图片的实际内存大小
其他
工作中遇到的印象深刻的问题,怎么解决的。
这次跳槽对目标工作有什么要求。
个人的技术亮点是什么。