字节跳动Java后端日常实习三次面试的面经(已OC)
基本介绍
目前就读于哈深大二,字节跳动一共面了三次,第一次一面挂,第二次三面挂,第三次终于OC了。
所以按知识分类整理这三次面试的面经,不然记不得哪个问题是在哪面问的。希望对大家有帮助。
内容概述
项目部分包括做的秒杀项目和IOC容器实现,后端知识包括Java语言,设计模式,JVM,数据结构与算法,操作系统,计算机网络,MySQL,Redis和Spring框架。还有算法题,智力题
算法题
手撕快排
实现一个单例模式
二叉树的层序遍历
实现生产者消费者模型
字符串的最长回文子串
计算一个二进制数bit为1的个数
寻找两个有序数组的中位数,不能合并。
智力题
两个人投骰子,先投的人赢的概率
36匹马,6个赛道,最少赛几次选出前三名
秒杀项目
描述项目从用户注册到付款的过程?(我是分成流量优化,故障恢复,处理异常请求三个部分来介绍)
如何处理超卖?
如何保证缓存和数据库的一致性?(消息队列RocketMQ)
如何保证Redis扣减库存和发送消息的一致性?
如何保证消息队列的可靠性?
Redis如何保证查询和扣减的安全(LUA脚本)
如何保证消息队列消息不重复消费?
如何保证下订单和扣减库存的一致性(消息队列和事务)
总结:感觉基本都是秒杀项目的八股,还有对项目的熟悉程度。
IOC容器
IOC容器反射创建对象是否是我们要的对象(不知道,可能是代理对象?)
IOC容器的类加载?(双亲委派)
如何解决循环依赖?
为什么不能解决构造函数循环依赖?
思考一下怎么解决构造函数循环依赖?
Java语言
Object类中有哪些方法?
==和equals?(麻)
Atomic类底层原理?Unsafe类在硬件层面的实现?
反射创建对象是否是我们要的对象?
说一说Java反射?
了解Java的IO模型吗?(不知道)
分布式?(不知道)
设计模式
了解的设计模式?
设计模式六大原则?
单例模式,静态内部类实现和枚举实现?
JVM
JVM工具?(jps那些)
Java内存区域?
堆外内存属于JVM吗?
Java如何回收类?
回收类的场景?
双亲委派的原理?
如何破坏双亲委派?
双亲委派的好处,场景?
了解的Java垃圾收集器?
Java的垃圾回收算法?
数据结构与算法
了解的排序函数?
说一下快排的过程?
操作系统
死锁?
如何避免死锁?(银行家算法,破坏死锁的条件)
进程和线程的区别?
进程的调度?
进程的同步?
进程的通信?
计算机网络
你了解中间人攻击吗?
了解HTTPs吗?
HTTPS如何实现身份认证?
HTTPs发送公钥时为什么要hash?(不知道=-=)
HTTP get和post区别?
HTTP2.0和http1.1在请求页面时有什么区别?(服务器推送)
输入URL过程?(背麻了)
OSI计算机网络分层模型?
TCP为什么要四次挥手?
四次挥手为什么要等待2MSL?
TCP的拥塞控制?
Redis
Redis为什么快?
Redis的数据类型?
Redis字符串类型项目怎么使用的?
如何解决缓存穿透,缓存击穿,缓存雪崩?
MySQL
MySQL索引的实现?
为什么用B+树?
什么情况下要加索引,什么情况下最好不加索引?
如何优化Join语句?
MySQL的binLog是如何使用的?
MySQL的隔离级别?
什么是事务?
什么是原子操作?
Spring框架
了解SpringAOP吗?
HR面
最近在玩什么游戏?(老头环)
遇到打不过的boss怎么办?
会查攻略吗?
玩游戏更重视体验还是赢?
什么时候入职,实习时长?
喜欢coding吗?
为什么选择后端?
加入字节跳动能为你带来什么?
总结
感觉一面问常规八股,二面会进行深挖,三面会出思维题,然后考前两面没有问到的知识或项目。
都是常规八股,好好看面经准备都能回答上来。
面试经验
感觉日常实习面试难度不高,只要肯背都能回答上来,算法题大部分也是常规都刷过的。还要看能不能遇到好的面试官。
大家在面试的时候千万不要因为紧张或者心情的原因不想说话,不管什么心情紧张不紧张都要多说,就是记住自己是来吹牛的,还有自己不说没人知道你会。
学习经验
看书,看官方文档,面向面试学习。
#java面经##字节跳动#