字节六面,辜负了面试官给的机会,追悔莫及
本人今年 211 本科大三下,最近投实习,投了字节跳动的抖音,结果简述如下:
字节跳动抖音三轮技术面,抖音电商三面,两轮六面,为什么是六面呢?
第一轮第三面挂,之后被其他部门捞了起来,所以就是字节六面
首先把面经分享给大家,由于技术水平和经历的不同,我不敢保证我的面经问题对你有任何的参考性,但确实都是在真实的面试场景中遇到的,我所做的只是保证真实性和完整性。
字节跳动三轮技术
10月10日下午 抖音社交 一二三面 历时约 3 小时。
这份面经不仅仅列几个题目就完事儿,中间掺杂了一些个人的一些表现以及和面试官的互动,让大家能更完整地感受到整个过程。另外,大厂面试嘛,你懂的,面试官喜欢从一个点切入往深了问,所以在会有非常多嵌套的问题,我觉得这才是真正的面试场景,而不是一条一条堆砌题目,跟做考试试卷一样。
抖音社交
一面 60min
-
项目
-
volitale与synchronized的区别
-
手写单例
-
匿名内部类如何持有外部类对象
-
内存泄漏的概念
-
内存泄漏的场景
-
内存泄漏检测的工具
-
handler原理,sendMessage与sendMessageDelay如何保证Message放入MessageQueue中的顺序
-
两个Message相隔5秒,这5秒内线程会一直阻塞吗
-
自定义 View如何特殊处理wrap_content,padding的实现
-
MVVM和MVP 的区别(引出了一系列问题,不是很了解就直接说不了解比较好)
-
LiveData与RxJava的区别
-
LiveData生命周期感知如何实现
-
介绍RxJava
-
https与http的区别,中间人如何修改密钥
-
算法:二叉树z字形打印
二面 70min
-
项目
-
final、finally与finalize的区别
-
java开启一个线程的方式
-
Thread.start()与直接调用run()的区别
-
Java默认提供了几种线程池
-
thread{ i++ }执行10次结果,如何让i最后等于10
-
synchronized与reentrantlock区别
-
死锁
-
悲观锁乐观锁
-
gc垃圾回收
-
垃圾标记阶段,Python如何实现的断开循环引用
-
Retrofit返回的是什么数据类型
-
服务器返回的数据有哪些类型,为什么不能用xml类型返回
-
请求数据这个过程发生了什么
-
get与post请求的区别,get与post携带数据的区别
-
java注解
-
kotlin扩展函数原理
-
算法:两个链表相加
三面 50min
- main方法执行之前发生了什么
public class Main {
public static void main(String[] args) {
System.out.println(Main.class.getName());
}
}
-
System.out.println(“a”)将字符输出到屏幕发生了什么
-
双击QQ发生了什么
-
浏览器输入url发生了什么
-
根据前序遍历和中序遍历输出后序遍历
-
如果排期只有一周的任务,但是以我的能力需要两周才能完成,这个时候你会怎么办。
-
k个一组反转链表
抖音电商
一面 50min
-
实习学到的架构
-
MVVM
-
Dagger原理
-
livedata原理
-
进程和线程
-
操作系统IO模型
-
进程通信方式
-
管道通信原理
-
TCP协议如何实现可靠传输
-
UDP如何实现可靠传输
-
java创建线程
-
线程池原理
-
线程池拒绝策略
-
synchronized与reentrantlock实现方式的区别
-
AQS原理
-
handler原理
-
Retrofit原理
-
算法: 二叉树右视图 — 非递归实现
二面 50min
-
Navigation的优缺点
-
如何实现的自定义navigate方法切换fragment,如何让被覆盖的fragment感知到生命周期
-
gc如何判断垃圾对象
-
成员变量与局部变量的区别,局部变量的值一定是存放在堆中吗()
-
jvm类加载的时机
-
jvm类加载过程
-
双亲委托机制是什么
-
双亲委托机制什么时候会被破坏
-
内存泄漏是什么
-
volatile的作用
-
写一个死锁
-
算法:判断A是否是B的子树
三面 50min
-
自己是如何学习Android的
-
实习过程中做的需求说一下
-
实习过程中的难点说一个
-
实习过程中和哪些人接触的比较多
-
如何和别人沟通的
-
实习的收获
-
挑一个项目说一下
-
里氏替换原则
-
http状态码
-
http多路复用
-
数据库
-
拿了哪些offer
-
算法 汉字表示的数字转成阿拉伯表示。
面试阶段
从上面的面经中可以看到不同方向、不同级别的面试官各自的偏好不一样,因此对于不同的面试官,采取的策略也应有所不同。但我更想分享的是一些具有共性的地方,这些策略可以适用于绝大部分的面试场景,让自己获得更大的竞争优势。当然,所谓的面试策略,都是基于你前期充分的准备,不然都只是天方夜谭,毫无可行性。
策略一: 备好杀手锏
面试官一天可能要面5-6人,甚至十几人,那么你是否想过: 他凭什么对你印象更加深刻?
心理学有一个效应叫峰终效应,就是人在一个有限的活动当中,对一件陌生事物的看法大致由两个时间点所决定: 一个是高潮点,一个是结尾的点。
对面试而言,我认为同样是适用,具体来讲,和面试官的交流,其实也就是和一个陌生人的交流,如何来给他留下更深刻的印象?需要在高潮点展现自己,在结尾点保护自己,在面试的过程中适当给面试官一些和别人不一样的回答和见解,使之感到惊艳,而在结尾的时候,你说的话其实更容易被面试官记住,这个时候由于面试已经接近尾声,你可能没有当时那么紧张,这个时候需要适当的谨慎一些,不要彻底放松,避免不小心说出一些对自己处境不利的话。
其实,我更想强调的是前者,即如何将面试带上一个高潮点,并且让面试官感到惊艳。其实这并不是什么简单的事情,毕竟能惊艳的只是少数,那么如果才能做到这一点呢?
在面试前,不妨准备好自己的杀手锏
。什么是杀手锏?就是每当面试官问到相关的问题的时候,你能够有自信比 90% 的人理解得更深刻,回答更出色。以我自己为例,我准备的杀手锏并不少,HTTPS 所有加密算法
,chromium 进程 IPC 原理
,斐波拉契第 n 数的 logn 解法
,浏览器渲染过程
,vue 编译器架构
,vue 双向绑定
,快排以及手写 V8 排序
......
在其它基础知识都 OK 的前提下,这些杀手锏是你技术上的核心竞争力,这是你和其他人相比体现不可替代性的地方。当然,时间有限,不可能每个角度都能研究很深入,但如果你不准备,跟大家背一样的答案,很难从人群当中脱颖而出。
策略二: 适当暗示
面试的过程其实就是一个和面试官互相试探的过程,一方面是他对你提问,另一方面你需要给他一些信号,引导他去挖掘你的闪光点。
其实有两个时机可以发一些暗示的信号,一个是自我介绍的环节,这个环节中可以向面试官展示出你之前深入研究过哪一块的技术,指引他往那个方向问,另一个是技术细节的提问,可以在回答的时候适当发挥,大部分面试官是愿意听你展开的。
最后
面试之前一定要针对性地做好准备,简单来说就是刷题,跟着岗位需求去刷,跟着你的项目去刷,刷的越深越好。
在这里我把我自己面试之前的复习资料分享出来,该面试专题包括:
- Android基础知识点
- Android进阶知识点
- Android基础面试题
- Android中高级面试题
同时,我还收录了其他大佬整理的高薪面试题总结共五百道(包含答案),如下图
我本人整理的面试题如下:
有需要的小伙伴可以点击下方链接找我免费领取