美文网首页Android开发Android开发经验谈Android技术知识
第一次面试字节跳动Android研发岗,第三面挂了…

第一次面试字节跳动Android研发岗,第三面挂了…

作者: 蓝斯_867 | 来源:发表于2020-10-16 14:27 被阅读0次

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

    最近跟一个读者聊天,他准备了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.
    • 反问

    字节跳动三面

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

    • 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开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

    960全网最全Android开发笔记

    资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图,以上资源均免费分享,均放在了开源项目:github 中已收录,大家可以自行获取(或者关注主页扫描加微信获取)。

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

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

    相关文章

      网友评论

        本文标题:第一次面试字节跳动Android研发岗,第三面挂了…

        本文链接:https://www.haomeiwen.com/subject/mgpzpktx.html