写点什么

凭借一份“面试真经 pdf”,我四面字节跳动,拿下 1-2 级 offer

作者:Geek_c72458
  • 2022 年 10 月 10 日
    湖南
  • 本文字数:2274 字

    阅读完需:约 7 分钟

又逢“金九银十”,年轻的毕业生们满怀希望与忐忑,去寻找、竞争一个工作机会。已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。


然而,面试人群众多,技术市场却相对冷淡,面试的同学们不得不面临着 1 个职位 N 个应聘者的巨大竞争。


问:在这种现状下,如何才能收获又多又好的 Offer?


答:短期准备——刷面试题;长期筹谋——巩固核心技能。


面试题怎么刷?刷高频题、有深度的题、符合时效性的题。


核心技能如何巩固?先深入理解原理,再系统应用到实践。

前言

为什么要面试字节跳动?


近两年是中国互联网企业组织架构升级的大年,阿里、腾讯、小米、快手等知名互联网企业都进行了相应调整。2020 年 3 月 12 日,字节跳动成立八周年之际,宣布组织全面升级,而这一消息也彻底激起了我对字节跳动的期待。


实际上,我算是字节跳动名副其实的脑 x 粉,手机里的最多的 app 是字节旗下的,包括头条、抖音、西瓜视频、懂车帝。而字节跳动也是我最看好的互联网公司之一,因此我首先向字节跳动抛出了我的“橄榄枝”。

字节跳动面试经历(已拿 1-2 级 offer)

字节跳动一面:


  • 自我介绍

  • 介绍第一个项目


项目的目的,项目的整体架构,负责模块的简单介绍

功能权限的实现


  • 算法题:


给定两个数组,求两个数组的交集,且重复多少次,就打印几次

比如:[1,2,2,3,5,7]和[1,1,2,2,2,2,3,3,5,7,8],结果[1,2,2,3,5,7]


  • JVM 内存结构?

  • OOM 的场景?堆和栈的一些区别?

  • HashMap 的扩容机制?存储的方式?hash 后码相同时怎么处理?

  • 线程池是什么?怎么用?有什么好处?线程池的核心参数?

  • 数据库的索引结构?B+树的结构?与 B 树的区别?

  • Redis 了解过吗?Redis 的数据结构?缓存击穿是什么?怎么解决?

  • 事务的隔离机制?四种事务隔离级别的分别是什么意思,有什么区别?事务隔离机制里用了 AOP,是如何用的?

  • Linux 的 top 指令可以查看什么信息?top 中的 load 指的是什么?网络相关的指令用过哪些?查端口号用哪一个?

  • 乐观锁和悲观锁?在数据库里怎么实现一个乐观锁?乐观锁在数据库中的实现形式?

  • TCP 的滑动窗口机制?

  • Jenkins 自动化部署的流程?

  • 有什么问题要问?


字节跳动二面:


  • 自我介绍

  • 项目的需求背景,以及项目的架构,项目的实现细节

  • 数据库的第三范式

  • 有没有对自己开发的模块做过压测?如果让你去做压测,你会如何去做?

  • 如果数据规模增大几个数量级,可以有什么优化?


联合索引的使用,减少回表次数

Redis 缓存


  • 如何去设计缓存

  • redis 中常用的数据结构?缓存击穿和缓存穿透

  • 开源的 DevOps 平台用过吗,CICD 平台?

  • 算法题:拿糖问题


给一个数组{1,3,5,7,8,10},每个位置上数字代表每个位上有几个糖

不能拿相邻的糖,最终怎么拿最多的糖


  • volatile 关键字的功能

  • Linux 的 buffer 内存和 cache 内存

  • 虚拟内存、常驻内存、共享内存

  • 路由器,交换机工作在哪一层?

  • ConnectTimeOut ReadTimeout 异常的区别?Unknown host 是什么原因导致的?

  • 浏览器输入 www.xxx.com 最终展现网页,整个过程

  • 观察者模式

  • 说一下 zookeeper 和 ES

  • 对发展方向有什么想法

  • 你有什么想问的?


字节跳动三面:


  • 询问毕业时间,询问 GPA 和研究生研究方向

  • 项目具体细节,介绍负责的模块,项目的具体架构?

  • 什么是 DevOps?DevOps 的使用场景?

  • 微服务是什么?微服务的粒度?怎么去划分?

  • 询问项目的细节

  • 面对百万级的数据,你的模块需要怎么优化?

  • 开发时使用的技术?有没有深入了解?

  • 说一下 GC 算法?G1 和 CMS 分别是什么,区别?

  • 你还有什么问题?


字节跳动 HR:


  • 自我介绍,对公司面试的评价,实习时间

  • 为什么转专业?

  • 你认为你有什么优点?有什么缺点?有什么兴趣爱好?

  • 在团队中习惯充当什么样的角色?

  • 遇到过比较困难的事情是什么?觉得自己很幸运的事情是什么?

  • 对于未来的规划?有没有使用过公司的其他产品?有没有转正想法?

  • 你还有什么想问的?


字节跳动面试题答案:


能拿下字节跳动 offer,多亏这份“面试真经”

1.1 Java 面试真经


这份面试真经实际上是 Java 面试核心知识点的整理,文档里囊括的知识点是比较多的,非常齐全,每一个知识点的解析和讲解也非常清楚,看完之后基本上就摸清了现在面试会问哪些方面的问题,也会了解如何回答这些问题,对面试提供的帮助是非常大的。(私信“成长”领取)


  • Java 基础部分(基础集合类源码、并发编程、锁的实现、JVM 原理等)

  • 数据结构与算法

  • MySQL 数据库(索引结构、优化、事务、语句执行等)

  • 计算机网络

  • 操作系统

  • 拓展部分(开源框架源码、云原生组件等)



1.2 学习笔记


实际上,自己在复习 Java 的时候,也多靠一些大神的学习笔记,这些学习笔记个人认为是整理的非常好的,包括 SpringBoot、Redis、Tomcat、MySQL 调优等。


  • Spring Boot 技术总结笔记



  • Redis 技术学习笔记



  • MySQL 性能调优与架构设计



1.3 思维脑图(Xmind)


为了让自己更有条理性地去学习,也特意整理了一些思维脑图,思维脑图实际上就是一个知识框架,能够根据这些图来查漏补缺。整理了不少思维脑图,包括 Spring 全家桶、高并发多线程、JVM、Redis 以及 Dokcer 等。


  • 思维导图一览



  • 以 Spring Booot 为例?



1.4 算法刷题(LeetCode+算法的乐趣)


众所周知,字节跳动是一家最喜欢问算法相关面试题的公司,所以去到字节跳动,少不了的就是被问到算法内容,那么作为面试者,提前做好这些准备相当有必要,毕竟不好好准备一下算法题,是很容易挂掉的,关于算法方面,也没有捷径可言,最好的办法就是多刷题。


  • 算法刷题 LeetCode



  • 算法的乐趣



1.5 私藏的题库


总结

作为一名开发人员,我深知环境的变化是非常快的,也知道行业内人才辈出,竞争非常大,所以不及时地去补充知识,不了解最新的技术,不断地去充实自己,是很难跟上时代的发展,职业生涯也容易遭遇瓶颈,因此一名合格的程序员,要牢记“学无止境”这个理。


需要文章中配套资料的朋友可以——点击传送门

用户头像

Geek_c72458

关注

还未添加个人签名 2022.09.20 加入

还未添加个人简介

评论

发布
暂无评论
凭借一份“面试真经pdf”,我四面字节跳动,拿下1-2级offer_Java_Geek_c72458_InfoQ写作社区