美文网首页Android技术知识Android开发经验谈Android开发
面试高潮季来临,Android 程序猿该如何斩获大厂offer?

面试高潮季来临,Android 程序猿该如何斩获大厂offer?

作者: 程序老秃子 | 来源:发表于2022-09-08 22:28 被阅读0次

引言

面试/跳槽,这在 IT 互联网圈是非常普遍的,也是让自己升职加薪,走上人生巅峰的重要方式;那么作为一个普通的 Android 程序猿,我们如何才能斩获大厂offer 呢?

现如今面试高潮季已经来临; 还在迷茫踌躇中的后浪们,如何才能在面试中让自己脱颖而出,让面试官眼前一亮

下面,我将结合我过往的大厂面试经历来帮大家进行分析

腾讯:

一面

一面是一个电话面试,下午6点左右特地找了一个地方电话面试,6点准时电话就过来了,不得不说,这方面还是专业的,时间有点远了,依稀记得一些题目

1、Object 的方法有哪些?
2、为什么要有 HashCode 方法,hash 算法的原理,在 Java 中哪些地方用到,进而问到了 HashMap 的源码
3、Java 有几种锁,synchronized 与 Lock 有什么区别,Lock 的实现原理,有没有碰到死锁的情况
4、Android 源码中用到了哪些设计模式,举例说明
5、一个 Android 正常启动有多少个线程?(这里当时是比较懵逼的,第一反应是一个主线程,然后觉得应该不止这么简单,想到应用Activity启动的话,应该还有2个 Binder 线程,可能一个管理JVM的线程,面试官接着问还有哪些?果断放弃不知道)
6、Binder 机制的实现思想
7、简单描述 Https 的实现思路
8、描述下快速排序的思想,时间复杂度?什么场景对应着最坏情况?
9、给定无序数组和一个值,找到两个数和为值的元素,不能使用额外空间复杂度(不要使用 HashMap)

二面

二面是视频面试,还是个周六下午

1、TCP/IP 四层模型,网络层和传输层有什么区别?网络层的主要工作是什么
2、socket.accept() 函数对应着 TCP 三次握手中哪一次握手,哪个函数代表连接建立完毕,四次挥手的过程?
3、有做过哪些优化工作,卡顿优化,内存优化,启动优化,APK 体积优化,每个做了哪些工作
4、JNI 开发中有碰到什么问题?怎么定位 native crash
5、递归非递归反转链表
6、打印回环数组

三面

过了整整一周到了隔周五上午,接到了第三面的面试通知,约的是隔周三上午 10:30 ;第三面面试官时不时的面带笑容,给人很轻松的感觉

1、Looper 消息机制,postDelay 的 Message 怎么处理,Looper 中的消息是同步还是异步?什么情况下会有异步消息
2、事件分发机制的源码
3、android 的屏幕刷新机制,怎么优化 UI 卡顿情况
4、有没有使用过插件化框架,实现原理?
5、你在项目中碰到什么比较棘手的问题?怎么解决的?
6、找到一个无序数组中第一次出现最多次数的元素

字节:

一面

1、自我介绍
2、进程如何保活,怎样做才能让 APP 尽量不被杀死等
3、问了两个算法题,一个是跳台阶的问题,另一个是链表判断是否有环。
4、软引用跟弱引用的区别 Handler 引起的内存泄露原因以及最佳解决方案
5、 Binder 机制的作用和原理?
6、性能优化,黑白屏怎么处理?
7、内存中如果加载一张 500*500 的 png 高清图片.应该是占用多少的内存?
8、问 java 内存 GC 原理
9、对 JNI 是否了解 如何加载 NDK 库 ?

二面

1、自我介绍
2、谈谈 MVC、MVP和MVVM ,好在哪里,不好在哪里 ?
3、view 的事件分发机制
4、viewGroup 怎么知道 view 有没有消费事件
5、实现单例模式有几种方法 ?
6、内存泄露和内存溢出的区别 ?
7、传递数据的方式,主要是自定义的类需要继承的那个接口
8、你用 JNI 来实现过什么功能 ?怎么实现的 ?
9、UI 性能优化

三面

1、自我介绍
2、你遇到最难的问题是什么
3、可以在子线程直接 new 一个 Handler 吗 ?怎么做 ?
4、Message 可以如何创建 ?哪种效果更好 ?为什么 ?
5、android 冷启动优化
6、android 弱网优化
7、android 视频相关有了解么?
8、android 长图片加载怎么实现
9、让你做一个单例,你会怎么做
10、算法题目:排序二叉树转有序双链表,要求在原来的树节点基础上增加

四面

1、自我介绍
2、项目里面的难点(如何解决,解决方案是什么)
3、图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?
4、android 动画机制有哪些?
5、装饰模式和代理模式有哪些区别 ?
6、直播中的动画要怎么做?要做成动态的,比如礼物是可以配置的?
7、算法题:找出数组中的 k 数;k数的定义:比位置位于这个数前面的数字都大,且比位置位于这个数后面的数字都小的数字(数组首尾的数字不用管)[4,1,3,2,7,9,8,10,12] 此数组中的k数为7和10

HR 面

1、自我介绍
2、未来的职业规划
3、说一下自己平时的学习方法
4、你认为这些学习方法里最有效的是哪一种?
5、你觉得你有什么优点和缺点?如何克服这些缺点?
6、评价一下之前的面试官,或者说之前的面试官有没有给你留下印象最深刻的一点
7、你对字节跳动有什么看法?
8、你平时都用字节的哪些产品?有什么好的建议吗?
9、期望薪资

阿里:

一面

1、自我介绍下自己,不超过 3 分钟(实际上我的自我介绍不到一分钟)
2、你感觉比本科阶段自己进步了多少,有哪些进步?
3、你觉得你适合从事哪个方向的开发?
4、synchronized 与 lock 的区别,使用场景?看过 synchronized 的源码没?
5、JVM 自动内存管理,Minor GC 与 Full GC 的触发机制
6、了解过 JVM 调优没,基本思路是什么?
7、如何设计存储海量数据的存储系统
8、缓存的实现原理,设计缓存要注意
9、淘宝热门商品信息在 JVM 哪个内存区域?
10、操作系统的页式存储
11、volatile 关键字的如何保证内存可见性
12、happen-before 原则
13、Lucene 全文搜索的原理
14、你觉得自己适合哪方面的开发,为什么?

二面

等了将近 6 天(还以为被刷了呢)终于在第二周的周四接到阿里面试电话,那叫一个激动啊。赶紧找了一个安静的地方,准备好后开始正式面试。二面的面试官是一个部门主管,自然还是有点小紧张的。这次面试官上来就直接问,没有一面的面试官那么好说话

1、自我介绍下自己,不超过 3 分钟(我的自我介绍仍然不超过 1 分钟)
2、你说你熟悉并发编程,那么你说说 Java 锁有哪些种类,以及区别?
3、如何保证内存可见性
4、Http 请求的过程与原理
5、TCP 连接的特点
6、TCP 连接如何保证安全可靠的
7、为什么 TCP 连接需要三次握手,两次不可以吗,为什么?
8、AOP 的动态代理与 cglib 实现的区别?
9、那么你说说代理的实现原理呗
10、看过 Spring 源码没,说说 Ioc 容器的加载过程吧
11、了解过字节码的编译过程吗?
12、spring 底层原理框架

三面

三面与二面隔了 5 天,找了一个安静的地方开始电话面试。据说总监面会问项目多一点,所以在等待的这几天中给项目增加了几个比较肉的点

1、自我介绍,不超过 3 分钟(这次好像时间更久了,也就 2 分钟多点)
2、说一下你对哪个项目比较熟悉?
3、为什么做这个项目?
4、项目采用了什么架构,数据库如何设计的?
5、数据库由哪些表,为什么有这些表?
6、主要有哪些核心模块,模块之间如何通信的?
7、session 放在哪里?
8、如何保存会话状态,有哪些方式、区别如何?
9、分布式 session 如何管理,你有哪些方案?
10、学过数据结构和算法吗?,你说说二分搜索的过程?
11、每天有那么多人使用支付宝,这些数据如果给你存储,你会怎么设计呢?

通过上述的大厂所问到的面试题,我们不难看出在 Android 大厂面试的过程中,我们需要注意的关键点到底是什么?没错就是技术;但是话说回来,我们都知道不是所有人都能搞得定大厂面试官,有些人因为基础差、也非科班出生,被面试官吊打确实也是十分正常的;我也不能例外,所以在每次被 pass 过后,便对其进行了一次又一次的复盘,终于明悟如果想要下定决心啃下(进大厂)这块硬骨头的话,就一定需要成熟且系统学习计划

所以我根据自身的一个面试经历,和对网上大厂面试题目及答案的查找收集,最终将其整合成一份 Android 高级开发面试题及答案解析 文档;有需要这份面试题及答案解析的朋友 ;可以简信发送 "面试" 即可 免费获取 ;希望这份面试题能够帮助大家更好的冲击这次的面试高潮季

面试题资料展示如下:

Android 高级开发面试题及答案解析目录:

Activity 启动模式

  • Activity 的启动流程
  • onSaveInstanceState(),onRestoreInstanceState的掉用时机
  • activity 的启动模式和使用场景
  • onStart 和 onResume、onPause 和 onStop的区别
  • Activity 的数据是怎么保存的,进程被 Kill 后,保存的数据怎么恢复的

Service 解析

  • service 的生命周期,两种启动方式的区别
  • Service 启动流程
  • ervice 与 Activity 怎么实现通信
  • IntentService 是什么, IntentService 原理,应用场景及其与 Service 的区别
  • Service 的 onStartCommand 方法有几种返回值?各代表什么意思?
  • bindService 和 startService 混合使用的生命周期以及怎么关闭

完整版面试题 PDF 文档获取方式: 简信发送 “面试” 即可 免费获取

详解 Handler 消息机制

  • Handler 的实现原理
  • 子线程中能不能直接 new 一个 Handler ,为什么主线程可以
  • Handler 导致的内存泄露原因及其解决方案
  • 一个线程可以有几个 Handler ,几个 Looper ,几个 MessageQueue 对象
  • Handler的post 与 sendMessage 的区别和应用场景

Bitmap 内存问题

  • Bitmap 内存占用的计算
  • getByteCount() & getAllocationByteCount()的区别
  • Bitmap 的压缩方式
  • 如何设计一个图片加载库
  • 有一张非常大的图片,如何去加载这张大图片

完整版面试题 PDF 文档获取方式: 简信发送 “面试” 即可 免费获取

深入解析 Binder

  • 什么是 Binder?
  • Binder 的原理
  • Binder 框架中 ServiceManager 的作用
  • Android 中进程和线程的关系
  • 为何需要进行 IPC ,多进程通信可能会出现什么问题
  • 为何需要进行 IPC ,进程通信可能会出现什么问题

性能优化系列

  • 内存优化
  • 启动优化
  • 布局优化
  • 卡顿优化
  • 网络优化

文章篇幅有限,资料内容就不做完全展示了有需要这份面试题及答案解析的朋友 ;可以简信发送 "面试" 即可 免费获取

最后祝大家能够在面试中拿到一份令自己满意的 offer

相关文章

网友评论

    本文标题:面试高潮季来临,Android 程序猿该如何斩获大厂offer?

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