Android面试—某大厂

网络面试题

session和cookie的区别,使用场景是什么。

简答来说
cookie是存储在客户端浏览器上的,session是存储在服务器上的。
cookie不是很安全,容易被别人分析出来,进行cookie欺骗。
session存放在服务器,访问量较大的时候会有服务器压力。
一般来说,cookie存储的数据量会比较小。
复制代码

网络通信原理

20200730102521400.gif

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内存模型

image.png

设计模式

常用的设计模式
工厂模式,适配器模式,单例模式,Build模式,观察者模式,责任链模式(拦截器),策略模式
复制代码

Android

WebView http怎么实现跨域请求

这里的域指的是这样的一个概念:我们认为若协议 + 域名 + 端口号均相同,那么就是同域。
1:通过代理自己的服务器实现接口,后台调用其他域的接口
2:JSONP服务端调用本地js,并将结果带回
3:CORS扩展HTTP协议,根据服务端返回的有关HEADER来决定是否展示结果

WebView跨域:setAllowUniversalAccessFromFileURLs
复制代码

混合编程WebView:JS和Native的通信(相互调用,URL拦截)

H5调用Native
1、拦截shouldOverrideUrlLoading
2、拦截alertpromptconfirm处理方法
3addJavascriptInterface注册Android对象供H5调用

Native调用H5
native目前通过WebView.loadUrl("javascript:方法名('参数')")来调用H5的方法
在Android版本大于4.4SDK19)时,可以使用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打包过程

image.png

Android插件化技术,热修复原理

多dex打包问题

kotlin 协程相关

MVP MVVM MVC的区别

图片的实际内存大小

Android中图片占据的内存大小

其他

工作中遇到的印象深刻的问题,怎么解决的。

这次跳槽对目标工作有什么要求。

个人的技术亮点是什么。

分类:
Android
标签: