美文网首页
【Android面经】中大厂Android面试真题集锦

【Android面经】中大厂Android面试真题集锦

作者: 小城哇哇 | 来源:发表于2023-06-18 16:44 被阅读0次

    持续了大半年的面试终于结束了,年后回来到这个月月初,一直陆陆续续有面试邀约。

    收获offer还是比较满意的,拿下了网易、小米的offer。

    着实有点可惜的是字节跳动,倒在了三面,只能说自己还是太菜,以后还需要继续努力。

    这期间只投递了互联网中大厂,面试并不多,以下是我在这大半年以来的面试经历,发出来总结一波,也供大家参考参考!

    以下面试均为Android开发的社招岗。

    网易 (已offer)

    整体难度不大,都是常规题。

    一面(90min)

    1、自我介绍

    2、MVP和MVVM的区别

    3、Activity被强杀了ViewModel会不会被强杀

    4、ViewModel能恢复数据的原理是什么

    5、从源码上说说View的绘制流程(绘制起点到三大流程的)

    6、如何通过自定义View实现一个类似流式布局,讲思路

    7、invalidate和postInvalidate区别

    8、说说LiveData源码

    9、创建线程的几种方式

    10、重写Thread类和重写Runnable的区别

    11、线程之间的通信方式有哪些

    12、说说Handler的源码

    13、volatile的作用

    14、Synchronized和Lock区别

    15、Synchronized的底层实现原理是什么

    16、Synchronized在java 6后具体做了哪些优化

    17、Activity的四种启动模式

    18、Server的启动方式,各个方式有什么特点

    19、广播类型,具体描述一下

    20、设计模式了解哪些,挑一个熟悉的讲一讲

    21、为什么要跳槽?

    算法:删除排序链表的重复元素

    二面(50min)

    1、自我介绍

    2、介绍一下项目中遇到的困难

    3、说说一个音视频文件从打开到能播放的流程

    4、怎么优化一个Mp4格式的视频的起播速度

    5、软解和硬解的区别

    6、组件化的原理

    7、从源码上讲讲View的绘制流程

    8、如何实现一个可以换行的View

    9、View的分发流程

    10、如何实现一个有下拉刷新功能的View

    11、Activity和Fragment的生命周期

    12、Service的生命周期

    算法:判断一个链表是否有环

    三面(40min)

    1、自我介绍

    2、公司的产品有哪些

    3、介绍下协程以及它的原理

    4、协程怎么取消

    5、了解直播框架吗

    6、直播的推流和拉流的流程是怎样的

    7、H246和H265的区别

    8、说一下编解码时的 IPB 帧

    9、项目所用到的架构

    10、说一说MVI框架

    11、为什么选择来北京

    12、平时刷算法吗

    四面-HR(25min)

    1、自我介绍

    2、你在团队中担任什么职责

    3、你在项目中最大的挑战是什么

    4、你所在的组织架构

    5、你认为你的优势和劣势是什么

    6、为什么跳槽

    7、当前薪资以及期望薪资

    8、手头上有几个offer,如果正在面的几个公司都拿到offer,你会选择哪个

    小米汽车(已offer)

    整体难度不大,问的也比较常规,还以为会有三轮技术面试,没想到只有两轮,整体面试流程还算是比较轻松的。

    小米汽车部门是小米在上一年新成立的部门,汽车是未来的一个风口,前景还是相当可以的!

    但据 Hr 说,工作压力可能会有点大,需要做好 995 的心里准备 …

    一面(80min)

    1、视频流的格式有哪些

    2、TextureView的Surface的区别

    3、TextureView是在主线程渲染吗

    4、项目里遇到的困难,是怎样保证项目的进度和质量的

    5、项目参与度最深的是什么

    6、组件化和模块化的区别

    7、组件化的原理

    8、MVP和MVVM的区别

    9、RecyclerView和ListView的区别

    10、RecyclerView的缓存机制

    11、布局优化的方式有哪些

    12、使用过哪些工具查看布局的层级

    13、kotlin和java的区别

    14、jetpack用过哪些库

    15、说说LiveData的源码

    16、说说Handler的源码

    17、Handler如何避免内存泄漏

    18、同步屏障有了解吗

    19、IdleHandler有用过吗

    20、线程同步的方式有哪些,以及它们的原理

    21、synchronized修饰实例方法和静态方法的区别

    22、为什么要跳槽

    算法:判断链表是否有环

    二面(80min)

    1、自我介绍

    2、视频编解码的流程是什么

    3、边播边缓存的原理是什么

    4、Android原生编解码器MediaCodec的解码流程

    5、音视频封装格式了解哪些

    6、音画同步怎么处理

    7、一个APK文件包含哪些文件

    8、说说Android的签名机制

    9、说说Activity的启动流程

    10、AMS和ServerManager的关系

    11、让你继承自ViewGroup,怎么实现LinearLayout的功能

    12、引用类型占多少字节

    13、HashMap的数据结构是怎样的

    14、HashMap查询复杂度是多少,假设数组中每个桶的链表长度相同,用复杂度又怎样表示

    15、为什么要引入红黑树

    16、红黑树查找和插入效率是多少

    17、各种排序算法的时间复杂度和空间复杂度是多少

    18、怎么排查和解决内存泄漏

    19、MAT工具使用过吗

    20、JVM内存模型

    21、手上有其他offer吗

    22、为什么来北京

    手撕:生产者消费者模式

    三面-HR(20min)

    1、自我介绍

    2、为什么跳槽

    3、当前薪资以及期望薪资

    4、当前工作内容是什么

    5、给我介绍了一下小米的福利(让我做好 995 的心理准备…)

    6、手头上有几个offer

    字节跳动(三面凉)

    tiktok直播业务,工作时间10-10-5。

    有一说一,字节跳动的面试难度还是稍微有点大的(自己太菜是原罪) …

    其实,Android / java / 计算机相关 的知识问的其实不算难,难的是算法

    一、二面直接扔了两道困难级别的算法题,所幸平时有写过,运气比较好,过了,

    三面的两道算法是面试官基于 LeetCode 的题改的,实属给我整蒙了,其实做题思路还是有的,这两道题还够不上困难的级别,但我就是写不出来,完全不在状态,菜啊!最终也是倒在了三面。

    等字节什么时候10-7-5了,再找机会冲一冲!🐶

    一面(60min)

    1、自我介绍

    2、项目中你觉得最有成就的一件事是什么

    3、播放器的生命周期

    4、线程的状态有哪些

    5、sleep和wait的区别

    6、内存泄漏和OOM区别

    7、如何处理内存泄漏问题

    8、LeakCannary的原理

    9、开发中做过哪些内存优化

    10、线程和Handler和Looper的关系

    11、如何保证一个线程只有一个Looper

    12、为什么Looper的死循环不会导致ANR

    13、ANR的原理是什么

    14、Synchronized和Lock和volatile的区别以及它们的原理

    15、HTTP状态码有哪些

    16、APP的内存限制是多少

    算法:合并K个升序链表(时间关系,没写完,说了思路)

    二面(60min)

    1、自我介绍

    2、线程的状态

    3、播放器各个状态以及它的生命周期

    4、sleep和wait的区别

    5、说说Handler的源码

    6、视频流渲染出来的整个过程是什么

    7、TextureView和SurfaceView区别

    8、SurfaceView在不同Android版本下的区别

    9、Activity的启动流程

    10、Activity的启动过程中会涉及到哪些线程

    11、Launcher进程和system_server进程实现通信的线程是

    12、ANR触发机制,ANR的原理是什么

    13、平时是怎么学习的、以后向做什么方向的东西

    14、闲聊时间

    算法一:下一个排列(leetcode 31,medium)

    算法二:K个一组反转链表(leetcode 25,hard)

    三面(50min,凉,算法题没搞不出来…)

    1、自我介绍

    2、项目中最有挑战性的地方是什么

    3、模块化和组件化的区别

    4、线程创建的方式有哪些

    5、线程同步的方式有哪些

    6、volatile如何实现线程通信

    7、kotlin协程和RxJava区别

    算法一:两个16进制的字符串相加

    算法二:实现一个迭代器,next()函数按照二叉树的前序遍历的方式来返回元素

    长城汽车(OC,已拒)

    做的是长城汽车的车机系统,面试难度基本为0,这个公司仅是拿来找找面试的感觉,对它并没什么其他想法。

    另外,面试流程巨慢!最后接到 HR 电话,开的薪资也比较低,直接拒了。

    一面(20min)

    1、自我介绍

    2、kotlin有了解吗

    3、Synchronized关键字的实现原理

    4、Java原子操作类的实现原理

    二面(35min)

    1、自我介绍

    2、static关键字用在类、方法、变量上的区别

    3、final关键字用在类、方法、变量上的区别

    4、说一下Activity的启动模式

    5、ActivityABC依次打开,退出C怎么直接返回A?

    6、Server的启动方式

    7、Server可以做耗时操作吗

    8、设计一个音乐播放器用Server怎么实现?

    9、DataBinding是什么

    10、Activity上如何监听返回键

    11、对MVVM的理解

    12、Serializable 和 Parcelable 区别

    三面(25min)

    1、自我介绍

    2、全程问项目,项目中参与度最深的地方,遇到的难点是什么

    作业帮(已凉,二面挂)

    面试难度中等,也是拿来尝试一下面试的感觉,整体面试体验不错,面试官也聊得很来。

    已收到感谢信。

    二面问的太过基础了,反而回答不出来,一、二问都没答对…连建造者模式也没撕对,难受,挂了也正常,只能说自己太菜了!

    受到上一年 “双减” 政策的影响,听面试官说公司业绩下滑挺严重的。

    一面(70min)

    1、自我介绍,项目经历,重点介绍一下工作经历和内容

    2、你所负责的短视频框架是怎么搭建,遇到了哪些困难

    3、jni有了解吗

    4、java层怎么调native的代码,或者说native层怎么掉java层的代码

    5、RecyclerView的缓存机制

    6、先从数据库获取数据A,再从网络获取数据B(要求两个获取逻辑并发执行),然后在再A和B进行处理,用协程怎么实现

    7、用java的锁能实现上面的逻辑吗

    8、Lock有了解吗,AQS机制有了解吗

    9、说一下CAS机制

    10、volatile关键字说一下,禁止指令重排的原理

    11、说一下retrofit的源码

    12、为什么跳槽?

    算法:手写一个LRU缓存

    二面(30min)

    1、String a=“a”; String b=“b”; System.out.print(a==b);输出什么

    2、String a=“a”; String b=“b”; String ab=“ab”; System.out.print(ab==(a+b));输出什么

    3、java值传递和引用传递的区别

    4、类A构造方法中创建类B,类B构造方法又创建类A,如果new一个类A,程序执行后将会发生什么

    5、说一下你熟悉的设计模式

    6、写一个单例

    7、手写一个建造者模式的例子(没写对,凉凉)

    百度(凉凉)

    全回答上了,但没收到二面通知,应该是凉了,不知道是不是被 kpi 了 ?

    一面(20min)

    1、Activity和Fragment的生命周期的区别

    2、ANR的触发场景

    3、内存泄漏和OOM的关系

    4、内存泄漏如何排查

    5、线程池的作用以及类型

    算法:求二叉树中两个子节点的最近的公共祖先节点

    豆瓣(凉)

    据说豆瓣是 965 互联网公司,评价还可以,所以就投了一波,也接到了面试。
    整体面试体验较差,问题回答得都没毛病,可能是鸽了面试官15分钟?… 然后面试官整场面试板着脸,中途他还关掉了摄像头。
    出的算法题都是简单题,英文版,也做出来了,就是不知道为何挂了,目前没有任何通知。

    一面(60min)

    1、自我介绍

    2、组件化和模块化的区别

    3、边播边缓存的原理是什么

    4、APK打包流程

    5、如何对一个apk进行签名

    6、说说git相关命令

    手撕算法一:有效的括号

    手撕算法二:查找插入位置【O(logN)时间复杂度】

    文末

    整理不易,白嫖太易!有需要的读者朋友们可以关注一下。以上面试题+解析都可分享~

    相关文章

      网友评论

          本文标题:【Android面经】中大厂Android面试真题集锦

          本文链接:https://www.haomeiwen.com/subject/hrksydtx.html