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

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了3年Android开发在上海的面经之旅脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

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

作者:海宝

面试经历

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

【爱奇艺】一面

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

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

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

阿里音视频开发岗

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

【阿里一面】 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.算法 给定一个字符串,输出所有不同字符组合

【百度一面】

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

  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. 个人优势

【喜马拉雅一面】

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

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.面试前准备

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

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

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

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

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

最后

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

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

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

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

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

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

脚本宝典总结

以上是脚本宝典为你收集整理的3年Android开发在上海的面经之旅全部内容,希望文章能够帮你解决3年Android开发在上海的面经之旅所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。