前言
话不多说,但先介绍一下自己还是要的,末流985大学本科,自动化方面专业,自学Java和后端。
听朋友说字节今年后端投递的人非常多,竞争比较大,我本科不是CS,也只是做创新创业项目的时候接触过Java后端,后来看到有说客户端0经验的,就让别人帮忙内推了一下,没想到四面过了!!!哈哈哈
分享一下我的面试流程:
一面(45min左右):
- 自我介绍。(我就说了下自己的经历和项目)
- 问了一下平时怎么学Java的,做的项目有没有和Java有关的。
- 进程和线程的区别。
- http请求三次握手,四次挥手。为什么是四次挥手。
- https的工作原理和流程。
- 常用的网络状态码有哪些,50x是什么类型的错误。
- Java ThreadLocal的源码,举个实际的应用场景。
- java内存泄漏的问题,非静态内部类为什么可以访问到外部类的成员。
- 算法题:青蛙跳台阶,有多少种跳法。(后来问了一下我怎么去思考这个算法的,边界条件怎么设计的等
等)
注意:这次面试过程比较长,内容繁多,在文章中我基本上简述了,文章里的面试题完整版和我个人的总结方法经验(面试学习和刷题笔记),都整理有PDF完整版,有需要的可以关注我的公众号前程有光免费分享给你。
二面(60min):
- 自我介绍(为什么又让我介绍???可能是不同的面试官吧)
- 数据结构和操作系统方面平时有没有学习,觉得自己学的如何。(说是自学的,上了学校的一些课程)
- HashMap的实现原理,Java 1.8前后的主要区别是什么。
- hashCode()和equles()方法有什么关系,为什么重写了前者必须要重写后者。不重写会有什么问题。
- Java内存模型,内存共享等系列问题。(我以为是问方法区、堆、栈等这种内存划分,结果是指的内存共享方面的问题,面试官等我答完了才跟我说答错了,指导我回答正确的答案)
- 线程锁的问题,synchronized关键字,造成死锁的条件是什么。
- 算法题1:让我写几种生产消费者模型。(我写了三种实现)
- 算法题2: 版本号的对比,比如:1.7.93和1.8.1这种。
感觉二面官非常重视Java基础,而且问的问题也是由浅入深的,根据你的回答情况来选择下一个问题。
三面(60min):
- Java类加载的流程,双亲委派机制是什么,它是为了解决什么问题。
- Java GC回收的原理,新生代老年代划分机制。
- Java设计模式学的怎么样,静态代理和动态代理的区别,各有什么优势。
- 手撕三种Java 单例的写法。最优的写法是什么,为什么?(这道题答得不是很好)
- 给定一个长度为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失之交臂,所以一定要重视起来。另外提醒一点,充分复习,是消除你紧张的心理状态的关键,但你复习充分了,自然面试过程中就要有底气得多。
再提醒一下,如果你想要学习,却无奈于没有干货学习资料,以上所有的资料内容都可以免费分享给你,关注我的公众号前程有光以上所有资料一次性打包带走!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。