字节跳动面试经验分享(非常详细)
发布时间:2021-03-05 来源:文档文库
小
中
大
字号:
字节跳动面试官一招差点KO我,一共面试了3轮(5年经验),艰难拿下2-2职级offer!
前言
我从大学毕业开始做Android开发,现在已经五年时间了,现在在山东老家济南做Android开发。这三年里面,也只是一心在做Android开发,其他语言接触的并不多,了解点JS之类的。现在感觉Android开始不像以前那样好做了,也可能是现在年纪慢慢大了,要考虑的事情变多了的缘故吧。
不知道以后应该何去何从,总是感觉做Android或者说做程序员一直处在一种不稳定之中,在一些中小公司里面,可能工作一年两年就因为各种各样的原因而离职。马上就要结婚了,该买房了。济南的房价一直在涨,而自己的收入还是这么不温不火的,加上这不稳定的工作,让人对于前途实在是乐观不起来。 再加上今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。但是,不得不说,这次字节的面试真的太难为我了,可以说是和面试官大战了3个回合,不过好在最后给了offer。
我个人情况是5年Android开发经验,字节跳动定级2-2(年薪是50-100w左右含加班费和股票折现,不含车餐房补)的样子,我是拿到了年薪60w+,13薪。下面是我的面试经历,与学习经验分享,希望能带来一些不一样的启发和帮助。
我与字节跳动面试官“大战”3回合,胜!
我的学习经验
1—4年大学
•
Java
无论什么级别的Android从业者,Java作为Android开发基础语言。不管是工作还是面试中,Java都是必考题。如果不懂Java的话,薪酬会非常吃亏(美团尤为重视Java基础)
详细介绍了Java泛型、注解、并发编程、数据传输与序列化、高效IO、容器集合、反射与类加载以及JVM重点知识线程、内存模型、JVM运行时内存、垃圾回收与算法、Java中四种引用类型、GC 分代收集算法 VS 分区收集算法、GC 垃圾收集器、JAVA IO/NIO 、JVM 类加载机制的各大知识点。
•
筑基必备
Android架构师筑基包括哪些内容呢: 1.深入 Java 泛型. 2.解深入浅出 3.并发编程
4.数据传输与序列化 5.Java 虚拟机原理 6.反射与类加载 7.高效 IO 8.Kotlin项目实战
大学1-4年 架构师筑基必备
•
学习笔记整理
架构师筑基必备 目录
架构师筑基必备第一章
自己工作1-3年,3-5年规划
我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。 这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段。
工作1-3年需要哪些知识呢?
◆ AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的区别; ◆ Binder:从Java层大概理解Binder的工作原理,懂Parcel对象的使用; ◆ 多进程:熟练掌握多进程的运行机制,懂Messenger、Socket等; ◆ 事件分发:弹性滑动、滑动冲突等;
◆ 玩转View:View的绘制原理、各种自定义View;
◆ 动画系列:熟悉View动画和属性动画的不同点,懂属性动画的工作原理; ◆ 懂性能优化、熟悉mat等工具 ◆ 懂点常见的设计模式
这个阶段须掌握图中“Android核心高级技术”;还要多阅读Android源码,阅读官方文档并尝试写技术文章,需要有一定技术深度和自我思考。在这个阶段的学习过程中,有2个点是比较困扰大家的,一个是阅读源码,另一个是自定义View以及滑动冲突。
如何阅读源码呢?阅读源码的时候不要深入代码细节不可自拔,要关注代码的流程并尽量挖掘出对应用层开发有用的结论。另外仔细阅读源码中对一个类或者方法的注释,在看不懂源码时,源码中的注释可以帮你更好地了解源码中的工作原理,这个过程虽然艰苦,但是别无他法,然而这个过程的收获也是其他学习方式不可替补的。
◆ PS:我这里也是整理了一份源码笔记,有需要的可以在我的【GitHub】里查看!
工作3-5年规划
五年又是区分程序员的第二个门槛。 有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西, 热衷于研究各种技术实现细节、看了N多好
书、写一些博客、在Github上分享技术。
这些人在五年后必然具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物。
◆ 继续加深理解“稍微深入的知识点“中所定义的内容 ◆ 了解系统核心机制:
1. 了解SystemServer的启动过程 2. 了解主线程的消息循环模型 3. 了解AMS和PMS的工作原理
4. 能够回答问题”一个应用存在多少个Window?“ 5. 了解四大组件的大概工作流程 6. …
◆ 基本知识点的细节:
1. Activity的启动模式以及异常情况下不同Activity的表现