总结
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。
还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
2021年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2021年万事大吉。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
面试进行时
准备了一段时间后我觉得自己准备的差不多了,就在拉勾上&boss上注册账号,公开了简历,前期我没有主动投递,有哪家让我去面试,我才去。后期就主动开始投简历了,这里不得不吐槽一下拉钩的star法则,以及万年不匹配。我面试的公司较多,摘取几个有代表性的公司拿出来分享下。
蓝厂
一面就挂了,主要是以下几个问题:
- 事件分发流程
- View的渲染机制
- 动画的原理,底层如何给上层信号
- 编译打包的过程
- Android有多个资源文件夹,应用在不同分辨率下是如何查找对应文件夹下的资源的,描述整个过程
- ANR的原理(回答主线程5秒阻塞是不行的,要读源码)
面试官是做framework的,所以问的东西偏framework,最后他说“虽然你是做应用的,但是不能浮于表面,要深入研究”,我觉得他说的很有道理。
度娘
晚上八点半,在雨中打着伞接到电话,进行电话面试,一面就挂了。
- Bitmap 使用时候注意什么?
- Oom 是否可以try catch ?
- 内存泄露如何产生?
- 适配器模式,装饰者模式,外观模式的异同?
- ANR 如何产生?
- String buffer 与string builder 的区别?
- 如何保证线程安全?
- java四中引用
- Jni 用过么?
- 多进程场景遇见过么?
- 关于handler,在任何地方new handler 都是什么线程下
- sqlite升级,增加字段的语句
- bitmap recycler 相关
- 强引用置为null,会不会被回收?
- glide 使用什么缓存?
- Glide 内存缓存如何控制大小?
- 如何保证多线程读写文件的安全?
面试官声音略显慵懒疲惫……我怀疑他是不是面了太多人已经麻木了
某海外直播公司
一面:
- 线程和进程的区别?
- 为什么要有线程,而不是仅仅用进程?
- 算法判断单链表成环与否?
- 如何实现线程同步?
- hashmap数据结构?
- arraylist 与 linkedlist 异同?
- object类的equal 和hashcode 方法重写,为什么?
- hashmap如何put数据(从hashmap源码角度讲解)?
- 简述IPC?
- fragment之间传递数据的方式?
- 简述tcp四次挥手?
- threadlocal原理
- 内存泄漏的可能原因?
- 用IDE如何分析内存泄漏?
- OOM的可能原因?
- 线程死锁的4个条件?
- 差值器&估值器
二面:
- 简述消息机制相关
- 进程间通信方式?
- Binder相关?
- 触摸事件的分发?
- 简述Activity启动全部过程?
- okhttp源码?
- RxJava简介及其源码解读?
- 性能优化如何分析systrace?
- 广播的分类?
- 点击事件被拦截,但是相传到下面的view,如何操作?
- Glide源码?
- ActicityThread相关?
- volatile的原理
- synchronize的原理
- lock原理
三面:
- 三道算法题,要求在一个小时之内做完。
- 翻转一个单项链表 1->2->3->4->5->null =====> 5->4->3->2->1->null
- string to integer
- 合并多个单有序链表(假设都是递增的)
**四面: **
总监面,问了一些java 同步相关的。
HR面:
谈薪水,最后没谈拢。
由鹅厂与其他公司合资创立的公司
一场笔试加一场面试后挂了,面试官T4级别……。
笔试:
- Activity生命周期简述
- 常见内存泄漏情景及避免内存泄漏的措施
- Actvity启动模式简述
- 简绘观察者设计模式UML图
- 算法,求公共子序列(或者是子串,记不清了)
- Java四种引用
- 自定义view重写哪几个方法?
- http 的session&cookie的区别
- 简述工作线程更新UI的方法
面试:
- 应用最多占多少内存
- 滑动卡顿如何解决(不同原因及对应处理方式)
- 自定义view实战
- 多线程,多进程 相关
- Java四种引用的使用
某ding
一面就挂。
- XX项目你负责什么
- Sqlite 怎么增加一个字段
- XX项目中是怎么创建数据库的
- Sqlite 怎么删除一个字段
- 有什么你觉得自己做得好的地方
- 为什么用Retrofit(一个开源库)
- Retrofit与之前的网络库有什么优势
- XX项目中你们自己定义的线程池来管理任务,不使用框架,那么,后来新的项目怎么设计的
- 你认为Rxjava的线程池与你们自己实现任务管理框架有什么区别?
- 内存泄漏的常见场景
- 怎么发现&分析内存泄漏
某条
面了三轮技术加一轮HR,HR事业线不错,笑得职业化,其他的没记住。
题外话
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多程序员朋友无法获得正确的资料得到学习提升,故此将并将重要的Android进阶资料包括自定义view、性能优化、MVC与MVP与MVVM三大框架的区别、NDK技术、阿里面试题精编汇总、常见源码分析等学习资料。
【Android思维脑图(技能树)】
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在IT道路上学习和发展~
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!