分享一下百度、腾讯、字节Android开发面试经历

187 阅读2分钟

1. 百度Android开发面试

一面(技术面)

  • 自我介绍,简短评述个人项目经验,突出与Android开发相关的技术亮点。
  • 基础知识,比如Android的四大组件、生命周期、启动模式、内存泄漏原因及预防、多线程处理策略等。
  • 性能优化,讨论了列表滚动卡顿的原因及优化策略,如何使用TraceView绘制工具定位性能瓶颈。
  • 算法题,现场解决一个简单的链表排序问题,考察逻辑思维和编码能力。

二面(技术深挖坑):

  • 深入源码,对Activity启动流程的源码分析,Binder机制理解,Looper/Handler机制。
  • 架构设计模式,MVC/MViper架构的理解和实践,如何在项目中应用。
  • 网络编程,HTTPS请求原理,如何设计安全的网络层,OkHttp缓存取策略。
  • 项目挑战,项目中遇到的最大技术难题,如何解决,团队合作过程中的冲突管理。

HR面:

  • 职业规划,未来几年的打算,为什么选择百度,对百度文化的理解。
  • 抗压能力,如何应对项目压力,加班情况下的工作态度。
  • 团队融合,团队合作例子,如何适应新环境,领导或协助他人。

2. 阿腾讯Android开发面试

一面:

  • 自我介绍,项目经验,突出解决过的复杂问题。
  • 基础,Handler机制,Looper与MessageQueue,线程通信。
  • 设计模式,单例模式,工厂模式在Android中的应用。
  • 性能,内存优化,oom分析,ANR类加载机制,bitmap处理。
  • 问题,现场解决一个链表逆序问题。

二面:

  • 源码,Fragment生命周期,与Activity区别,Activity启动过程。
  • 架构,MVP,MVVM,如何解耦合用例。
  • 网络,OkHttp缓存策略,Dns设计,HTTPS握手过程。
  • 算法,复杂度排序,链表合并。
  • 项目,难点,团队冲突,如何解决。

HR面:

  • 个人定位,对腾讯的期待,职业规划。
  • 团队合作,团队精神,案例分享。
  • 压力处理,如何平衡工作生活。

3. 字节跳动Android开发

一面:

  • 基础,四大组件,生命周期,启动流程。
  • 性能,UI优化,ANR管理,Bitmap处理。
  • 源码,Activity启动流程,Binder。
  • 项目,难点,解决过程,团队协作。
  • 算法,链表查找。

二面:

  • 架构,组件化,Flux架构理解。
  • 网络,缓存策略,安全,网络层设计。
  • 算法,链表逆序。•源码,Binder深入,AMS。
  • 项目,挑战,创新点。

HR面:

  • 文化理解,对字节动的看法。
  • 规划,个人职业道路。
  • 团队,合作风格。
  • 抗压,平衡策略。

完整版见公主号:Android老皮