Android面试—某大厂

158 阅读4分钟

网络面试题

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中图片占据的内存大小

其他

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

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

个人的技术亮点是什么。