前言

话不多说,但先介绍一下自己还是要的,末流985大学本科,自动化方面专业,自学Java和后端。
听朋友说字节今年后端投递的人非常多,竞争比较大,我本科不是CS,也只是做创新创业项目的时候接触过Java后端,后来看到有说客户端0经验的,就让别人帮忙内推了一下,没想到四面过了!!!哈哈哈

分享一下我的面试流程:

一面(45min左右):

  1. 自我介绍。(我就说了下自己的经历和项目)
  2. 问了一下平时怎么学Java的,做的项目有没有和Java有关的。
  3. 进程和线程的区别。
  4. http请求三次握手,四次挥手。为什么是四次挥手。
  5. https的工作原理和流程。
  6. 常用的网络状态码有哪些,50x是什么类型的错误。
  7. Java ThreadLocal的源码,举个实际的应用场景。
  8. java内存泄漏的问题,非静态内部类为什么可以访问到外部类的成员。
  9. 算法题:青蛙跳台阶,有多少种跳法。(后来问了一下我怎么去思考这个算法的,边界条件怎么设计的等

等)

注意:这次面试过程比较长,内容繁多,在文章中我基本上简述了,文章里的面试题完整版和我个人的总结方法经验(面试学习和刷题笔记),都整理有PDF完整版,有需要的可以关注我的公众号前程有光免费分享给你。

二面(60min):

  1. 自我介绍(为什么又让我介绍???可能是不同的面试官吧)
  2. 数据结构和操作系统方面平时有没有学习,觉得自己学的如何。(说是自学的,上了学校的一些课程)
  3. HashMap的实现原理,Java 1.8前后的主要区别是什么。
  4. hashCode()和equles()方法有什么关系,为什么重写了前者必须要重写后者。不重写会有什么问题。
  5. Java内存模型,内存共享等系列问题。(我以为是问方法区、堆、栈等这种内存划分,结果是指的内存共享方面的问题,面试官等我答完了才跟我说答错了,指导我回答正确的答案)
  6. 线程锁的问题,synchronized关键字,造成死锁的条件是什么。
  7. 算法题1:让我写几种生产消费者模型。(我写了三种实现)
  8. 算法题2: 版本号的对比,比如:1.7.93和1.8.1这种。
感觉二面官非常重视Java基础,而且问的问题也是由浅入深的,根据你的回答情况来选择下一个问题。

三面(60min):

  1. Java类加载的流程,双亲委派机制是什么,它是为了解决什么问题。
  2. Java GC回收的原理,新生代老年代划分机制。
  3. Java设计模式学的怎么样,静态代理和动态代理的区别,各有什么优势。
  4. 手撕三种Java 单例的写法。最优的写法是什么,为什么?(这道题答得不是很好)
  5. 给定一个长度为n的钢条,以及一个价格表p,p中列出了每英寸钢条的价格,将长度为n的钢条切割为若干短钢条出售,求一个钢条的切割方案,使得收益最大,切割工序没有成本。(《算法导论》上标准的动态规划例题。)算是运气比较好吧,面试官也没有在算法上特意刁难,问了一道典型的动态规划问题。
感觉三面官是所有面试官里最严肃的,问的问题也更注重基础,思考的更深入。

四面(HR):

HR面大概就是问了一下自己的职业发展方向啊,未来有什么计划啊

面试经历总结

相信大家都很好奇,我是非科班出生,又是后面自学的java后端,是怎么一步步从外包走到字节跳动的呢?

注意:下文主要是我个人的总结方法经验(面试学习和刷题笔记),都整理有PDF完整版,有需要的可以关注我的公众号前程有光免费分享给你。

1.自己规划好路线图,学会查漏补缺


把自己的知识点梳理好,基本问题不大

  • 并发编程:多线程,高并发,CAS,锁,容器,线程池底层
  • 性能调优:Mysql,IO及网络调优,算法调优,JVM
  • Spring全家桶:Spring,SpringMVC,MyBatis,IOC,AOP
  • 缓存数据库:Redis,mongoDB,MySQL
  • 分布式&微服务:SpringBoot,SpringCloud,docker,maven

2.根据自己规划的路线图,找出自身不足

JMM内存模型

  • 现代计算机模型基础理论知识
  • 什么是线程 深入理解Java线程
  • JMM Volatile 缓存一致性协议
  • 指令重排、可见性、原子性、顺序一致性、happens-beofre详解 as-if-serial

Mysql性能调优

  • Mysql索引数据结构深度讲解
  • B+树
  • Hash
  • 红黑树
  • Mysql 执行计划与索引讲解
  • explain工具深度使用
  • 索引优化最佳实践

Zookeeper

  • Zookeeper快速入门
  • Zookeeper多节点集群部署实战
  • Zookeeper典型应用场景实战
  • 服务注册与订阅
  • 分布式配置中心
  • 分布式锁
  • Zookeeper中znode、watcher、ACL、客户端API详解
  • Zookeeper客户端服务端源码剖析
  • Zookeeper迁移、扩容、监控详解

Dubbo

  • Dubbo企业级应用实践
  • Dubbo 调用模块详解
  • Dubbo容错机制与高扩展性分析
  • Dubbo RPC协议底层原理与实现
  • Dubbo设计原理分析与源码详解
  • Dubbo负载均衡策略分析
  • Dubbo管控后台管理与部署详解

Redis

  • Redis核心数据结构剖析
  • Redis在微博,微信及电商场景典型应用实践
  • Redis持久化机制与安全机制详解
  • Redis主从及哨兵架构详解
  • Redis Cluster集群架构实战及原理剖析
  • 集群数据分片算法及动态水平扩容详解
  • Jedis、Redisson客户端源码剖析
  • Redis高并发分布式锁实战
  • Redis缓存穿透,缓存失效,缓存雪崩实战解析
  • Redis布隆过滤器实现
  • Redis缓存设计与性能优化

这份面试文档当然不止这些内容,实际上像Spring Cloud、设计模式、Netty、分布式、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了,需要的可以关注我的公众号前程有光免费下载完整版。

写在最后的话

对于大厂面试,我最后想要强调的一点就是心态真的很重要,是决定你在面试过程中发挥的关键,若不能正常发挥,很可能就因为一个小失误与offer失之交臂,所以一定要重视起来。另外提醒一点,充分复习,是消除你紧张的心理状态的关键,但你复习充分了,自然面试过程中就要有底气得多。
再提醒一下,如果你想要学习,却无奈于没有干货学习资料,以上所有的资料内容都可以免费分享给你,关注我的公众号前程有光以上所有资料一次性打包带走!


前程有光
936 声望618 粉丝