一个 Android 开发 6 年程序员的年终面试总结,2021 无畏艰难险阻,迎风潇洒前行
四面
适配器和装饰模式各自特点和使用场景
视频编解码是怎么做的
三色球排序
腾讯面试
音视频采集编码播放流程
Mediacodec 编码内部原理与工作流程(什么状态机之类的),使用 Mediacodec 时遇到过什么问题,怎么解决的
ffmpeg 怎样编码和解码的,怎么做视频编辑,添加特效
怎么取一帧视频画面编辑成图片并将二维码合成到图片中,然后进行压缩处理,压缩要保证图片的清晰度不变
平时做过哪些性能优化,怎么做的,已经发布的 app 怎么监测性能
Jetpack 会不会,livedata、databinding 的使用及原理
Kotlin、flutter 也提了一下
Android 中进程通信方式除了 aidl,还有什么用的比较多(不包括 Linux 的)
App 的启动流程,从点击图标开始
一个算法问题
app 的启动优化方案有哪些(主要是非常规的那些方法)
滴滴面试
创建线程有哪几种方法
线程池的运行机制
如果有一个任务需要线程池里所有任务执行完以后执行,应该怎么做
synchronize 和 lock 有什么区别
如何避免线程锁死
手写单例,如果在不使用锁的情况下创建单例并保证单例安全性
handler 原理,子线程可以创建 Handler 吗?
内存泄漏与内存溢
出的区别
有没有做过安全性能检测的项目
原生与 H5 如何交互,传参数?
用过哪些算法?
如何在服务中启动一个耗时操作
Activity 的启动模式
小米面试
介绍一下 binder 和原理
measure layout draw 流程,滑动冲突
常用的多线程工具类。blockingqueue ,concurrenthashmap,信号量,countdownlatch,cyclicbarrier,exchanger 等,stringbuffer
stringbuilder 和 stringbuffer 区别
lock 和 syncrognized 原理区别,适合什么场景。
实现生产者,消费者
handler 原理,是如何实现延时的。
一个 activity 启动另外一个 activity 的生命周期。
算法题:
反转链表
归并排序
快速排序
feiboqiena 数列
二分查找
两个队列实现栈
两个栈实现队列
判断链表是否成环,找到成环的交点。
顺丰面试
使用过 hook 技术吗?谈谈理解。
谈谈对 android 虚拟机的理解。
有做过推送相关吗?原理有去了解过吗?
谈谈 startActivity 的流程。
谈谈对自定义 View 的理解。
谈谈 binder 的理解。
你知道数据库有哪些,android sqlite 存储数据的上限大小是多少?
谈谈 TCP 与 UDP 的理解。
Java 的引用。
GC 算法
谈谈对 android 应用的理解。
手百 3 轮面试
一面
为什么工作一年就想换工作?
onTouchEvent/onTouchListenr.onTcouchEvent/onClickListenr
hashmap 的原理?
java 的 hashcode 和 equals 的区别
java 的 gc 了解多少?
kt 的伴生对象是饿汉模式还是懒汉模式?
handler.postDelayed 的原理
ANR 怎么产生?怎么捕捉?
智力题:桌子上有 101 块饼***拿先手,他拿后手,你需要怎么赢
tcp 三次握手/四次挥手, 为什么要三次握手,四次挥手?
内存泄漏是什么?怎么找?
算法题:斐波拉契数列,递归的方式怎么优化?
二面
手淘这种大型 app 是怎么迭代起来的?
你对小程序的原理了解么?
v8binding 怎么做?
你项目的价值是什么?
图片缓存怎么做?你要设计一个图片缓存框架怎么搞?
lrucache 怎么实现?为什么是 o(1)的时间复杂度?
voliate 关键字解释下?
voliate 关键字不能实现什么?
https 解释下
常见的对称加密算法和非对称加密算法有哪些?
让你设计一个打点系统怎么做?
如果进程被杀死或者切换后台,数据如何保存丢失?
你怎么设计埋点系统一个线程模型?
快速排序?快速排序是稳定的么?
如何实现一个快速排序的稳定性?
minstack 怎么设计?
kotlin 和 java 混用有哪些问题?
设计一个数据结构,微博里面有人发了文章怎么实现?关注怎么实现?
微博里面有人发了文章,关注的人如何获取最新的 10 条?如何获取关注的人的文章的最新 1000 条?设计一个高效的算法
三面
你为什么选择换工作?
你组里面的人都怎么样?
你怎么解决项目中的难点?
你有工作中遇到过哪些比较麻烦的地方?
你平时怎么学习的啊?
你除去学习之外都看什么书?
网易 2 轮面试
一面
HashMap 扩容原理,为什么要 2 的指数幂容量,如果输入 17 会是多少容量?
跟 HashCode 有关系,如果输入 17,会向后达到 2 的指数幂,32。
CurrentHashMap 读写锁是如何实现的?
如果没有 hash 冲突的情况下,使用 CAS 进行插入,如果有 hash 冲突,使用 synchronized 加锁进行插入。当链表长度大于 8 且数据长度>=64 时,会使用红黑树替代链表。
ReentrantReadWriteLock 类中有 readLock()和 writeLock()方法可以分别获取 WriteLock 和 ReadLock 对象,调用他们的 lock 方法,就可以实现读写锁。实现原理就是 AQS 的 acquire 和 acquireShared 方法。
List 加锁要如何加?
二面
app 优化 内存优化 cpu 使用率优化
如何设计一个类似于微信朋友圈的首页的功能,UI 数据等方面
如何设计一个无限数据的气泡显示聊天内容
5 个 G 数据,如何在 500M 内存的情况下实现排序
大文件在传输过程中要考虑哪些问题,如何保证大文件的一致性
JSbridge 是如何实现 js 和 native 联通的
如何做到单个信号源,多个页面响应
一些高频重点问题
APP 性能优化 内存优化 cpu 占用率 流畅性等,考虑一下如何评价一款 app 的性能,如何监控线上 app 的性能问题
多线程同步 Sync 和 Lock 实现原理
HashMap ConcurrentHashMap 实现原理 链表转红黑树的条件,扩容原理,ConcurrentHashMap 线程安全原理、如何做到性能好
面试总结
讲一下大厂面试一些必备的技能
评论