美文网首页Android开发Android开发Android开发经验谈
Android应届生被为难,字节面试5轮,最后把面试官收拾了

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

作者: 不正经的创作者 | 来源:发表于2020-09-04 15:30 被阅读0次

    前言

    今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。但是,不得不说,这次阿里面试真的太难为我了,可以说是和面试官大战了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,进入理想的公司,共勉!

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

    相关文章

      网友评论

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

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