三年 Android 开发的面试心经(后悔当初没有拿 N+1)

为了方便以后能够在此能力利于查阅翻阅复习,我特此整理在Github上,如有需要参考的可以直接去我 CodeChina地址:https://codechina.csdn.net/u012165769/Android-T3 访问查阅

刚踏入架构师之路的经历


这次我给自己的规划是做一个架构师,但是我深知架构师可不是闹着玩的,必须要有很强的一面,因此我在简历里面写的只是“架构师方向”。我在K公司 做得是架构师方向,因此我觉得有必要朝着这个方向发力,虽然现在不是很厉害,但是坚持一两年后,即使不是非常厉害,但是也距离非常厉害很近(这里使用了《孙子兵法》的一句:“求其上,得其中;求其中,得其下,求其下,必败。” )。

这个想法来源于在K 公司我第一任leader曾经跟我说过的话:『对于新东西,如果你觉得掌握了,但是不应用到项目里面来,是没有什么意义的,时间长了还是会忘记的。』我很庆幸我有一个好老大(我是属于双领导型的,K 公司 A项目的负责人是我的leader,但是我的直接汇报对象是 K 公司的副技术总监,下文就成为老大),用他的话来说就是经常踢着我的屁股走。

当我在网上了解到很多实用的新技术时,跟他随意吐露一句话,他就能非常用心的倾听我的想法,并鼓励我将这些东西带入到项目中来。从那以后我就开始看很多新技术,感觉合适的会引进到我们的项目中。从之后的证明中来看,是非常有价值的。

面试经历


A公司一面

  1. 自定义view

  2. Handler机制

  3. 组件化和插件化

  4. HashMap的源码

  5. retrofit和okhttp的源码用到了哪些设计模式

  6. NDK静态库和动态库编译流程

  7. openGL渲染模式

  8. Android中的动画有哪些它们之间的区别

  9. 谈谈mvvm

A公司二面

  1. 讲之前做的项目负责哪块,根据业务采用什么架构

  2. 使用过哪些设计模式,项目中遇到哪些棘手的问题,如何解决的。

A公司三面

这个是hr说,整体问下以前公司的情况等问题

感受:自己简历上写的东西要熟悉,基本面试官都是根据简历来问的。对自己以前做的项目也好好梳理,提前组织好语言,挖掘项目闪光点。

B公司一面

  1. java引用,以及引用队列,以及使用场景

  2. 拆装箱

  3. LeakCanary

  4. map

  5. 线上性能监控

  6. SharedPrefrence 遇到的问题

  7. 手写算法

B公司二面

  1. Handler

  2. 进程间通信

  3. 序列化

  4. 动画

  5. native崩溃捕获原理

  6. 结合项目提问

  7. Recyclerview的点击事件原理

  8. 启动一个空的apk,回启动几个线程

  9. 手写算法

B公司三面

  1. 跳槽原因

  2. 原来公司规模

  3. 预期薪资

  4. 个人优势

感受

1.简历上写的一定要了解,并且知道原理

2.多熟悉项目,找出一些能聊得功能点

3.崩溃捕获,以及解决(java ,native)

4.优化需要知道(大厂都会问)

5.了解由点到面,需要把知识连贯起来

6.还有如果想要高薪,一定要多跳槽,一般大厂工资涨幅都是有限度的,最高涨幅百分之30,除非你特别牛皮

C公司一面

  1. MediaCodec连环炮:MediaCodec报错,只有错误码,没有任何其它信息,如何解决?使用MediaCodec遇到了哪些问题?同步使用和异步使用有什么区别?

  2. 如何计算音频帧,一帧音频帧有多大

  3. YUV基础知识,相比于RGB减少了多少空间,YUV 各个分量都是0实际渲染出来是什么颜色的,NV21和NV12有什么区别

  4. MP4是如何存储音视频文件的,它是什么结构

  5. OpenSL 相关的问题,如何使用。可以干什么不可以干什么

  6. 结合项目问题

C公司二面

1.SurfaceView和TextureView区别

2.OpenGL ES相关问题,MVP矩阵左乘和右乘有什么区别,什么是外部纹理,为什么叫外部

3.OpenGL如何渲染一个View

4.VBO是用来干嘛的解决什么问题

5.结合项目问问题

C公司三面

1.项目是什么架构,如何设计的,为什么这么设计

2.算法题:字符串反转

3.平时如何学习的

感受:音视频开发感觉OpenGL ES问的比较多

D公司一面

1.问的项目中哪些用到了hook技术,是怎么实现的

2.Okhttp底层原理

如何成为Android高级架构师!

架构师必须具备抽象思维和分析的能力,这是你进行系统分析和系统分解的基本素质。只有具备这样的能力,架构师才能看清系统的整体,掌控全局,这也是架构师大局观的形成基础。 你如何具备这种能力呢?一是来自于经验,二是来自于学习。

架构师不仅要具备在问题领域上的经验,也需要具备在软件工程领域内的经验。也就是说,架构师必须能够准确得理解需求,然后用软件工程的思想,把需求转化和分解成可用计算机语言实现的程度。经验的积累是需要一个时间过程的,这个过程谁也帮不了你,是需要你去经历的。

但是,如果你有意识地去培养,不断吸取前人的经验的话,还是可以缩短这个周期的。这也是我整理架构师进阶此系列的始动力之一。


成为Android架构师必备知识技能

对应导图的学习笔记(由阿里P8大牛手写,我负责整理成PDF笔记)

部分内容展示

《设计思想解读开源框架》

  • 目录
  • 热修复设计
  • 插件化框架设计

    《360°全方面性能优化》
  • 设计思想与代码质量优化
  • 程序性能优化

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

549465722)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值