Android面试—某大厂面试题

218

下面是某一线大厂的一面面试题(由于每人项目不一样,所以项目相关的题没写),大家可以在评论区猜猜是哪家。

设计一个框架,替代SP,解决SP的一些缺点。
进程不安全,线程不安全。
效率不高,容易产生ANR。

腾讯MMKV,可以看一下原理。
简单介绍一下Kotlin的优点。
减少代码量
减少空指针
更多的语法糖

编译速度慢
会生成更多的伴随代码,增加包大小。
Kotlin扩展函数的实现原理。
扩展函数实际上就是一个对应 Java 中的静态函数,这个静态函数参数为接收者类型的对象,然后利用这个对象就可以访问这个类中的成员属性和方法了
Kotlin的协程性能会比线程好吗?为什么。
1、减少了线程切换的成本。Java 中的线程,不管是创建还是切换,都需要较高的成本。子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。这也就是说,协程的效率比较高。
2、协程的第二大优势就是,不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。
3、协程更轻量级。创建一个线程栈大概需要 1M 左右,而协程栈大概只需要几 K 或者几十 K。
解释一下socket套接字的工作流程。
流格式套接字TCP/IP,数据报套接字UDP/IP
三次握手,四次挥手。
解释一下DNS的相关知识。
本地host文件——>本地DNS解析器缓存——>本地DNS服务器(本地配置/缓存)——>根DNS服务器/转发。

从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。
关于JVM你了解多少,类加载,内存模型,垃圾回收,选一个讲一下。
你有没有解决过线上的卡顿问题和OOM问题的,怎么解决的,该怎么监控?

Android面试—稳定性

组件化之后,你们是怎么实现组件间通信的。
简单讲一下一个应用冷启动的流程。