字节六面,辜负了面试官给的机会,追悔莫及

本人今年 211 本科大三下,最近投实习,投了字节跳动的抖音,结果简述如下:

字节跳动抖音三轮技术面,抖音电商三面,两轮六面,为什么是六面呢?

第一轮第三面挂,之后被其他部门捞了起来,所以就是字节六面

首先把面经分享给大家,由于技术水平和经历的不同,我不敢保证我的面经问题对你有任何的参考性,但确实都是在真实的面试场景中遇到的,我所做的只是保证真实性和完整性。

字节跳动三轮技术
10月10日下午 抖音社交 一二三面 历时约 3 小时。
这份面经不仅仅列几个题目就完事儿,中间掺杂了一些个人的一些表现以及和面试官的互动,让大家能更完整地感受到整个过程。另外,大厂面试嘛,你懂的,面试官喜欢从一个点切入往深了问,所以在会有非常多嵌套的问题,我觉得这才是真正的面试场景,而不是一条一条堆砌题目,跟做考试试卷一样。

抖音社交

一面 60min

  1. 项目

  2. volitale与synchronized的区别

  3. 手写单例

  4. 匿名内部类如何持有外部类对象

  5. 内存泄漏的概念

  6. 内存泄漏的场景

  7. 内存泄漏检测的工具

  8. handler原理,sendMessage与sendMessageDelay如何保证Message放入MessageQueue中的顺序

  9. 两个Message相隔5秒,这5秒内线程会一直阻塞吗

  10. 自定义 View如何特殊处理wrap_content,padding的实现

  11. MVVM和MVP 的区别(引出了一系列问题,不是很了解就直接说不了解比较好)

  12. LiveData与RxJava的区别

  13. LiveData生命周期感知如何实现

  14. 介绍RxJava

  15. https与http的区别,中间人如何修改密钥

  16. 算法:二叉树z字形打印

二面 70min

  1. 项目

  2. final、finally与finalize的区别

  3. java开启一个线程的方式

  4. Thread.start()与直接调用run()的区别

  5. Java默认提供了几种线程池

  6. thread{ i++ }执行10次结果,如何让i最后等于10

  7. synchronized与reentrantlock区别

  8. 死锁

  9. 悲观锁乐观锁

  10. gc垃圾回收

  11. 垃圾标记阶段,Python如何实现的断开循环引用

  12. Retrofit返回的是什么数据类型

  13. 服务器返回的数据有哪些类型,为什么不能用xml类型返回

  14. 请求数据这个过程发生了什么

  15. get与post请求的区别,get与post携带数据的区别

  16. java注解

  17. kotlin扩展函数原理

  18. 算法:两个链表相加

三面 50min

  1. main方法执行之前发生了什么
public class Main {

public static void main(String[] args) {

System.out.println(Main.class.getName());
}

}
  1. System.out.println(“a”)将字符输出到屏幕发生了什么

  2. 双击QQ发生了什么

  3. 浏览器输入url发生了什么

  4. 根据前序遍历和中序遍历输出后序遍历

  5. 如果排期只有一周的任务,但是以我的能力需要两周才能完成,这个时候你会怎么办。

  6. k个一组反转链表

抖音电商

一面 50min

  1. 实习学到的架构

  2. MVVM

  3. Dagger原理

  4. livedata原理

  5. 进程和线程

  6. 操作系统IO模型

  7. 进程通信方式

  8. 管道通信原理

  9. TCP协议如何实现可靠传输

  10. UDP如何实现可靠传输

  11. java创建线程

  12. 线程池原理

  13. 线程池拒绝策略

  14. synchronized与reentrantlock实现方式的区别

  15. AQS原理

  16. handler原理

  17. Retrofit原理

  18. 算法: 二叉树右视图 — 非递归实现

二面 50min

  1. Navigation的优缺点

  2. 如何实现的自定义navigate方法切换fragment,如何让被覆盖的fragment感知到生命周期

  3. gc如何判断垃圾对象

  4. 成员变量与局部变量的区别,局部变量的值一定是存放在堆中吗()

  5. jvm类加载的时机

  6. jvm类加载过程

  7. 双亲委托机制是什么

  8. 双亲委托机制什么时候会被破坏

  9. 内存泄漏是什么

  10. volatile的作用

  11. 写一个死锁

  12. 算法:判断A是否是B的子树

三面 50min

  1. 自己是如何学习Android的

  2. 实习过程中做的需求说一下

  3. 实习过程中的难点说一个

  4. 实习过程中和哪些人接触的比较多

  5. 如何和别人沟通的

  6. 实习的收获

  7. 挑一个项目说一下

  8. 里氏替换原则

  9. http状态码

  10. http多路复用

  11. 数据库

  12. 拿了哪些offer

  13. 算法 汉字表示的数字转成阿拉伯表示。

面试阶段

从上面的面经中可以看到不同方向、不同级别的面试官各自的偏好不一样,因此对于不同的面试官,采取的策略也应有所不同。但我更想分享的是一些具有共性的地方,这些策略可以适用于绝大部分的面试场景,让自己获得更大的竞争优势。当然,所谓的面试策略,都是基于你前期充分的准备,不然都只是天方夜谭,毫无可行性。

策略一: 备好杀手锏

面试官一天可能要面5-6人,甚至十几人,那么你是否想过: 他凭什么对你印象更加深刻?

心理学有一个效应叫峰终效应,就是人在一个有限的活动当中,对一件陌生事物的看法大致由两个时间点所决定: 一个是高潮点,一个是结尾的点。

对面试而言,我认为同样是适用,具体来讲,和面试官的交流,其实也就是和一个陌生人的交流,如何来给他留下更深刻的印象?需要在高潮点展现自己,在结尾点保护自己,在面试的过程中适当给面试官一些和别人不一样的回答和见解,使之感到惊艳,而在结尾的时候,你说的话其实更容易被面试官记住,这个时候由于面试已经接近尾声,你可能没有当时那么紧张,这个时候需要适当的谨慎一些,不要彻底放松,避免不小心说出一些对自己处境不利的话。

其实,我更想强调的是前者,即如何将面试带上一个高潮点,并且让面试官感到惊艳。其实这并不是什么简单的事情,毕竟能惊艳的只是少数,那么如果才能做到这一点呢?

在面试前,不妨准备好自己的杀手锏。什么是杀手锏?就是每当面试官问到相关的问题的时候,你能够有自信比 90% 的人理解得更深刻,回答更出色。以我自己为例,我准备的杀手锏并不少,HTTPS 所有加密算法chromium 进程 IPC 原理斐波拉契第 n 数的 logn 解法浏览器渲染过程vue 编译器架构vue 双向绑定快排以及手写 V8 排序......

在其它基础知识都 OK 的前提下,这些杀手锏是你技术上的核心竞争力,这是你和其他人相比体现不可替代性的地方。当然,时间有限,不可能每个角度都能研究很深入,但如果你不准备,跟大家背一样的答案,很难从人群当中脱颖而出。

策略二: 适当暗示

面试的过程其实就是一个和面试官互相试探的过程,一方面是他对你提问,另一方面你需要给他一些信号,引导他去挖掘你的闪光点。

其实有两个时机可以发一些暗示的信号,一个是自我介绍的环节,这个环节中可以向面试官展示出你之前深入研究过哪一块的技术,指引他往那个方向问,另一个是技术细节的提问,可以在回答的时候适当发挥,大部分面试官是愿意听你展开的。

最后


面试之前一定要针对性地做好准备,简单来说就是刷题,跟着岗位需求去刷,跟着你的项目去刷,刷的越深越好。

在这里我把我自己面试之前的复习资料分享出来,该面试专题包括:

  1. Android基础知识点
  2. Android进阶知识点
  3. Android基础面试题
  4. Android中高级面试题

同时,我还收录了其他大佬整理的高薪面试题总结共五百道(包含答案),如下图

我本人整理的面试题如下:

​有需要的小伙伴可以点击下方链接找我免费领取

【Android技术交流】icon-default.png?t=LA92http:// 有需要的小伙伴可以点击下方链接找我免费领取

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>