写点什么

一个 Android 开发 6 年程序员的年终面试总结,2021 无畏艰难险阻,迎风潇洒前行

用户头像
Android架构
关注
发布于: 刚刚

四面


  • 适配器和装饰模式各自特点和使用场景

  • 视频编解码是怎么做的

  • 三色球排序

腾讯面试

  • 音视频采集编码播放流程

  • Mediacodec 编码内部原理与工作流程(什么状态机之类的),使用 Mediacodec 时遇到过什么问题,怎么解决的

  • ffmpeg 怎样编码和解码的,怎么做视频编辑,添加特效

  • 怎么取一帧视频画面编辑成图片并将二维码合成到图片中,然后进行压缩处理,压缩要保证图片的清晰度不变

  • 平时做过哪些性能优化,怎么做的,已经发布的 app 怎么监测性能

  • Jetpack 会不会,livedata、databinding 的使用及原理

  • Kotlin、flutter 也提了一下

  • Android 中进程通信方式除了 aidl,还有什么用的比较多(不包括 Linux 的)

  • App 的启动流程,从点击图标开始

  • 一个算法问题

  • app 的启动优化方案有哪些(主要是非常规的那些方法)

滴滴面试

  • 创建线程有哪几种方法

  • 线程池的运行机制

  • 如果有一个任务需要线程池里所有任务执行完以后执行,应该怎么做

  • synchronize 和 lock 有什么区别

  • 如何避免线程锁死

  • 手写单例,如果在不使用锁的情况下创建单例并保证单例安全性

  • handler 原理,子线程可以创建 Handler 吗?

  • 内存泄漏与内存溢


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


出的区别


  • 有没有做过安全性能检测的项目

  • 原生与 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 线程安全原理、如何做到性能好


面试总结

讲一下大厂面试一些必备的技能

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
一个Android开发6年程序员的年终面试总结,2021无畏艰难险阻,迎风潇洒前行