写点什么

闭关修炼 21 天,“啃完”283 页 pdf,我终于 4 面拿下字节跳动 offer

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

    阅读完需:约 7 分钟

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


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


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


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


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


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

写在开篇

闲话(长话短说):


今年的开端有些特殊,疫情的缘故对我们的生活造成了很大的影响,这对于一名求职者来说,更是添上了一堵“难墙”,尽管如此,但我们也不能够错失金三银四的机会,该抓住的就要抓住。现在很多互联网公司都已经采取线上面试的方式,所以提前做好准备,投简历、顺利面试,定会拿下心仪的 offer,而我也总算取得自己想要的成功,字节跳动成功 4 面通关。


个人情况介绍:


出生江南小镇,在北京读书,毕业之后就留了下来,学历是 211 本科,资历各方面都不错,因此在简历上也能够充分体现我自己的优势,年前海投简历之后,现在已经接到不少公司抛来的橄榄枝了,只要面试顺利,基本上是公司任你挑的状态了。

字节跳动 4 面核心面试题

01 Zookeeper 部分


  • CAP 定理

  • ZAB 协议

  • leader 选举算法和流程


02 Redis 部分


  • Redis 的应用场景

  • Redis 支持的数据类型(必考)

  • zset 跳表的数据结构(必考)

  • Redis 的数据过期策略(必考)

  • Redis 的 LRU 过期策略的具体实现

  • 如何解决 Redis 缓存雪崩,缓存穿透问题

  • Redis 的持久化机制(必考)

  • Redis 的管道 pipeline


03 Mysql 部分


  • 事务的基本要素

  • 事务隔离级别

  • 如何解决事务的并发问题(脏读,幻读)?

  • MVCC 多版本并发控制?

  • binlog,redolog,undolog 都是什么,起什么作用?

  • InnoDB 的行锁/表锁?

  • myisam 和 innodb 的区别,什么时候选择 myisam?

  • 为什么选择 B+树作为索引结构?

  • 索引 B+树的叶子节点都可以存哪些东西?

  • 查询在什么时候不走(预期中的)索引?

  • sql 如何优化?

  • explain 是如何解析 sql 的?

  • order by 原理


04 JVM 部分


  • 运行时数据区域(内存模型)

  • 垃圾回收机制

  • 垃圾回收算法

  • Minor GC 和 Full GC 触发条件

  • GC 中 Stop the world

  • 各垃圾回收器的特点及区别

  • 双亲委派模型

  • JDBC 和双亲委派模型关系


05 Java 基础部分


  • HashMap 和 ConcurrentHashMap 区别

  • ConcurrentHashMap 的数据结构

  • 高并发 HashMap 的环是如何产生的?

  • volatile 作用

  • Atomic 类如何保证原子性(CAS 操作)

  • synchronized 和 Lock 的区别

  • 为什么要使用线程池?

  • 核心线程池 ThreadPoolExecutor 的参数

  • ThreadPoolExecutor 的工作流程

  • 如何控制线程池线程的优先级

  • 线程之间如何通信

  • Boolean 占几个字节

  • jdk1.8/jdk1.7 都分别新增了哪些特性?

  • Exception 和 Error


06 Spring 部分


  • Spring 的 IOC/AOP 的实现

  • 动态代理的实现方式

  • Spring 如何解决循环依赖(三级缓存)

  • Spring 的后置处理器

  • Spring 的 @Transactional 如何实现的?

  • Spring 的事务传播级别

  • BeanFactory 和 ApplicationContext 的联系和区别


07 其他部分


  • 高并发系统的限流如何实现?

  • 高并发秒杀系统的设计

  • 负载均衡如何设计?


字节跳动面试题答案:


为应对字节跳动面试,我做了哪些准备?

(一)调整自己的心态,正确面对得失


面试中常见的问题,主要是心态,面试调整心态是第一位的,如何调整成最佳心态呢?很多求职者在面试过程中自己思路不清晰,语言不流畅,说话毫无逻辑,会不断否定自己,归根结底都是面试心态问题,所以调整自己的心态,正确面对得失是非常重要的,我的方法是给自己足够的心理暗示。


(二)提升技术,扩宽知识


对于程序员来说,要想成长为一名行业内的大牛大神级别的人物,那么唯一的办法就是通过学习,来不断提升自己的技术,扩宽知识,达到一定的高度和深度。那么如何提升自己的技术,扩宽自己的知识储备呢?


以下是我个人的一些做法,希望可以给各位提供一些帮助:


  • 21 天啃完 283 页的 pdf 文档


**Java 部分:**Java 基础,集合,并发,多线程,JVM,设计模式

**数据结构算法:**Java 算法,数据结构

**开源框架部分:**Spring,MyBatis,MVC,netty,tomcat

**分布式部分:**架构设计,Redis 缓存,Zookeeper,kafka,RabbitMQ,负载均衡等

**微服务部分:**SpringBoot,SpringCloud,Dubbo,Docker



  • 实战系列:Spring 全家桶+Redis 等



  • 其他相关的电子书:源码+调优



(三)刷题


如何刷题?这是很多现在面试者心中的困惑,我们都知道,面试前刷题是很有必要的,毕竟很多题目都有一定的共性,刷足够题目就能够做到举一反三,甚至在面试时,被问到原题,能够侃侃而谈,那么刷题如何进行呢?建议:最好找一些历年的面试原题,分专题来对自己进行训练。


以下是我私藏的面试题库:


结束语

对于大厂面试,我最后想要强调的一点就是心态真的很重要,是决定你在面试过程中发挥的关键,若不能正常发挥,很可能就因为一个小失误与 offer 失之交臂,所以一定要重视起来。另外提醒一点,充分复习,是消除你紧张的心理状态的关键,但你复习充分了,自然面试过程中就要有底气得多。


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

用户头像

Geek_c72458

关注

还未添加个人签名 2022.09.20 加入

还未添加个人简介

评论

发布
暂无评论
闭关修炼21天,“啃完”283页pdf,我终于4面拿下字节跳动offer_Java_Geek_c72458_InfoQ写作社区