面试字节跳动Android研发岗凉凉经,没想到败在了第三面,面经分享(注意避坑)…

前言

大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,对自己才更有帮助。

最近跟一个读者聊天,他准备了3个月,刚刚参加完字节跳动的第三面,视频面,嗯,挂了…

一面二面都比较简单,大概记了一些:

字节跳动一面

  • 自我介绍
  • handler机制,sendMessage和post(Runnable)的区别。
  • ThreadLocal原理,底层实现
  • HashMap底层,扩容,LinkedHashMap
  • Service的onBind和onStart差别
  • Activity启动生命周期,A跳转B
  • Android持久化方案,SharedPreference是否可以跨进程通讯。ContentProvider
  • ClassLoader机制,双亲委派。如果我要写一个Activity类,那怎么保证加载的是我自己写的Activity
  • 算法题,约瑟夫环
  • 反问

字节跳动二面

  • 自我介绍
  • 项目技术点详解
  • 写过什么自定义View
  • OkHttp代码看过吗,用了什么设计模式
  • MVC、MVP区别,项目中的实现。
  • LiveData和EventBus的相关讨论,真的是讨论,畅所欲言
  • 看过哪些源码
  • SharedPreference相关
  • Android动画了解吗,用过什么
  • TCP、UDP区别,面试时的语音用的是什么,为什么要这么用。
  • 代码题,5个线程对一个int进行累加到1000.
  • 反问

image

字节跳动三面

让我们来一起看看字节跳动第三面,面试官都问了什么呢?你又能答上来多少?

  • ArrayList的使用,然后问他ArrayList使用过程中有没有遇到过坑;

  • 还问了HashMap,问了差不多20分钟。还有aba问题,GC算法,泛型的边际这些东西;

  • 接着问了Handler中loop方法为什么不会导致线程卡死,还有就是动画的原理,问他有没有实战过补间动画;bugly上面收集到的最难的bug是怎样的,如何解决的?

  • 还有MeasureSpec的意义,问了一般怎样计算MeasureSpec;自定义View和自定义ViewGroup的区别;onmeasure,onLayout,onDraw的调度流程;自定义View的measure时机;有没有写过自定义View;

  • 问了Glide使用过程中的坑,EventBus使用过程中的坑;

  • 多线程开发中你都在哪些地方使用过sleep,wait,分别怎么使用的;

  • 还有网络协议okhttp中的缓存机制,dex加载流程,组件化的原理;

  • 还有就是Fragment的生命周期管理过程中遇到的坑和解决办法;

  • 还有排序算法,还有观察者模式和单例模式,还问了抽象类和接口的关系;

  • 还有就是应用启动流程,activity 启动流程,为什么要每个应用有一个自己的虚拟机,这个虚拟机和JVM的关系。

  • databinding原理,binder原理;

  • 多进程通信问题;binder优势;aidl生成的java类细节;多进程遇到过哪些问题?

  • 子线程中维护的looper,消息队列无消息时候的处理节省性能的处理方案;

  • 你遇到的最难的技术问题和解决方案;

朋友跟我吐槽:“我靠,现在面试高级工程师都这么难的吗?”

是的,安卓高级工程师要求就是这么高,待遇也高啊!

大厂面试真题必问

要想成为高级工程师,Binder和Handler是必须掌握的!从字节跳动面试官提的这些问题,也可以看出,现在面试问的很多都是原理

一线企业的app都是多线程和多进程的,而Android的进程间通信机制就是Binder,原生的线程间通信则是Handler,Binder和Handler是了解安卓运行机制必须要掌握的一个知识点,更是一线企业面试必问的知识点!

那么Binder和Handler的原理应该怎么学,应该学到什么程度?

你可以看看这两个大厂面试真题:

1)你知道广播有哪几种吗?(是不是觉得很傻逼…)

  • 那么广播的注册方式有哪几种?(侮辱你了,对不对?)
  • 那广播是怎么传送的?(傻眼了吧?)
  • 问题的答案就是binder,你敢想象吗?

2)你知道activity的生命周期管理协调方式么?(如果你看过,对是handler)

  • 那么它为什么用handler来协调管理(傻眼了没?)

为了帮助大家深刻理解Handler与Binder的原理以及面试相关知识,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节

还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

点击链接加入群聊【Android高级架构师】即可免费获取~

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

2020年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2020年万事大吉。

猜你喜欢

转载自blog.csdn.net/Android725/article/details/108248672