app架构师,2021年抓住金三银四涨薪好时机,面试题附答案

前言

最近经常被朋友问到的两个问题。

问题一: “从事IT工作3年了,做技术好累啊,是不是做到30岁就不能继续往下做啊?”问题二: “我已经30岁了,还能不能学编程?”

我给出的答案是:

只要你兴趣还在,可以一直做,什么时候都不会晚;种一棵树最好的时间是十年前,其次是现在。

本人目前在 IT 行业工作了 6 年,做过大大小小的项目,虽然跟网上那些大牛比还差很远。但也确实经历过同样困惑,也迷茫过,踩过很多坑,今后也会继续踩。所以关于这一类问题,也有心得体验,在此算是做个人分享吧。

字节跳动一面

  • 自我介绍
  • 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是了解安卓运行机制必须要掌握的一个知识点,更是一线企业面试必问的知识点!

最后

下面是辛苦给大家整理的学习路线,有需要的可以点击这里免费获取

posted @ 2021-08-21 16:47  HelloWorld扶苏  阅读(130)  评论(0)    收藏  举报