在2023年6月,我终于收到了一个公司的offer。然而,这之前的四个月,却是一场充满泪水的艰辛历程。
从2月1日开始投递简历,到6月28日,整整140天,期间经历了许多不为人知的辛酸。这段时间,我终于完成了这篇面试面经,记录了这一段充满泪水的艰辛历程。
这140天,真的是担惊受怕、坐立不安、上蹿下跳的。有时在半夜醒来,我突然想到面试官当时想问的问题,便辗转反侧、彻夜难眠。
2月1日,我在BOSS上投递简历,经过修改话术、发链接等努力,终于收到了一个电话面试。然而,这却让我开始自我怀疑,觉得自己各方面都不行。面试机会的匮乏让我备受打击,室友找我出去吃烧烤,为了宣泄情绪,我主动喝了七瓶啤酒,最后难受得哇哇吐。虽然我是东北人,但其实我并不喜欢喝酒,平时都尽量躲酒。几天后,我收到了腾讯会议的视频面试,大约半个小时,主要问了一些问题并写了点代码。2月25日,我收到了第一个offer,心情稍微高涨了一点。
3月1日,我参加了携程的笔试,然后进行了面试。二面结束后,我越复盘越觉得心痛。这段时间,我正忙着准备一些生活的琐事,本来就已经头疼,面试又挂了,让我直接崩溃。而且金三银四很多大公司的招聘都已经开始,我也都投递了,但大多初筛都没过,只有携程到了面试环节,没想到我还是搞砸了。室友又叫我去吃饭喝酒,这次喝的是什么酒啊,一瓶就让我迷糊了,喝完酒后睡了一觉,精神状态也好了一些。继续备赛后,我在牛客上看到有同学和我差不多时间面试状态变成hr了,我不死心地去查查,发现自己也进入了hr面试。突然,我好开心,结果没多久,hr告诉我面试通过了,然后就没信了。CVTE的笔试也通过了,开始约面试,但公司的流程很慢。滴滴和图森未来都收到了面试邀约,其中图森算法面试没答对,技术栈也不匹配,一面都没通过。滴滴是我第一个知名互联网offer,也是唯一一个,几天后,好未来另一个部门约我面试,hr说面试通过了,让我等offer,然后就再也没有音讯了。CVTE的hr面也失败了。
进入五月,我在牛客网上看到百度招聘(其他招聘软件也投了),直接给他们发了邮件。回复说他们部门招满了,把我推荐给别的部门。晚上,hr约我面试。我没想到机会这么快就来了。
但是,戏剧性的一幕又出现了。面试结束后,面试官问我愿不愿意以另一种方式加入他们,正式变成了外包。我的简历不仅没有隐藏学历,还单独列了教育经历,放在了简历最上方,就是为了防止这种事情发生,但最后还是出现了。还好第二天,字节这边内推通过了,BOSS上投递的简历,牛客网上看到内推人的微信,加了询问进度,挂了。内推人打电话简单询问了简历情况,又捞了我一下,才有这个面试机会。
感觉字节面试的压力和难度确实要比其他公司大很多,没想到三面能通过,毕竟异步调度器我写了那么久还没写对。但学历问题导致offer批不下来,不过hr说在群里推荐了一下,我就又被别的部门捞起了。这个部门的一二面都一个多小时,面完心都哇凉哇凉的,根本没想到能过。三面时,感觉面试官没问我什么,然后挂掉了。其实我的水平太差,面试官对我不感兴趣吧。这次挂掉,说实话不心痛,反而很释怀。面试毕竟是一个双向选择的过程。
虽然这一路走来很艰辛,也不知道自己下一步将迈向何方,但在心态和技术上,我确实成长了很多。回首这段经历,我算是挺幸运的。每一次失败,都让我更加明白自己的不足,也为我指明了前进的方向。我将珍惜这次难得的机会,继续努力,勇攀技术的高峰。虽然最后没有进入字节,但是没有但是了!!!
字节3轮技术面+一轮HR面
技术面一面(时长47分钟)
有些问题忘记了,记忆中就只有这些内容
- 自我介绍
- 项目有没有上线
- 项目难点
DialogFragment内存泄漏的定位过程Leakcanary的原理Handler介绍一下Handler内存泄漏说一下- 说一下设计模式
- 手写单例
技术面二面(时长48分钟)
- 自我介绍
- 介绍一下项目
- 软件大概样式是怎样
- 首页是怎样做的
- 首页下拉刷新是怎么做的?(说了滑动冲突的处理)
view事件分发机制怎样- 事件好几层,怎么知道是由哪个控件处理(说了根据触摸的位置啥的,不太了解对不对)
- 提到了责任链,内部链怎么分发的
- 怎么判断哪个
view处理(根据return true/ false) - 我们的事件有
action_move,action_down,action_cancel,所有的事件都是一层一层往下分发吗(说了不一定,down被拦截了,后续就收不到其他的事件了,然后提到了action_cancel的机制) - 我听到你首页用了
recyclerView,那他一般怎么用? - 提到了
adapter adapter用来干嘛?adapter中有哪些是主要方法(说了bindView,这块不太记得了,说项目中用到的是BRVAH)- 提到了
ListView - 为什么用
Rv不用Lv(说了1.强制实现viewHolder(避免findViewById) 2.缓存机制) Lv二级缓存怎么判断这个View是他要的?(答了postion,id)- 然后问
id指的是?(这里说忘记了) - 四级缓存是怎么找到
view他要的?(说了itemType) - 如果有相同的
itemType怎么处理?(说了直接使用任意一个) - 如果四级缓存中找不到呢?(说了手动加载)
- 手动加载是哪里来的?(说了从布局
xml中定义的itemtype中拿的) xml怎么关联到Rv(加载代码inflate的,不太了解)- 堆内存和栈内存区别
- 5层网络协议包括哪些?
tcp三次握手说一下equals和==区别hashmap实现原理(说了基本结构,put)get是怎样实现的
智力题:
- 5升桶,3升桶,水无限,你给我装出4升水
技术面三面(时长37分钟)
- 自我介绍
- 架构设计主要是什么
- 说一下你提到的依赖倒置
- 除了依赖倒置还有什么重要的原则(刚说完单一职责就被打断)
- MVP注意事项(说了内存泄漏的处理)
- 内存泄漏的原理
- 怎么判断内存不能被释放
- 如何检测内存泄漏(说了线下用
LeakCanary,线上用Memory profiler,然后自己扯到DialogFragment内存泄漏) - 打断,问
final作用(说了修饰类,方法,变量,作用) - 非静态内部类引用外部类对象,需要
final关键字吗?(说了应该用static,转为静态内部类,防止内存泄漏) - 多线程使用过吗
- 说一下线程池的使用(刚说了构造方法实现)
- 核心线程数什么作用(说了线程池的运行流程)
- 核心线程数和最大线程数的设置(
IO密集型和CPU密集型,最大线程数的话,看系统支持的并发量) - 一个进程有多少个线程?(说了空间允许的范围内可以一直开辟)
- 实际上是多少?(说了
2g分配的空间) - 为什么是2g(说了之前看过,具体原理不太清楚)
- 一个异步任务都开一个线程,还是多个任务开一个线程,你怎么决定开不开?(说了耗时的话就开,不太耗时不开,因为线程切换调度的话,存在一定的开销)
- 线程安全怎么保证?
syncronized内部原理是什么(说了修饰静态方法和非静态方法,代码块)- 修饰静态方法和非静态方法,能够并发执行吗?(可以,因为他们锁的对象不一样,说到了死锁)
- 死锁的原理是什么?
- 出现死锁怎么排查(这个不太会,说了用
jvm中的jstack) - 追问怎么用?(说没用过,只是知道)
- 问我他的原理是什么?(不太知道,说看
traces.txt,看堆栈) - 怎么安全停止一个线程(说了用
volatile修饰变量,通过while(变量),手动设置true false) volatile原理是什么?(说了java内存模型啥的,修饰特性啥的)- 网络了解吗
tcp优点(可靠性,面向连接)- 面向连接是什么?(说了计算机通信前建立连接)
- 面向连接和非面向连接的本质区别是什么?(乱答,不知道)
- 拥塞控制原理
http与udp区别(说了层数)http请求流程
下面开始聊天了
- 反问
HR 面
- 你是周一面的三面,这几天关于面试你是怎么考虑的?
- 周一面试完,周四周五才给你反馈,有考虑过面试不通过吗
我说周二就给我反馈了
- 面试感受如何?
- 你对面试做了什么准备 ?
- 有做一些刷题吗?
- 字节算法这块,难度怎么样 -
- 配合方式是怎样的?
- 说一下影响比较深的项目
- 主要是客户端做?还是前端后台都有?
- 这个项目你对自己是怎样评价的?
- 团队协作有没有遇到比较难推进的时候?
- 你会主动去配合团队吗
- 自己学习或者工作,怎么安排时间?
- 工作的时间占你一天多少时间?
- 任务你是怎么管理
- 你的方法论挺好的,你提到的日程管理软件是哪个?
- 旁边人用哪几个词语评价你
- 你的优点缺点分别是什么?
- 有遇到压力特别大的时候吗?
- 你对自己的未来的规划
- 什么时候能来?能来多久
- 反问
更多的面试题指南已经被整理成了PDF指南
详细Vx关注公众号:Android老皮
目录
第一章 Java方面
●Java基础部分
●Java集合
●Java多线程
●Java虚拟机
第二章 Android方面
●Android四大组件相关
●Android异步任务和消息机制
●Android UI绘制相关
●Android性能调优相关
●Android中的IPC
●Android系统SDK相关
●第三方框架分析
●综合技术
●数据结构方面
●设计模式
●计算机网络方面
●Kotlin方面
第三章 音视频开发高频面试题
●为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?
●怎么做到直播秒开优化?
●直方图在图像处理里面最重要的作用是什么?
●数字图像滤波有哪些方法?
●图像可以提取的特征有哪些?
●衡量图像重建好坏的标准有哪些?怎样计算?
第四章 Flutter高频面试题
●Dart部分
●Flutter部分
第五章 算法高频面试题
●如何高效寻找素数
●如何运用二分查找算法
●如何高效解决雨水问题
●如何去除有序数组的重复元素
●如何高效进行模幂运算
●如何寻找最长回文子串
第六章 Andrio Framework方面
●系统启动流程面试题解析
●Binder面试题解析
●Handler面试题解析
●AMS面试题解析
第七章 企业常见174道面试题
●SD卡
●Android的数据存储方式
●Broadcast Receiver
●sp频繁操作会有什么后果?sp能存多少数据?
●dvm与jvm的区别
●ART
●Activity的生命周期
●Application能不能启动Activity
●…