双非本六个月拿到字节跳动Android开发岗offer

前言

19毕业于一所不知名双非本科大学,毕业时就有着一颗想进大厂的心,但又想留在成都,不愿意去北上广,现在其实相当后悔。当年在成都的大厂少之又少,再加上校招时非常努力地玩耍,导致投的几个大厂面试都全部挂掉,也错失了进大厂最好的机会,所以我奉劝大三的同学如果对自己的职业有追求,有进大厂的梦想,在大三的时候一定要好好准备,在校招的时候拿 offer。

最后我在成都一家本地科技公司做了Android开发,中间也跳过一次槽,也是做Android。但这几年时间里总感觉公司能给的成长太慢,虽然自己也在学习,还是免不了焦虑,特别是像自己这种学历和公司背景都一般的程序员,要保证自己以后不被淘汰,我必须得做点什么。

于是我把所有能利用的个人时间全部利用了起来,比如早上十点上班,我六点钟就会起床,刷两个小时面试题,八点钟洗漱之后去上班。晚上如果有时间就会把早上刷过的题拿出来继续复习,花了两个月的时间,一边预习数据结构,一边做题,LeetCode上面的高频题基本都过了一遍。

花了那么多时间刷题,都是因为自己算法太菜,以前没有进行专门的练习。题做得差不多之后,就开始复习专业知识了,具体内容我都会总结出来。前前后后准备了三个月,我才敢进行内推,经历了八次面试之后,面试时间又持续三个月,皇天不负有心人,终于在这个月等到了oc。下面是面试内容,时间太久了,可能记得不太全,但基本上包含了所有问题。

一面

都说字节的面试难度偏高,带着忐忑的心情来到面试,没想到面试官是一个和蔼可亲的爷爷型面试官,很快放稳了心态,开始面试。

  • 上来先常规自我介绍然后讲项目
  • recyclerview的缓存机制
  • glide的缓存机制
  • 从glide缓存的lruCache出发让我讲一下自己怎么实现,一开始只说到了链表,后来面试官提醒效率,于是回答到了linkedHashmap
  • glide缓存的弱引用说到安卓四大引用还有在项目中的使用
  • hashmap问得比较详细
  • == equals
  • handler机制
  • 算法题是两个升序链表合并
  • 总的来说这次面试体验还是特别不错的,面试官问的问题感觉一层套一层,往往在回答中说到了某个知识点,接着下个问题就会以这个知识点开始。

当天面试由于比较紧张,让两个小伙伴给我面了两个小时,口干舌燥的参加面试,脑子也比较乱哄哄,handler的一个简单问题总是集中不了精神,还好面试官比较有耐心没有给我提前结束。

隔了7天的早上收到了二面通知,冲!

二面

下午6点钟开始面试,面试官不苟言笑显得非常专业,简单调试之后开始面试。

  • 先是常规自我介绍+项目
  • Glide缓存
  • 图片优化(讲了项目里面oss存储的取缩略图方法,还有Bitmap相关的decodeResourse方法相关)
  • Bitmap
  • Glide中的LruCache以及实现
  • 讲几个熟悉的数据结构(把整个Collections和Map讲了个遍)
  • LinkedList查找优化
  • 追问HashMap
  • TreeMap中红黑树
  • SparseArray
  • 算法题是ipv4地址转32位int输出(不会位操作符然后面试官提示用了乘2的方法)
  • ipv6
  • TCP
  • http几个版本的不同
  • https
  • 对称加密、非对称加密
  • RSA实现😇
  • 安卓中网络请求子线程回调UI线程怎么弄(runOnUIThread、Handler)
  • 多线程
  • 线程池
  • 操作系统中的线程竞争问题
  • synchronize
  • 自旋锁
  • volatile(原子性?)
  • CAS
    总用时90分钟。

这次面试依然感受到了字节面试官的耐心温柔与专业,卡住时面试官会引导问题的回答,总体感觉如沐春风,不知不觉就一个半小时了。面到一半面试官说看得出来我准备了很多(内心两行泪,确实是背地里刷了上千道面试题)

最后聊了聊部门的工作方向和工作时间安排,面试很顺利。

三面

  • 自我介绍,介绍了自己实习写的刷新加载的组件
  • 问我自己组件里怎么解决的嵌套滑动冲突,三个方面实现完美分发事件
  • retrofit 动态***里面如果传的不是 interface 怎么办,这块我不清楚,我就直接说不太清楚,然后说了 retrofit - 关于注解的处理
  • 注解生命周期,编译时注解解析
  • 你用过 weex,说下weex实现原理,我说我没有看过 weex 源码,但是我实现过一个动态页面渲染框架,说了下我的渲染过程和实现方案。
  • 最近想学的技术,说了音视频,但是因为准备秋招放下了
  • 为什么想学,说了自己之前做一个 APP,里面播放器无法使用没认证的 Https 请求,打算自定义一个播放器,在底层处理证书这块,然后在说了下不知道这样的方案可不可行。
  • okhttp 里面怎么认证的, 说了拦截器
  • ConcurrentHashMap 同步方案, 然后问了 CAS
  • 环状链表
    -隔了两天查到了到HR面的通知,内心又高兴又打问号,自己都不知道自己怎么过的。

HR终面

  • 询问了除字节跳动以外,还在看其他工作机会么?分别是什么
  • 字节、XXX公司、XXX公司,你的优先级是什么,为什么?
  • 实习薪资待遇是多少?你期望的薪资是多少?
  • 平时有什么爱好?
  • 了解职位需求吗?
  • 有没有想问的?

总结

我给大家的建议就是慢慢来,不管是社招还是校招,制定自己的计划,一定要有自己的知识体系,针对自己薄弱的地方进行强化复习,不放过任何一个细节。

在字节面试前我也准备了很久,刷了超多大厂面试真题,整理出了一份一线互联网面试最新全套真题解析,知识点整理出来分享给大家:

笔记内容全部免费分享,有需要完整版笔记的小伙伴微信扫描下方二维码免费获取哦

Java基础

1.静态内部类和非静态内部类的比较

2.多态的理解与应用

3.java方法的多态性理解

4.java中接口和继承的区别

5.线程池的好处,详解,单例(绝对好记)

6.线程池的优点及其原理

7.线程池的优点(重点)

8.为什么不推荐通过Executors直接创建线程池

9.不怕难之BlockingQueue及其实现

Android基础

1.Activity知识点(必问)

2.Fragment知识点

3.Service知识点

4.Intent知识点

性能优化篇

1.启动优化

2.内存优化

3.绘制优化

4.安装包优化

源码流程篇

1.开源库源码分析

2.Glide源码分析

3.Android面试题:Glide

4.day 20 面试题:Glide面试题

5.聊一聊关于Glide在面试中的那些事

6.面试官:简历上如果写Glide,请注意以下几点…

7.Glide OOM问题解决方法汇总

8.OkHttp源码解析

9.okhttp连接池复用机制

10.okhttp 流程和优化的实现

11.一篇让你受用的okhttp分析

12.OkHttp面试之–OkHttp的整个异步请求流

最新面试题合集

1.android事件分发机制,请详细说下整个流程

2.android view绘制机制和加载过程,请详细说下整个流程

3.android四大组件的加载过程,请详细介绍下

4.Activity的启动模式

5.A、B、C、D分别是四种Activity的启动模式,那么A->B->C->D->A->B->C->D分别启动,最后的activity栈是怎么样的

6.Activity缓存方法

7.Service的生命周期,两种启动方法,有什么区别

8.怎么保证service不被杀死

9.静态的Broadcast 和动态的有什么区别

10.Intent可以传递哪些数据类型

11.Json有什么优劣势、解析的原理

12.一个语言的编译过程

由于本套笔记干货内容过多,没有办法一 一展示,需要这份完整版《2022Android中高级面试题汇总》的朋友可以微信扫描下方二维码免费获取!希望这套笔记可以帮助到大家,让大家在面试的道路上畅通无阻!

最后

简历上写的东西一定要会,一般都是针对简历来提问的。如果在预习的过程中感到困难或者吃力,那就对了,等你熬过去了,就是胜利。最后,祝愿大家都能拿到满意的 offer。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值