最后
在这里小编整理了一份Android大厂常见面试题,和一些Android架构视频解析,都已整理成文档,全部都已打包好了,希望能够对大家有所帮助,在面试中能顺利通过。
喜欢本文的话,不妨顺手给我点个小赞、评论区留言或者转发支持一下呗
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
本篇文章真实的记录了我从 准备——>复习——>面试 的全过程,分享一些我的真实经验,希望能帮到大家。
俗话说得好,金三银四好时节,此时不跳待何时?但是作为一名职场人,每个跳槽的选择都是人生中的一个节点,不应该草率决定,而应该细心经营,才能得到理想的结果。这也是为什么身边会出现**“有的人越跳越舒服,有的人越跳越尴尬”** 的原因。
准备工作
开始准备工作之前,首先思考几个问题:
- 如何准备
- 需要复习哪些东西
- 该怎么复习
- 怎么复习最高效
- 职业规划
1. 如何准备,从哪里开始着手?
首先是想好自己是否真的需要换工作,确定好需要换之后就开始写简历,将个人技能点、业务经验、业务成绩等写上去。
2. 需要复习哪些东西?
我个人认为首先是复习 Java 基础 和 Android 基础 ,然后再根据简历上写的 技能点 和 业务经历 ,复习相关的知识点。有时候,你做过的某个东西,可能叙述出来不是特别清晰,或者根本就想不起来具体是怎么做的了,这个时候就需要复习代码回顾一下。
下面是一些我需要复习的点:
- 项目经历,业务,难点
- Java基础,JVM,集合原理
- Android基础,View体系,View绘制流程,事件分发,屏幕刷新,动画原理
- 常见三方库原理
- Jetpack
- Android Framework
- 算法
- Kotlin
3. 该怎么复习?
将以前学习该部分时写过的博客或者笔记拿出来复习,结合源码。如果是以前没有写过相关笔记的,就找一下相关的技术文章,汇总,看一波。
4. 怎么复习最高效?
一个技术点或者做过的业务,最好是先复习一下,然后用自己的话把它描述出来,最好是写成文字,记录到云笔记上,方便随时复习。当然,这只是一个点的复习方式。
而简历上有很多很多个这样的点,我们需要设置一个dead line,设置一个复习总时长,到哪个日期截止,必须在那个日期结束前复习完成。然后将需要复习的点详细安排到每一天,每天需要复习哪些东西,必须当天完成,禁止自己拖到第二天,最好是明天的任务内容今天就把它完成了,然后明天就去复习后天的任务内容。
给自己留有余地,即使某天没时间复习,也不至于落后于计划。最好是开始复习计划之前就把每一个知识点需要看的东西全部给列出来,比如需要复习哪篇笔记、哪篇文章、哪部分代码等,到时在复习的时候就无需关心该复习哪里,直接照着之前安排好的计划开整就行了。
下面是一些我在复习时的部分计划,完成时打个勾:
5. 职业规划
开始找工作之前,最好是先想好自己下一份工作想做什么,去怎么样的公司,将来想怎么发展。
复习资料
这块大家尽量按照自己简历的内容来进行专项复习,建议大家可以多看看大大厂面试真题,这样不仅可以查漏补缺,也可以提前熟悉大厂面试的套路,不至于面试怯场。
下面是一些我在面试前看的一些大厂面试真题:
另外,以上所有资料以及更多学习手册、心得体会,直接送给大家!扫描下方CSDN官方二维码自行领取
面试真题
只记录了部分公司和部分题目,有时候面试完忘记记录了,后面就想不起来了。
公司1:
- 包体积优化
- handler原理
- 如何退出app
- synchronized和lock
- 鸿蒙了解过吗
- flutter了解过吗,compose呢
- 跨进程通信,线程通信
- 组件化是怎么做的
- 做过的项目,主要负责什么
- 担任的角色
- 最难的是什么?怎么解决的
- 开发流程是怎么样的?有做设计文档吗?
- 职业规划,为什么做安卓?鸿蒙有了解吗?
- 平时怎么学习的?最近学了什么?给工作带来了哪些好处?
- 看过哪些技术书籍
- 平时有什么爱好
- 对你想要去的公司团队有什么要求?或者说你想去什么氛围的项目组?
公司2:
- sleep和wait区别
- mvp
- 组件化
- livedata,viewmodel原理
- 内存优化
- 启动优化
- leakcanary原理
- 换肤原理
- 怎么hook ams
公司3:
- volatile、synchronized、原子类的原理
- 数据库优化是怎么做的
- 性能优化
- kotlin伴生对象和init
- 斐波拉契序列
- 反转链表
公司4:
- fragment生命周期
- 屏幕刷新机制
- binder理解
- bindService校验: 权限,包名
- https的原理
- 热修复:class和资源
- invalidate 和 postInvalidate区别
- handler原理,sendMessageDelayed是怎么实现的,为什么不卡主线程,底层是如何通知进程这边恢复阻塞的
- java掌握到什么程度了,kotlin呢?android呢?
- 响应式编程
- 看过哪些书?推荐一本你觉得不错的书,为什么不错
- android最近这2年值得关注的框架
- 敏捷开发模式
- 你给你自己的水平打分,计划怎么完善和精进自己的技术栈
公司5:
- app启动过程+activity启动过程,activity启动过程中的launchmode的原理
- handler
- java 方法重载问题,泛型相关
- 卡顿优化,冷启动优化,线上监控方式
- 慢函数线上监控
公司6:
- 3个线程如何依次执行
- 设计一个图片加载库,lrucache原理,linkedhashmap实现
- lifecycle,viewmodel原理
- view事件分发
公司7:
- gc roots
- JVM垃圾回收算法,Android虚拟机垃圾回收算法
- 分代回收思想
- Java类加载机制
- 线程池有几种,分别是什么特征,自定义线程池需要注意什么,核心线程数是多少
- hashmap原理(红黑树会退成链表吗?什么情况下?),ConcurrentHashMap原理,Hashtable原理
最后
如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。
欢迎大家一起交流讨论啊~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!