【备战2022】Android中高级面试题答案解析:一线大厂(腾讯、字节、OPPO、网易、小米)面经总结

90 篇文章 4 订阅
68 篇文章 2 订阅

字节跳动

一面

1.算法题
两个栈实现队列
2.算法题输入一个数组,想一种方法让这个数组尽可能的乱序,保证功能能实现的情况下时间复杂度和空间复杂度尽可能的小,可使用随机数函数。(面试官最后说了 O(n)的时间复杂度能实现)
3.写一个单例
4.ActivityA -> Activity B -> Activity A
Activity A 启动模式为 singleTask
Activity B 启动模式为常规模式
问A 启动 B,B 又启动 A 的生命周期调用顺序?
5.你刚才提到 onsaveinstancestate() ,说一下调用时机,它用来干什么的。
6.onsaveinstancestate() 保存的那个参数叫什么?Bundle 里面都放一些什么东西?怎么实现序列化?Parcelable 和 Serializable有什么区别?
Bundle 。
7.数组和链表的区别
8.HashMap 的结构以及原理
9.我看你简历上写了 retrofit,你能说一下它是做什么的,如果知道基本框架也说一下
10.了解 View 的绘制机制吗,能说一下吗
11.我看你项目里用的 Fragment 能说一下 Fragment A 启动了 Fragment B,Fragment B 中按下返回键只退出 Fragment B 怎么实现。
12.你还有什么要问的吗?

二面

1.算法题 一个字符串,求最长没有重复字符的字符串长度
2.string stringbuffer 和 stringbuilder 区别
3.final finally finalize区别
4.数组和链表的区别
5.HashMap 了解过吗
6.Tcp 三次握手四次挥手
7.get 与 post 的区别
8.synchronized 的作用
9.你知道哪些设计模式
10.Android 进程通信的方法
11.那你能说一下 Intent 是怎么进程通信的
12.内存泄漏有哪几种情况
13.有什么要问

字节社招

一面

1、java泛型,反射
2、进程间通信的方式,安卓中有哪些方式,为什么是基于Binder的,不用传统的操作系统进程间通信方式呢
3、一个app可以开启多个进程嘛,怎么做呢,每个进程都是在独立的虚拟机上嘛
4、异步消息处理流程,如果发送一个延时消息,messagequeue里面怎么个顺序,messagequeue是个什么数据结构
5、广播的种类,注册的方式,以及不同注册方式的生命周期。
6、局部广播和全局广播的区别分别用什么实现的。
7、activity和service的通信方式
8、进程和线程的区别
9、并发和并行分别是什么意思,多线程是并发还是并行
10、安卓11有什么新的特性。
11、HTTPS过程。
12、DNS解析过程,如果服务器ip地址改变了,客户端怎么知道呢
13、算法:二叉树的右视图。

二面

1、介绍一下所有的map,以及他们之间的对比,适用场景。
2、一个按钮,手抖了连续点了两次,会跳转两次页面,怎么让这种情况不发生。
3、一个商品页一个商详页,点击商详页的一个关注按钮,希望回- 到商品页也能够显示关注的状态,怎么做
4、项目中定时为什么用AlarmManager,不用postDelayed
5、项目中后台网络请求为什么用service不用线程
6、安卓的新特性。
7、内部类会有内存泄漏问题吗 内部类为什么能访问外部类的变量,为什么还能访问外部类的私有变量。
8、算法: 单链表判断有无环。

三面

1、介绍项目用到了contentprovider,然后问ContentProvider的生命周期,application,activity,service,contentprovider他们的 context有什么区别。
2、内存溢出和内存泄漏,提到了bitmap
3、然后问下载一个图片的时候直接下载了一个5g的图片,不压缩一定会产生OOM问题,那么怎么去获取这个图片的长宽呢,或者说这个图片的大小的大小在你没下载之前如何得到。

字节跳动

1.操作系统进程通信方式有哪几种?
2.进程间的共享内存是怎么实现的?
3.java中被static修饰的对象会被回收吗?
4.synchronized能保证可见性吗?
5.说说事件分发机制
6.说说类加载机制
7.说说双亲委派模型
8.看过哪些框架?
9.retrofit怎么实现的?
10.项目中遇到的难题以及如何解决的
11.算法:写一个函数,往一个数组中指定位置插入一个元素
12.http状态码有哪些?
13.如果自己实现AsyncTask,要怎么实现?

OPPO

•项目中的重点内容
•Service两种区别
•AsynTask 原理
•线程池原理,是否使用过
•性能优化,图片内存占用计算,持有引用,
•TCP原理,如何确保稳定(与udp相比),阻塞,
•文件上传下载原理,下载中流的大小;
•反射如何实现
•泛型
•EventBus作用,,原理;
•java四种引用(强软弱虚),软弱的回收区别
•ListView的一些优化,如何复用,错位,现在用glide
•数据结构,SparseArray和hashmap区别
•操作系统,cpu调度
•数据库
•LRU缓存原理
•死锁,锁的几种类型。是否项目中使用
•继承和接口,优先使用级
•四道算法原理
•Linux指令;

快手

  1. 单例模式
  2. volatile关键字
  3. HashMap(红黑树的时间效率为什么是logn,怎么算出来的?)
  4. 线程、线程池
  5. Retrofit(底层网络请求涉及到OkHttp)
  6. Handler(原理、Looper在主线程中死循环,为啥不会ANR?、是否能在主线程更新UI、同步屏障机制等)
  7. HTTP和HTTPS的区别
  8. 一道mid算法

小米:

rxjava 三大类是什么
String的对象为什么是不可变的
arraymap可能导致什么问题
thread的构造函数是什么
runnable如何创建线程
(创建线程的方式)
有哪些锁?
synchronize和lock的区别
GC root有哪些
队列如何创建、队列在Java中的类是什么
offer是什么(当时问的时候呆了一下,还以为面试官要给我offer了,搞得老激动…然后没答出来…后来才想起他问的应该是队列里的offer方法… )
有什么查找的算法
排序的算法

网易:

sharepreference的commit方法和apply方法的区别

jetpack(viewmodel、lifecycle)

AndroidX有什么好处

Android帧动画会遇到的问题

属性动画和view动画的区别

子线程创建handler

Android达到ANR的条件

recyclerview使用不同的布局

小米

一面

  • 事件分发
  • 自定义view
  • 给了个布局问你的实现方式
  • 有没有了解过新的布局
  • Android布局优化
  • 过度绘制及优化
  • 讲讲你认为你Android里理解最深的点
  • 了解过framework吗
  • 讲讲二叉树前中后序遍历
  • 数据库
  • 类加载的过程
  • kotlin扩展方法 扩展属性
  • 看过哪些开源库
  • 实习过程中最有成就感的事
  • 算法
    • 反转链表
    • 删除公共字符串
    • 冒泡排序怎么排的 稳定吗

二面

  • Android
    • 滑动时间冲突解决
    • handler原理
    • Android跨进程通信
    • Activity生命周期
    • Android为啥要分四大组件
    • 弹一个dialog时Activity生命周期变化
    • onstart onresume分别执行什么类型的业务
  • Java
    • 手写单例
    • hashmap源码
    • 多线程,锁
  • 操作系统
    • 进程和线程的区别
  • 算法
    • 之字形打印二叉树

三面

  • Java
    • 封装继承多态,重点说理解及应用
    • static
    • 重写和重载的区别、理解及应用
    • hashmap底层,把面试官当小白给面试官讲
  • Android
    • 四大组件的理解
    • activity生命周期、横竖屏生命周期、有没有不让activity销毁的方法
    • 启动模式
    • 两种service有啥区别
    • service执行耗时操作会咋样、咋解决
    • intentservice底层
    • service保活
    • broadcastreciver权限
    • Android跨进程方式
    • intent底层是怎么跨进程的
    • 常用布局,重点说理解及应用
    • Android动画有哪几种,有没有底层研究
    • 自定义view、自己写过的demo
    • 内存泄漏场景及解决办法
  • 网络
    • TCP三次握手/四次挥手 讲讲
    • 有没有直接在TCP层做过操作
  • 操作系统
    • 进程和线程的区别

腾讯

一面

自我介绍
说一下做过的项目
两个队列实现一个栈
activity和service的区别
找出一个数组中出现次数大于数组长度一半的数
线程安全的单例模式
Android 线程切换有哪些方式
三次握手四次挥手 为什么要有三次握手(而不是两次)
说一下final关键字
讲一下listview的特点??
http的301状态码
tcp UDP的区别
tcp如何做到可靠传输
Java gc
讲一下你对flutter的看法(简历里写了会flutter)
平时有写博客吗?可以看一下你的github主页吗?
让我问问题

二面

自我介绍
说项目
说一下项目中的难点
说说flutter的实现原理(绘制原理?)
说说flutter和Android在开发效率上的感受
C 和Java中的多态有什么区别
讲一下设计模式
然后再细讲一下工厂
讲一下MVP
进程间通信
对比一下队列和栈,以及它们底部实现
对比一下C 的vector和Java的list,什么空间利用率呀,空间占用啊
还问了 有没有读研的打算
最后让我问问题,我首先问了什么时能有结果?
然后问了,如果出现了一个新技术或者新框架,团队会马上投入研究吗?

总结

分享一份整理好的 Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

《2022年Android中高级面试题汇总》

以上内容全都已打包整理好,可以微信扫描下方CSDN官方认证二维码【免费获取】,希望对正在学习准备面试的你有所帮助!

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

datian1234

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值