Android大厂面霸来了 大厂offer拿到手软,Android程序员的大厂面试进阶之路

前几天偶然浏览页面的时候,在逼乎上看到了这样一篇大火面经,看完之后觉得非常不错,让我想起了我当初面试大厂的场景,在此我整理并分享我的一份Android面经给大家,对于想要进阶Android的人来说非常不错!

字节抖音部门一面(时长1h)

Android大厂面霸来了 大厂offer拿到手软,Android程序员的大厂面试进阶之路_第1张图片

面试技术点如下(从易到难):

首先自我介绍,稍微介绍一下自己的优势及技术即可。重点是放在技术部分~

  1.进程和线程的理解
  
  2.接口和抽象的理解
  
  3.各种单例创建的理解,以及DCL的同步机制为什么这么做,其他的设计模式知道的,以及应用场景。
  
  4.MVP和MVVM的理解,P层它主要做什么工作,你如何实现的M、V、P三层的通信。
  
  5.Handler的工作流程,Handler能否在子线程初始化以及用什么方案来替代Handler的在子线程初始化。
  
  6.JVM的组成成分,以及你对四大引用的理解
  
  7.四大启动模式的启动方式以及场景分析,如过一个按钮对应页面跳转,如何点多次只进行一次跳转,两种方式回答
  
  8.对http和https的理解
  
  9.Broadcast和LocalBroadcast他的一个区别
  
  10.Static变量他的用处是什么,具体应用场景。
  
  11.一道两个链表的相加问题。思路+伪码实现

字节抖音二面(面试时长70min)

   1.使用安卓数据库时,有哪些生命周期方法:onCreate、onUpgrade
   
   2.存储数据的几种方式:SharePreference、数据库、文件
   
   3.如果要给数据库增加字段,需要怎么做?
   
    - 方法1:通过alter table add column来做
    - 方法2:先给旧表改名,然后建一张新表包含新的字段,再将旧表数据迁移过去,最后删除旧表
   
   4.数据库读写是线程安全的吗?
   
   5.基于对网盘的理解,让我分析上传、下载这两块的内容,让我来做,会做什么样的处理,启发内容见下文:
   
   6.关于上传方面:定时上传和立刻上传两方面的分析,针对的是数据量的大小
   
   7.关于下载方面:线程安全(voliate / sync),线程池的使用,参数理解等等,断点重传的问题,应该怎么去进行实现。
   
   8.还有整个的如果Activity突然断了,或者被kill了,如何对数据或者下载的位置进行保存
   
   9.从内存泄漏问题推倒到jvm的深层次问题,可达性分析的GC Root有什么,虚拟机栈和堆的关系,方法是怎么实现的。
   
   10.问我觉得自己的优势是什么,说了我对一些框架的理解
   
   11.对Kotlin和Flutter的一个了解程度的理解,还有为什么学习的一个现实原因,和学习方法。
   
   12.Handler机制
   
   13.HashMap、HashTable、ConcurrentHashMap的原理
   
   14.计算机网络五层模型
   
   15.http状态码
   
   16.你遇到的最难解决的问题?(自由发挥  最好是有深度一点)

面完这轮什么都不想说,只想喝水。

Android大厂面霸来了 大厂offer拿到手软,Android程序员的大厂面试进阶之路_第2张图片

废话不多说!咱们继续讲!
Android大厂面霸来了 大厂offer拿到手软,Android程序员的大厂面试进阶之路_第3张图片

阿里钉钉一面(面试时长40min)

一样的味道,首先自我介绍~

1.两个 Activity 之间跳转时必然会执行的是哪几个方法?

2.系统是怎么帮我们启动找到桌面应用的 

3.横竖屏切换时 Activity 的生命周期 跟清单文件里的配置有关系。 

4.屏幕适配的处理技巧都有哪些 手机自适应主要分为两种情况:

5.网络优化的问题

6.快排和递归

7.数组和链表的区别

8.常 见 的 Activity 类 型+描述Activity 生命周期

阿里钉钉二面(面试时长30min)

1.自我介绍,优缺点的,以及未来希望的发展方向

2.如何做到分压啊之类的问题

3.给出了钉钉一个mac平台的关于共享屏幕的耗CPU的问题

4.让我提问,提的是关于音视频发展方向的问题,具体是一个发展空间。

5.数据库读写是线程安全的吗?

6.fragment和activity交互

7.webview的使用 安全问题? 和js互相调用

8.断点续传 描述过程 文件读写,怎么保证不冲突

9.asynctask内存泄漏 为什么泄漏 解决方法 调试工具是什么

10.MFCC流程 录音环节(问了一大堆细节,还让写伪代码)

阿里钉钉三面(面试时长55min,概率通过要等hr,虽然最后没过)

1.对MVC和MVP的理解,还有Handler的内存泄漏问题具体是什么,解决方案知道有什么,空数据的时候Handler的阻塞问题?

2.自我介绍自我介绍自我介绍 (说一句,大家自我介绍也一定要好好优化一下)

3.为什么使用MVP,他的优势是什么,内存泄漏是什么样的?

4.http的长连接和短连接这两个概念,怎么去理解。我把它理解为持久化连接是什么,然后对http的3个版本的主要区别做一个介绍

5.http一整个流程,什么Baidu.com输入,经过了什么。比较简单的问题了,必答内容DNS、TCP的三次握手、四次挥手,当然我再答一些IP路由、链路还有物理层的内容

6.RecyclerView的一个复用机制,和ListView的一个区别在哪里

7.HashMap、ConcurrentHashMap、Hashtable的问题,数据结构,线程安全啊之类的问题了,当然还是考了version
1.7和1.8。

8.一个app的启动流程,冷启动和热启动,我说底层我不太了解,只知道会有AMS去调一些东西,但是具体内容不知道,后面就是一些初始化和Activitiy生命周期问题了。

9.一到算法题三值之和求目标值,没写暴力,因为大家都会写,但是浪费了很多时间,刚开始是通过二值求和的方式,但是想做成O(n),其实不太可能,后面改成了O(n^2)

钉钉HR面(面试市场半小时)

基本上到了这轮,你就算通过面试了。hr会询问一些你的经历,最主要的还是和你商定薪资待遇。

在这轮,大家应该要对自己的薪资水平有一个大体的了解,一般都是在原来的工资基础上增长20%~30%的样子。

当然,如果你在面试过程中表现非常优秀,也可以不受这个限制。

如果公司诚心要你,就算你要的工资过高,hr也只会委婉的告诉你,不会直接把你pass。

最后说点工作面试经验:要想面试成功进大厂,面试前的准备肯定是要很充分的!一定要记住临时抱佛脚也是有用,多看多想。

你可能感兴趣的:(android,android-studio,android,jetpack,rxjava,apache)