2021年新鲜面经,直击CVTE-Android开发工程师

一面

3月5号

19:20开始排队,20:00开始面试,20:25面试结束,感觉后面还有人。

没有自我介绍,直接开始问(当时感觉就没戏,有点像应付的样子,毕竟也有点晚了,但面试内容全是面经上的,不过有点紧张,有些没答出来)。

  • 最满意的项目
  • 在项目中做了什么
  • 实习中做了什么
  • 四大引用
  • 用的图片缓存框架,自己实现的话用什么引用(脑子卡了,说的弱引用,结果直接翻车)
  • Java泛型、应用场景、super与extends关键字
  • Activity启动模式及应用、写微博界面用什么模式
  • 线程的状态,如何中断线程
  • Service启动方式,与Activity通信方式,还有其他方式吗?能在Service做耗时操作吗?
  • 自定义View需要重写的方法及调用顺序、可以在这些方法里面创建对象吗?创建对象会怎么样(这里脑子卡了,之前看过内存抖动的定义,就说了内存抖动,下来想想不应该是卡顿吗)
  • Binder应用场景
  • http与https区别
  • udp与tcp使用场景
    关于该面试题的答案解析可上 GitHub自行查阅

3月7号

原本以为凉了,第二天就出去玩了,没想到第在路上二面面试官给我打电话了,但是当时在坐车,面试官打了三个电话都没接到(印象分-10000),第四个电话才接到,原本约当天中午12点,来不及就改到了7号上午9点,面试官还是很和蔼随和,体验挺好的。

8点55就进去了,56面试官也进入会议了,开始面试,9点35左右面试结束。

还是没有自我介绍,直接开始问。

  • 你做过的项目
  • 项目用的什么架构
  • 说说MVP,有什么缺点?
  • 你说到的P层臃肿怎么解决(这里胡说一通,然后说了个代理类)?
  • MVP有什么改进?
  • 说说MVVM的理解
  • ViewModel的作用原理
  • ViewModel与onSavedInstanceState区别(这里翻车,说的是一个手动恢复数据,一个自动恢复)
  • ViewModel怎么保存数据的(ComponentActivity调用onDestory的时候保存???)
  • LiveData原理
  • LiveData怎么绑定的生命周期(LifeCycle???,原理这里只了解个大概,都没怎么答好)
  • 说说了解的JetPack其他组件(说了Room)
  • Room的注解是编译作用还是运行时作用
  • 还有什么改进吗?(组件化)
  • 组件化的思想(这里真的不了解,胡说一通)
  • 性能优化(说了过度绘制,RecyclerView缓存以及DiffUtil)
  • 内存方面的优化呢?
  • Bitmap复用
  • Bitmap复用会有大小限制吗(引导我说有)
  • 你说的卡顿怎么回事(瞎说一顿)?
  • 说说了解的第三方源码
  • Okhttp怎么实现缓存的(说的拦截器,然后就改口不了解)
  • Flutter的优劣势
  • Flutter Android平台通道原理(Flutter在Android上本质就是一个View,其他原理不清楚)
  • 额,做一道题吧
  • 手写栈,尽可能多的实现功能(这里问题很大,考虑了泛型、线程安全、扩容)

这里实现栈的时候出了很多幺蛾子,构造函数使用了非静态常量报错,看了半天也没看出来,面试官说下去解决。使用的index与size会不会多余?(只需要size就行),还有泛型忘了写(面试官一句你的泛型呢?,人都傻了,int用习惯了)

  • 数据扩容怎么实现(System的复制数组)
  • 反问

最后一句面试过的话人力会给你联系或者公众号(暗示过不了)

反问的时候问了欠缺的地方,面试官说得非常到位,这些东西的原理不清楚!!!不清楚!!!不清楚!!!

没办法,太菜了,多看看原理吧。

面试经验分享

更多的面试专题分享可点击 GitHub自行查阅
我也算是一线公司都踩过点的Android 码农了,Google也踩过一次,现在就说说我自己的一些感受。在阿里的时候我作为面试官接触过几十个面试者,能左右我是不是通过这个人的,主要因素还是这个人对技术的热爱程度。

因为有这种极客精神,做任何技术上的事情都是时间上的问题,所以面试过程中要尽可能表现出对技术的热爱。

那除了这种因素外,我们怎么做才能更大概率的进入一线公司呢?

还有一个比较重要的因素就是知识的深度。我认为深度优于广度,广度通过看各种文章都能了解,但一旦碰到实际问题,这时候往往靠的是自己的知识深度。比如,Android程序员们很多人知道四大组件职责都是什么,还会些性能优化,但是如果不知道Framework层系统服务原理,就做不出插件化框架。

因为一线公司业务的复杂度也决定了业务的深度,如果没有较好的深度探究能力,是很难胜任的,所以知识的深度也很重要。极客精神加上某一领域知识的深度能力,就可以达到一线公司标准了。面试中非理性因素也有较大比重,但是这种东西是我们没办法掌控的,如果因为这种因素失败了,也没必要气馁。

我认为能力是和回报成正比的,就算此刻没发生,下一刻也会出现,只要掌握了我们该掌握的能力,总有一天会进入我们理想的公司。

猜你喜欢

转载自blog.csdn.net/Androidbye/article/details/114674061