Android应届生被为难,字节面试5轮,最后把面试官收拾了

前言

今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。但是,不得不说,这次阿里面试真的太难为我了,可以说是和面试官大战了5个回合,不过好在最后给了offer。

下面是我的面试经历分享,希望能带来一些不一样的启发和帮助。

友情提醒:下部分涉及到的内容比较多,更多资料整理在文档里,包括Android学习资料、学习笔记、算法宝典、面试题合集、思维导图等,需要这些资料的朋友直接点击文档链接免费下载~

我与字节面试官“大战”5回合,胜

字节面试涉及到的范围也很广,也具有一定挑战性的,以下包括字节实习四面和校招一面,最终拿到了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年,虽然清楚现在流行什么技术,但对于互联网大公司会面试一些什么还真是不太清楚,所以面试之前刷一刷面试题还是很有必要的,能够做到举一反三。一线互联网的面试题,我整理了近三年的,内容还真不少。

拿到offer后的规划和心态

毕业后,我的第一个5年按照计划进行了,那么拿到字节offer后,下一个5年也有要清晰的目标。接下来的时间,是形成思维方法论和知识体系的阶段,同时也要培养自己团队协助与管理能力,提升自己的眼界,从而有更长远的发展。

至于心态,脚踏实地,不傲不馁。

总结

最后,希望大家都能够有自己清晰的发展路线,希望大家都能顺利拿下offer,进入理想的公司,共勉!

以上文章中,所有的文档资料都可以免费分享给大家,需要这些资料的朋友可以点击获取!相信它会给大家带来很多收获。

猜你喜欢

转载自blog.csdn.net/ajsliu1233/article/details/108370726