3年android开发在上海的面经之旅

冬天的毛毛雨 冬天的毛毛雨     2023-01-28     546

关键词:

作者:海宝

面试经历

面了一些上海互联网公司,例如爱奇艺,阿里巴巴,京东,某安,百度,喜马拉雅,得物等等,记录了部分面试真题。大部分可以自行搜到答案,有疑问的可以留言交流~

【爱奇艺】一面

  1. 自定义view
  2. Handler机制
  3. 组件化和插件化
  4. HashMap的源码
  5. retrofit和okhttp的源码用到了哪些设计模式
  6. NDK静态库和动态库编译流程
  7. openGL渲染模式
  8. Android中的动画有哪些它们之间的区别
  9. 谈谈mvvm

【爱奇艺】二面
讲之前做的项目负责哪块,根据业务采用什么架构、使用过哪些设计模式,项目中遇到哪些棘手的问题,如何解决的。

【爱妻艺】三面
这个是hr说,整体问下以前公司的情况等问题

阿里音视频开发岗

【阿里一面】
1.MediaCodec连环炮:MediaCodec报错,只有错误码,没有任何其它信息,如何解决?使用MediaCodec遇到了哪些问题?同步使用和异步使用有什么区别?
2.如何计算音频帧,一帧音频帧有多大
3.YUV基础知识,相比于RGB减少了多少空间,YUV 各个分量都是0实际渲染出来是什么颜色的,NV21和NV12有什么区别
4.MP4是如何存储音视频文件的,它是什么结构
5.OpenSL 相关的问题,如何使用。可以干什么不可以干什么
6.结合项目问题

【阿里二面】
1.SurfaceView和TextureView区别
2.OpenGL ES相关问题,MVP矩阵左乘和右乘有什么区别,什么是外部纹理,为什么叫外部
3.OpenGL如何渲染一个View
4.VBO是用来干嘛的解决什么问题
5.结合项目问问题

【阿里三面】
1.项目是什么架构,如何设计的,为什么这么设计
2.算法题:字符串反转
3.平时如何学习的

【京东一面】

1.简述LinkedHashMap源码实现
2.说下Handler流程
3.handler用于线程间通信,怎么保证线程安全
4.界面有个Button,手指放上去慢慢移到Button外的区域,描述事件分发的流程
5.说下View的绘制流程,包括渲染和绘制
6.算法 两个单链表合并成有序链表,说下思路
7.组件化的实现,WMRouter调用其他模块的对应方法怎么实现的

【京东二面】
完全忘了

【京东三面】
1.问项目细节,你主要负责的模块,怎么设计
2.算法 N宫格,从左上角A出发只能向右或者向下走,求所有不同路径的条数总和。手写伪代码(用递归就可以)

【京东四面】
1.平时的上下班时间点
2.有没有使用过咱们的app,有什么建议
3.前面的3次技术面有什么感受
4.职业规划

【京东HR面】
1.平时的上下班时间点 balabala

【某安一面】
1.多线程同步有哪些方式
2.sycnized和lock区别,分别用于什么场景
3.线程池原理
4.线程池拒绝策略怎么自定义
5.怎么实现线程加入线程池的优先级
6.volatile底层原理?是否线程安全
7.死锁怎么发生?怎么防止死锁
8.介绍下apm,怎么捕获crash和native crash?腾讯matrix怎么统计app启动时间,页面加载时间
9.gc回收算法有哪些?分别用于什么场景
10.jvm有哪些区域?栈的作用
11.算法 三数之和

【某安二面】
1.问项目 httpdns相关:为什么要httpdns?怎么处理握手问题,ip直连能否避免dns挟持?
2.问项目 首页弹窗优先级
3.做过哪些内存优化
4.怎么全局捕获app所有异常,并且保证app不崩溃,不卡死
5.如何获取app的所有线程信息
6.怎么查找anr
7.安卓有哪些进程间通信?为什么使用binder?mmap发生在哪个阶段?怎么找到目标进程
8.leakcanary怎么检测内存泄露的
9.算法 两个栈实现一个队列

【某安三面】
1.gradle生命周期,怎么自定义插件
2.统计编译耗时插件,运行在哪个阶段?
3.描述从编译到apk的过程,以及gradle有哪些task参与其中
4.如何实现字节码插桩
5.子线程更新ui会报什么异常?从哪里抛出来的
6.子线程怎么更新textview不会crash
7.activity window view显示出来,全流程源码解析,精确到类和核心方法
8.数据库用的什么库,熟悉sql语句吗
9.mmkv为什么比sp高效,存储的数据结构是什么样
10.mmap为什么比io高效,说下实现原理
11.sp存在哪些问题?
12.hashmap put流程源码解析,链表和树转换时机?扰动函数的作用?为什么hashcode & n-1?扩容时机?
13.gcroots有哪些
14.activity有个内部类handler,描述下引用关系链路,并说明为何gcroots能访问到activity
15.加载xml和动态创建view哪个高效?为什么加载xml效率低
16.如何减少布局嵌套?jetpack compose的原理
17.recycleview缓存实现?开发中怎么优化
18.算法 给定一个字符串,输出所有不同字符组合

【百度一面】

  1. java引用,以及引用队列,以及使用场景
  2. 拆装箱
  3. LeakCanary
  4. map
  5. 线上性能监控
  6. SharedPrefrence 遇到的问题
  7. 手写算法

【百度二面】

  1. Handler
  2. 进程间通信
  3. 序列化
  4. 动画
  5. native崩溃捕获原理
  6. 结合项目提问
  7. Recyclerview的点击事件原理
  8. 启动一个空的apk,回启动几个线程
  9. 手写算法

【百度三面】

  1. 跳槽原因
  2. 原来公司规模
  3. 预期薪资
  4. 个人优势

【喜马拉雅一面】

1.有了解过直播吗?有哪些常见协议
2.说下自定义View的一般流程
3.多个线程异步执行任务,主线程需要等待它们都完成再继续,有哪些实现方式
4.说下handler的流程,异步消息是什么?Android中哪些场景会发送异步消息?我们在代码中可以手动发异步消息吗
5.弹幕怎么实现?比如直播中的流星雨特效,跑车这种怎么实现出来
6.说下你开发中做过的一个动画
7.了解过SurfaceView的原理吗
8.有没有接触过Socket编程,简单说下代码实现
9.加载一张超大图怎么实现
10.补间动画和属性动画各自的原理
11.内存优化有哪些手段
12.开放性题目 开发中怎么提升整个app的稳定性

【喜马拉雅二面】
1.动态代理是怎么实现的
2.你熟悉哪些设计模式
3.画一下动态代理的类图
4.说下插件化原理
5.说下热修复的基本原理?比如QQ空间的方案和Tinker
6.算法 判断两个单链表是否相交及找到第一个交点

【喜马拉雅HR面】
1.对公司感觉怎么样,之前有了解过吗
2.是否愿意承担一些管理角色

【得物一面】
1.狂问Kotlin相关,比如委托的实现原理,协程原理,kotlin的好处,kotlin编译流程,常用的kotlin技巧
2.app的打包流程
3.View的渲染绘制流程

【得物二面】
1.inflate加载view过程
2.简述okhttp源码,请求怎么管理,它的线程池怎么实现
3.apt原理
4.viewmodel为什么可以恢复数据
5.livedata可以保存多个数据吗
6.aac架构有什么优势
7.mmkv了解吗
8.算法 单链表找到倒数第K个元素
9.算法 单链表找到中间的元素(2个题都用快慢指针就可以了)
10.组件化怎么做的?WMRouter编译期间做了什么

【得物HR面】
1.没问什么特别的

经验tips

1. 必考题一定要掌握!
【必问】Handler的工作流程,源码要记牢,细节要理解透,比如怎么唤醒主线程的,while为啥不会阻塞主线程
【必问】View的绘制流程,包括渲染和View本身的绘制3部曲
【必问】MVVM的含义,ViewModel+LivaData+LifeCycle的源码实现
【必问】自定义View的一般实现流程
【必问】内存泄漏怎么排查,OOM怎么排查
【必问】你做过哪些性能优化
【必问】Retrofit的实现,动态代理
【必问】组件化相关,WmRouter的原理
【高频】ANR怎么排查,有哪些原因
【高频】APP打包流程
【高频】kotlin常见知识点的原理,如协程,委托,扩展函数,编译流程
【高频】Android有哪些跨进程通信,AIDL的代码实现
【高频】怎么加载一张超大图
【高频】OkHttp的线程池实现,Java线程池原理,拒绝策略怎么自定义

2.面试前准备

1.准备一份自己的自我介绍,面试的时候根据面试对象适当进行修改(突出重点,突出自己的优势在哪里,切忌流水账);
2.注意随身带上自己的成绩单和简历复印件; (有的公司在面试前都会让你交一份成绩单和简历当做面试中的参考。)
3.如果需要笔试就提前刷一些笔试题,大部分在线笔试的类型是选择题+编程题,有的还会有简答题。(平时空闲时间多的可以刷一下笔试题目(牛客网上有很多),但是不要只刷面试题,不动手code,程序员不是为了考试而存在的。)另外,注意抓重点,因为题目太多了,但是有很多题目几乎次次遇到,像这样的题目一定要搞定。
4.提前准备技术面试。 搞清楚自己面试中可能涉及哪些知识点、那些知识点是重点。面试中哪些问题会被经常问到、自己改如何回答。(强烈不推荐背题)
第一: 通过背这种方式你能记住多少?能记住多久?
第二: 背题的方式的学习很难坚持下去!
5.面试之前做好定向复习。 也就是专门针对你要面试的公司来复习。比如你在面试之前可以在网上找找有没有你要面试的公司的面经。
6.准备好自己的项目介绍。 如果有项目的话,技术面试第一步,面试官一般都是让你自己介绍一下你的项目。你可以从下面几个方向来考虑:

①对项目整体设计的一个感受(面试官可能会让你画系统的架构图;
②在这个项目中你负责了什么、做了什么、担任了什么角色;
③从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用;
④项目描述中,最好可以体现自己的综合素质,比如你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的又或者说你在这个项目用了什么技术实现了什么功能比如:Android Bitmap压缩策略;关于HandlerThread的使用场景以及怎样使用 HandlerThread?

提前知道有哪些技术问题常问: HashMap源码分析、热修复,handler等等问题我觉得面试中实在太常见了,好好准备!后面的文章会我会分类详细介绍到那些问题最常问。

提前熟悉一些常问的非技术问题: 面试的时候有一些常见的非技术问题比如“面试官问你的优点是什么,应该如何回答?”、“面试官问你的缺点是什么,应该如何回答?”、“如果面试官问"你有什么问题问我吗?"时,你该如何回答”等等,对于这些问题,如何回答自己心里要有个数,别面试的时候出了乱子。

最后

关于面试经验的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。

小编之前在网上收集整理了一些 Android 开发相关的学习文档、面试题、Android 核心笔记等等文档,希望能帮助到大家学习提升,在面试中能顺利通过。如有需要参考的可以直接点击下方小卡片进行访问查阅



五年android开发的面经总结

...人爱的单身狗!在这个五年的时光里,我一直在Android行业摸爬滚打,待过的公司差不多有五六家了,待得最久的一家时长好像是一年多,基本都是中大型的公司。在进入这些公司前&# 查看详情

五年android开发的面经总结

...人爱的单身狗!在这个五年的时光里,我一直在Android行业摸爬滚打,待过的公司差不多有五六家了,待得最久的一家时长好像是一年多,基本都是中大型的公司。在进入这些公司前&# 查看详情

2021年android开发岗面经汇总(腾讯网易哔哩哔哩等)

##前言我今天来分享一篇Android开发的面经总结分享,该文的面经来源于本人和朋友,这一年中面试经典记录,文中公司有腾讯、网易、美团、哔哩哔哩、百度等知名公司。话不多,看下方面经吧!腾讯社招面... 查看详情

8年android老司机的面经,教你如何进入阿里腾讯华为等大厂

前言因为离职,前段时间面试了很多公司,其中有让我心血沸腾的经历,也有让我感到失望到无助的经历,我将这些体会都记录下来,细想之后很值得,面了这么多公司,要是最后什么也没有留下来... 查看详情

进字节了!3年android开发的艰辛三面经历总结!

...厂的面经和相关的面试干货,这有一份最新字节跳动Android面经+笔记带给大家。面试过程:普本/软件工程/3年经验,9月初通过字节工作的学长进行内推,7天的简历评估11号接到电话面试,尽管猝不及防回答... 查看详情

腾讯android开发岗面经之旅

写在前面我每年都会隔一段时间出去面试一次,面试的目的不是为了找到好的工作,而是想知道自己的技术能力是否符合市场需求,有没有与时代发展速度脱轨。同样,面试你的也是同行,这样也能够碰撞出... 查看详情

欢聚时代(yy)android开发岗面经之旅

作者:王鑫之前是在一家中小型的互联公司从事Android开发工作,自我感觉份工作没有太多的挑战性,就选择了离职,于是就想去找份大厂的高薪工作。在离职后休息了一个星期,就开始准备去找工作,中... 查看详情

苦逼的面经之路,历经20天最终才拿到阿里的offer(面试过程分享)

背景描述首先描述一下背景,小编是一个在Android开发行业摸爬滚打5年多的开发,呆过的互联网公司有三家,均从事的Android开发的工作。最后离职的一家公司也是做的最久的一家,工作了将近3年多时光。至于离职... 查看详情

面试题同学的面经

...符有哪几种?有什么的区别?2、面向对象三大特性?在开发中怎么体现?3、redis有哪些数据类型?4、数据库索引了解过吗?5、springmvc一个请求的处理过程是怎么样的?6、List有那些类型,内部由什么构成?7、从上一家公司离职... 查看详情

2021年腾讯java开发岗面经分享+复习方法

前言先介绍一下本人背景:双非末流一本,大三,CS专业,有百度实习经历,本次主要给大家分享一下我面试腾讯的面经,已拿offer。最后也分享了我复习的流程,希望能够帮助到正在准备面试的你࿰... 查看详情

大佬有用的面经总结

清水河畔上大牛的面经10年大牛的面经直接上链接地址专业技能的问题:Linux编程---所有互斥方法,多线程编程,进程间通信网络编程---网络编程范式,非阻塞connect,TCP/IP(time_wait状态,如何更改这个状态的时间,OSI/TCP/IP)简单数据... 查看详情

2018网易的初级游戏开发工程师的面经

2018网易的初级游戏开发工程师的面经自我介绍:先是自我介绍,简单介绍了一下自己的项目经历,会什么技术(自己认怂,说了非科班出身,技术不咋地);然后问我,有看那些计算机相关的书籍;自己却只回答了一本书,简直是失败呀;好的... 查看详情

android面经分享阿里技术专家的5年android开发的求职之路(代码片段)

...首发我的微信公众号:徐公,想成为一名优秀的Android开发者,需要一份完备的知识体系,在这里,让我们一起成长,变得更好~。作者:yechaoa来源:https://juejin.cn/post/6996551155220217869前言前段时间在看机会,... 查看详情

android面经分享阿里大佬的5年android开发的求职之路(代码片段)

作者:yechaoa来源:https://juejin.cn/post/6996551155220217869前言前段时间在看机会,本文就是我对求职过程的一个总结。同时,也作为一个面试官,来说说求职中需要注意的点。各大厂的面试会考核哪些知识点5年开发应该具备... 查看详情

面经分享5年android开发的求职之路(代码片段)

前言前段时间在看机会,本文就是我对求职过程的一个总结。同时,也作为一个面试官,来说说求职中需要注意的点。各大厂的面试会考核哪些知识点5年开发应该具备哪些技术要点当下市场行情如何,真的很卷吗... 查看详情

面经分享5年android开发的求职之路(代码片段)

前言前段时间在看机会,本文就是我对求职过程的一个总结。同时,也作为一个面试官,来说说求职中需要注意的点。各大厂的面试会考核哪些知识点5年开发应该具备哪些技术要点当下市场行情如何,真的很卷吗... 查看详情

「面经分享」阿里大佬的5年android开发求职之路(代码片段)

作者:yechaoa前言前段时间在看机会,本文就是我对求职过程的一个总结。同时,也作为一个面试官,来说说求职中需要注意的点。各大厂的面试会考核哪些知识点5年开发应该具备哪些技术要点当下市场行情如何,... 查看详情

内推2020微软亚太研发集团在北京上海苏州热招300+软硬件研发工程师

...igdata)-前后端开发(1年以上)3、MMX-Edge/LauncherforMobile-(IOS/Android)-后端开发(5年以上)5、MSRA-BusinessAnalyst(北京OR苏州)5、MSRA-ServiceEngineer-ITInfra(Azure,Kubernetes,docker)6、Cortana-(ios/Android/BI)-Dev/DataScientist(3年以上)7、Bing广告团队-AIInfras... 查看详情