七月脱产复习上岸 Byte Dance,敢问:这不比“博人传
二、为什么要面大厂?
原因有以下几点:
第一,**你周围大概率会是很多很优秀的人。你从这些优秀的人身上可以学到很多的东西。**包括他们做事的方法、解决问题的思路,以及他们的一些工作习惯。这些往往都会影响到你后续的职业生涯。另外,当你周围都是很优秀的人的时候,你会被这种气氛和环境所感染,你需要不断的努力才能达到这些人的平均水平。所以你不太敢懈怠,因为一旦懈怠,你可能就会掉队,你会有这种落差或者危机感。
第二,**大厂里会用到很多比较新的技术。**可能有的技术还没有被大范围的推广,但是出于开源或者是公司资源的角度,都会涌现出一些比较好用的工具。即使你没有自己做这个工具,但是通过使用这个工具,你可能就能领会到其中的一些精髓。对你以后自己来去构思这些工具的时候,会提
供一个比较好的基础。
第三,**有一个优势就是大厂里机遇更大。**你如果跟对了 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 型”人才发展;
技术上的成长往往是会花费很多时间的,但是利用这些时间帮你技术上更上一层台阶进入大厂,岂不妙哉?
评论