七月脱产复习上岸Byte Dance,敢问:这不比“博人传”燃?

博主分享了自己从普通公司离职,决心脱产复习并成功拿到字节跳动Android开发Offer的经历。阐述了选择面大厂的原因,包括学习机会、新技术应用、职业发展和求职优势。详细记录了字节跳动的四轮面试内容,涵盖技术点如Android基础、面试算法、并发编程、设计模式等,并提供了全面的技术整理和学习资源推荐。
首先,我承认,我取这样的标题确实有点夸大其词了,不过offer是真的,本意还是为了帮助更多在面试中的朋友,还请刷到文章的朋友见谅一下。

一、自身情况

本人19年毕业于一家普通一本,考研裂开且没有实习经验,只做过两个项目会一点Android。

每天就是不断地投简历、刷面经,感觉自己都要抑郁了,最后勉强进入了一家学校合作的互联网公司写了2年的业务代码,每个月拿着9000的薪水还要被迫接受996,感觉未来没有希望。

但是在今年的五月中旬看着自己的同事跳槽涨薪拿着月薪18k+的薪水,我决定做出改变,离开这里!打算裸辞~

二、为什么要面大厂?

原因有以下几点:

  • 第一,你周围大概率会是很多很优秀的人。你从这些优秀的人身上可以学到很多的东西。包括他们做事的方法、解决问题的思路,以及他们的一些工作习惯。这些往往都会影响到你后续的职业生涯。另外,当你周围都是很优秀的人的时候,你会被这种气氛和环境所感染,你需要不断的努力才能达到这些人的平均水平。所以你不太敢懈怠,因为一旦懈怠,你可能就会掉队,你会有这种落差或者危机感。
  • 第二,大厂里会用到很多比较新的技术。可能有的技术还没有被大范围的推广,但是出于开源或者是公司资源的角度,都会涌现出一些比较好用的工具。即使你没有自己做这个工具,但是通过使用这个工具,你可能就能领会到其中的一些精髓。对你以后自己来去构思这些工具的时候,会提供一个比较好的基础。
  • 第三,有一个优势就是大厂里机遇更大。你如果跟对了leader,即使你在这个公司离职了,只要你跟老板有一个比较好的联络。那么等有机会的时候,你可以再次去投奔他。也就是说,除了你通过自己努力,有一个比较好的发展之外,你还多了一条路,就是你的老板有一个更好的发展前景。这样的话,当他成功的时候,你可以去投奔他,这样能够节约很多的成本。从概率上来讲,大厂的leader,发展好的概率更大。
  • 第四,还有一些客观上的好处,就是你有了大厂的经历之后,再去找下一份工作的时候会有一些天然的优势。尤其在涨工资定级方面,有过大厂工作经验,和只有小公司工作经验相比,估计大部分人都会选择前者。在一般情况下,这是一个非常大的优势。
当你明白这些以后,你才会明白为什么有一些程序员会挤破头都要挤进大厂,因为这些高福利、高待遇的工作每分钟都在提醒着我需要进步;

三、字节跳动四轮面经+offer

我并不是裸辞之后就直接去面字节的,因为有些技术点在工作中不常用就很容易忘记,所以我必须要重头过一遍,给了自己大概1.5个月(接近40天)的复习时间,从四大组件下手开始着手复习。

一开始准备地时候其实并不轻松,感觉自己的技术还停留在2年前刚毕业的时候。

对于大厂互联网企业的技术栈一概不通,每天废寝忘食的学习,不断地去提升自己的技术能力.也受到了很多同学的帮助,其中一位成功上岸字节的同学(大学室友)教给了我上岸字节的秘诀,并给了我内推!

在这里很感谢他;

字节跳动面经(一面)

  • string,equals,==有什么区别
  • AsyncTask内存泄露
  • dispatchTouchEvent,onInterceptEvent,onTouchEvent顺序,关系
  • onMeasure,onLayout,onDraw关系
  • 算法题,链表求和
  • 说说你对协程的理解
  • 协程怎么取消
  • 说说MVP与MVVM的区别
  • ...

字节跳动面经(二面)

  • 算法题,二叉树的最大深度
  • 如果android端和IOS端调一个接口,一个通了一个没通,你会如何解决
  • 如果android端和IOS端调一个接口,一个比较慢,一个比较快,有什么思路
  • ARouter的原理是什么?如果不用ARouter,你会怎么去解藕。接口?设计接口有什么需要注意的?
  • h5与native交互做过什么工作?
  • 登陆功能,登陆成功然后跳转到一个新Activity,中间涉及什么?从事件传递,网络请求,AMS交互角度分析
  • AMS交互调用生命周期是顺序的吗?
  • binder进程间通信可以调用原进程方法吗?
  • mvp与mvvm有什么区别?
  • token放在本地如何保存?如何加密比较好?
  • ...

字节跳动面经(三面)

  • 说说HashMap的原理
  • 说说Java的内存分区
  • 讲讲你对垃圾回收机制的了解,老年代有什么算法?
  • 说说你对volatile字段有什么用途?
  • 说说事件分发机制,怎么写一个不能滑动的ViewPager
  • 说说你对类加载机制的了解?DexClassLoader与PathClassLoader的区别
  • 说说插件化的原理,资源的插件化id重复如何解决?
  • mvp与mvvm模式的区别是什么?
  • JetPack组件用过哪些?lifeCycle的原理是什么?如果在onStart里面订阅,会回调onCreate吗?
  • 单例模式有什么缺点?
  • 说说App的启动过程,在ActivityThread的main方法里面做了什么事,什么时候启动第一个Activity?
  • 说说你对Handler机制的了解,同步消息,异步消息等
  • 说说你对屏幕刷新机制的了解,双重缓冲,三重缓冲,黄油模型
  • onCreate,onResume,onStart里面,什么地方可以获得宽高
  • 为什么view.post可以获得宽高,有看过view.post的源码吗?
  • DataBinding的原理了解吗?
  • 算法题:给定一个链表L1、L2,每个元素是为10以内的正整数,链表表示一个数字,表头为高位。 求两个链表之差,以链表形式返回

字节跳动面经(四面)

  • 介绍一下你们项目的架构
  • Rxjava是怎么实现线程切换的
  • Rxjava自定义操作符
  • ARouter的原理
  • ARouter怎么实现接口调用
  • ARouter怎么实现页面拦截
  • MVP怎么处理内存泄漏
  • OkHttp怎么实现连接池
  • 如果让你来实现一个网络框架,你会考虑什么
  • 你做过什么性能优化的工作
  • 热修复的原理,资源的热修复的原理,会不会有资源冲突的问题
  • ViewPager中嵌套ViewPager怎么处理滑动冲突
  • android源码中有哪些设计模式
  • 说说binder机制的原理
  • ...
面经虽然有参考性,但是最重要的还是你自身的技术水平如何,作为一个Android开发者,不仅要打好自身基础,更重要的是要建立起自己的知识体系, 你要知道知识是碎片化的,建立知识体系会让自己对技术的运用更加融会贯通,往“T型”人才发展;

技术上的成长往往是会花费很多时间的,但是利用这些时间帮你技术上更上一层台阶进入大厂,岂不妙哉?

这里,我对比之前复习过的Android知识点和字节面试的经验,给大家做了一个技术整理,分别包括了:

  • Java基础:JVM、String、内部类、多态、抽象和接口、集合框架(Hashmap、Arraylist)、单例、线程、Synchronized、Look锁、动态代理、引用
  • Android基础:四大组件、View、进程、Bitmap、屏幕适配、消息机制、线程异步、WebView。
  • Android扩展:Framework、AMS/PMS/WMS、Binder源码、Handler源码、ART、Apk优化、Hook、Proguard、架构(MVC/MVP/MVVM)、Jetpack、NDK开发、Rxjava、
  • Android源码:Leakcanary、Eventbus
  • 设计模式:面向对象六大原则、工厂模式、单例模式、建造者模式、观察者模式、适配器模式、策略模式、代理模式。

 数据结构与算法:

  • 线性链表
  • 查找:顺序查找、二分查找
  • 排序:交换类、插入类、选择类
  • 树、二叉树、图:深度优先(DFS)、广度优先(BFS)
  • 递归
  • 分治
  • 滑窗
  • 三大牛逼算法:回溯、贪心、动态规划(DP)
  • ......

PDF格式版:

完整目录版

《Android面试+提升手册》内容完整版我已经整理PDF模板了, 点击下方的推荐阅读即可进入;

推荐阅读:【2021年Android程序员面试+进阶知识点整理(加入免费获取PDF版)】

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值