今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。但是,不得不说,这次阿里面试真的太难为我了,可以说是和面试官大战了5个回合,不过好在最后给了offer。
下面是我的面试经历分享,希望能带来一些不一样的启发和帮助。
友情提醒:下部分涉及到的内容比较多,更多资料整理在文档里,包括Android学习资料、学习笔记、算法宝典、面试题合集、思维导图等,需要这些资料的朋友直接点击文档链接免费下载~
字节面试涉及到的范围也很广,也具有一定挑战性的,以下包括字节实习四面和校招一面,最终拿到了Android开发岗位offer,字节面试过程中的感觉就是很多我不太熟悉的知识点都被问到了,甚至是不知道的知识点,但整体面试官给人的体验还不错,一般会提前打电话沟通面试时间。
字节实习提前批一面
Activity四种启动,SingleTask模式下上面的act删除以后对当前act会回调哪些方法
onNewIntent
Service 和 IntentService区别
Android一张图片占用的内存怎么计算
实习是怎么做UI适配的
Handler机制,Looper作用,他怎么知道message对应handler,主线程就有这个looper吗,主线程还能再创建一个looper吗,一个线程可以有几个looper,怎么保证只有一个looper,多线程怎么都知道自己是不是有looper
内存泄漏,Android中出现场景,和内存抖动的区别
Fragment add 和 request 的区别
RecyclerView 的缓存机制
抽象类和接口的区别,使用场景
== equals
重写和重载区别
string方法和stringBuilder区别
synchronized
list 和 set 区别
http https 区别
排序算法比较优劣,稳定性
字节实习提前批二面
Handler是用来做啥的每个线程都能有自己的Handler吗Fragment和Activity之间传递数据Activity加载Fragment的方式add一个Fragment的时候已经有一个Fragment的话,对之前的Fragment的生命周期的影响ActivityA启动ActivityB的生命周期回调Activity的启动模式(分别用于什么场景)onSaveInstance和onReStoreInstance作用ViewModel怎么实现的ViewModel是不是一直存在内存中(比如我开启了很多页面,或者ViewModel持有Bitmap这样的对象)Android用过哪些布局View的绘制会经过哪些(onMeasure,onLayout,onDrow)让View重新绘制的方法(重绘时,onMeasure会调用几次)onMeasure会执行几次ConstraintLayout经常用到的属性guaidline为什么不会在布局上显示事件分发机制Android中线程挂了进程会崩溃吗?RxJava用过了哪些操作符字节实习正式批一面
Java内存分为哪些区域
堆内存溢出、栈溢出相同吗
哪些场景下会发生栈溢出
创建的对象一般在哪个区域
GCRoots有哪些
复制算法(GC算法之一)的流程
静态内部类和内部类的区别
volatile的作用是什么
禁止指令重排序是怎么实现的
为什么需要禁止指令重排序
synchronized修饰静态方法和普通方法时的区别
synchronized可重入吗
类锁、对象锁有区别吗
字节实习正式批二面
为什么要用MVVM数据变更UI自动更新怎么实现的,用的DataBinding吗什么是观察者模式,有什么好处什么情况下用责任链模式?哪里遇到过?有什么好处?怎么实现的责任链模式为什么okHttp里面用到责任链模式用户可以自定义多个拦截器吗有网状态下的缓存和无网状态下的缓存一样吗缓存是自己做的还是okhttp做的可以手写一些sql吗room是什么类型的数据库room是怎么实现的,为什么不要写sql呢livedata粘性事件jetpack还用过哪些navigation用来做什么TCP UDP区别为什么需要三次握手和四次挥手三次挥手不行吗两次挥手呢(服务器接收到客户端的FIN报文,立马将回复客户端ACK和自己的FIN报文一并发给客户端可以吗?)TCP属于哪一层TCP的上一层是哪一层应用层常见的协议http与https的区别https怎么进行的加密对称加密和非对称加密的方式你知道的非对称和对称加密有哪些字节校招提前批一面
View的事件分发、View的绘制流程
Okhttp3的优点
内存溢出、内存泄漏、四种引用类型
glide和picasso区别,图片缓存机制,Bitmap是存在java层还是native层
弱网优化
Android线程间通信方式有哪些
Handler机制,loop()为什么不会阻塞主线程,postDelayed()的原理。
手撕代码:括号匹配合法性判断。比较简单,写完后改了下题目,增加非括号字符,另外面试官建议实现方法的可扩展性(不仅是括号,可能有其他匹配规则),最后优化内存。
1.梳理知识
一般的面试,会被问到JVM原理、Android基础、四大组件和热修复等内容,这都是一名普通Android开发人员的知识结构,那么肯定是需要具备更多的知识树,需要掌握更全面的知识体系,所以就需要对知识进行一个系统的梳理了。
一、基础技能:
二、Android框架体系架构
三、360全方面性能调优
…
2.复习知识
工作这么久要重新再去面试肯定是要将自己的知识储备重新拿出来,要把各个知识点复习到位,需要通过各个方式,选择自己最习惯的。无论是读电子书籍还是观看视频都是可以的,但要记得做好自己的学习笔记,能够起到总结的作用,再去复习起来就特别清晰了。
知识点总结:
学习笔记:
学习视频:
3.刷面试题
工作5年,虽然清楚现在流行什么技术,但对于互联网大公司会面试一些什么还真是不太清楚,所以面试之前刷一刷面试题还是很有必要的,能够做到举一反三。一线互联网的面试题,我整理了近三年的,内容还真不少。
毕业后,我的第一个5年按照计划进行了,那么拿到字节offer后,下一个5年也有要清晰的目标。接下来的时间,是形成思维方法论和知识体系的阶段,同时也要培养自己团队协助与管理能力,提升自己的眼界,从而有更长远的发展。
至于心态,脚踏实地,不傲不馁。
最后,希望大家都能够有自己清晰的发展路线,希望大家都能顺利拿下offer,进入理想的公司,共勉!
以上文章中,所有的文档资料都可以免费分享给大家,需要这些资料的朋友可以点击获取!相信它会给大家带来很多收获。