暑期实习面经
Java八股
Java基础
(1)讲讲HashMap,为什么要引入红黑树,为什么树化节点是8,为什么用红黑树不用其他的树结构
(2)HashMap线程安全嘛,哪些是Java中线程安全的类
(3)ConcurrentHashMap为什么线程安全,如何实现的
(4)你对反射怎么理解
(5)讲讲Java的自定义注解
(6)Java通过什么感知到注解的
(7)简单介绍Java集合类
(8)ConcurrentHashMap原理
(9)TreeSet原理
(10)如何对HashMap实现线程安全
(11)原子类的实现原理
(12)讲讲动态代理
(13)如何获取代理对象,JDK代理和CGLib代理的效率差异
(14)volatile关键字了解吗,它能保证原子性嘛
(15)HashMap和HashSet的区别是什么
(16)讲讲CAS
(17)讲讲ConcurrentHashMap中的原子操作有哪些
Spring
(1)讲讲依赖注入和IOC
(2)讲讲AOP,了解AOP的原理嘛,你知道AOP用了哪些设计模式嘛
(3)Spring中Bead的作用域了解吗
(4)Spring的三级缓存了解嘛
(5)Spring的循环依赖怎么解决的,如果真实场景中你确实遇到了循环依赖的问题,你该如何解决
(6)Java中事务是否可以嵌套(事务的传播机制)
JUC
(1)线程池的参数以及线程池的场景模拟
(2)Java你了解哪些锁,还有他们的应用场景
(3)实现线程安全的方式
(4)Synchronized和ReentrantLock区别
(5)ThreadLocal原理
JVM
(1)讲讲垃圾回收的常见算法有哪些
(2)讲讲Young GC、Old GC、Full GC、Mixed GC
(3)讲讲G1垃圾回收算法
(4)讲讲三色标记法的含义
(5)讲讲Java的类的加载过程
(5)讲讲Java类加载器
(6)讲讲JIT和AOT
(7)讲讲双亲委派机制
(8)讲讲JVM的组成部分
(9)讲讲JVM的内存区域是如何划分的
Java场景题
(1)HashMap不用红黑树如何处理长链表
(2)多个线程向数组里添加数据,你会怎么实现这个数组
(3)Java内存溢出如何排查
MySQL
MySQL基础知识
(1)讲讲MySQL的索引有哪几种实现
(2)MySQL索引数据结构是什么,B+树的排序是不是稳定排序
(3)MySQL使用索引是为了什么,什么时候用,什么时候不用,索引多了会怎么样
(4)索引失效的场景了解吗
(5)讲讲最左匹配原则
(6)MySQL为什么叫关系型数据库,Redis为什么不叫
(7)范式了解吗
(8)隔离级别有哪些,讲讲MVCC
(9)ACID是什么,讲讲他们在哪些应用场景上可以体现
(10)MySQL的事务你是怎么理解的
(11)MySQL引擎知道哪些,区别是什么
(12)讲讲binlog、undolog以及redolog
MySQL场景题
(1)有没有进行SQL调优
(2)给你出两个场景,索引是a,b,c 那么where a = xx and c = xx、where c = xx and a = xx这俩会用到索引嘛
(3)给你一个场景,10000000条数据,如何每次查询1000条,写sql
(4)MySQL如果存了大量的数据,如何优化它的查询
(5)MySQL中,事务A 对id = 1 的这行数据进行了1万次的修改,事务B过来查询id=1的这条数据。事务B的查询返回很慢,请问为什么
Redis
(1)Redis键的过期机制
(2)了解红锁嘛
(3)缓存雪崩,缓存穿透,缓存击穿的介绍和解决方案
(4)Redis集群的数据同步了解嘛
(5)Zset为什么用跳表而不是自平衡树
(6)Redis的高可用性知道怎么实现的嘛
(7)简单讲讲Redis的数据类型
(8)RDB和AOF了解嘛
RPC
(1)RPC了解吗
Git
(1)git常用指令
(2)git发生代码冲突怎么解决
JWT
(1)JWT以外,还了解哪些验证方式,JWT有哪些缺点
消息队列
RocketMQ
(1)优惠券过期为什么用RocketMQ延迟消息,有了解其他方案嘛
(2)RocketMQ延迟消息的原理了解吗
RabbitMQ
Kafka
消息队列场景题
(1)对于消息队列延迟消息,如果大量优惠券同时过期会出现什么,怎么优化
计算机网络
(1)讲讲TCP三次握手,为什么是三次不是四次,不是两次
(2)针对TCP的网络攻击有哪些
(3)如何应对SYN Flood攻击
(4)TCP的TIME_WAIT状态为什么要等待2MSL
(5)一条URL输入到浏览器后的整个过程
(6)第二次短时间内我又输入了这个URL,那么和第一次有什么区别
(7)域名解析的整个过程是怎么样的
(8)讲讲HTTP 1.0、1.1、1.2、1.3的区别
(9)讲讲TCP的拥塞控制,滑动窗口,拥塞避免等机制
(10)了不了解长连接和短连接
(11)讲讲TCP断开连接的过程
(12)你觉得应该客户端断开还是服务端断开TCP连接更合适
(13)http如何升级到https的,https和http相比,多了哪些安全相关的内容
(14)TLS握手的详细过程
(15)TLS握手中秘钥交换的详细过程,以及秘钥交换过后,双方是怎么加密通信的
(16)讲讲粘包和拆包
操作系统
(1)讲讲swap分区的一些交换的过程
(2)讲讲进程和线程之间的区别
(3)讲讲页置换算法吧
(4)讲讲进程间通信方式有哪些
(5)命名管道和匿名管道的区别是什么
(6)直到多路复用嘛,select、poll、epoll的区别是什么
(7)分段、分页是什么,如何去做的
(8)内存碎片讲讲
Linux
(1)Linux上一个进程异常退出了,怎么排查
(2)服务器如果出现网络问题,如何排查
(3)讲讲Linux的用户和用户组,如何在Linux设置用户和用数组
(4)Linux如何查看进程状态,端口占用
开放题
业务场景题
(1)项目中如果出现CPU占用过高如何排查
(2)缓存一致性(本地缓存、Redis、DB)怎么实现的同步
(3)出现了大量数据库不存在的请求打了过来,你怎么知道这些数据不在数据库里
(4)你怎么实现一个无锁队列
(7)如果一个服务器,每s有10w个用户上线(假设是qq号),你设计一个算法,如何计算5min内一个用户的重复登录
(8)那如果你用位图来实现这个功能,每个QQ号16位(md我理解成了16个1-10,结果她说的是2的16次方)你来计算一下上面那个场景下它的空间复杂度
(9)如果我想统计一个1个小时内,哪些用户登录了5-10次,请设计一下算法
(10)那如果我想统计每1个小时,哪些用户登录了这么多次呢?(就是10:11-11:11,10:12-11:12这种)
(11)假设原来一个16G的数据,放在32G的内存中,现在迁移到8G中会发生什么
(12)还是16GB的数据,假设一个8核CPU,原来8个线程,每个处理2GB的数据到服务端,现在变成2核的CPU了,那么会怎么样
(13)商品价格经常变动,不同datetime不同价格,用什么数据结构
(14)缓存数据库如何保证读写一致性
(15)项目分布式锁的key设计,锁粒度可以怎么优化
(16)如何设计一个秒杀系统,涉及超卖,负载均衡这些的设计思路是怎么样的
(17)如果要确保一个Redis里的热点数据的访问量同步,应该怎么做
开放问题
(1)讲讲项目的难点,如何克服的
(2)你的项目的局限性在哪儿,或者说瓶颈在哪儿
(3)你的项目当前的实现如果要扩展到分布式上,会出现什么问题,需要怎么解决,你的思路是什么
(3)为什么这么设计你的系统,即为什么用中间件,效果如何
(4)你是怎么实现的这个功能
(5)讲讲为什么要用这个中间件,不用别的(技术选型)
(6)你了解这个中间件的底层原理嘛
(7)讲讲对大模型的看法,未来工作中对工程和研究哪个更感兴趣
(8)未来三年的职业规划
(9)你有没有团队协作的经历
(10)平时兴趣爱好
(11)你的项目的需求是什么,为什么要做这个项目
(12)相比其他的类似的项目,你觉得你的项目的优势在哪儿
(13)AI用的多嘛,你对AI未来是否会取代程序员这个问题该怎么看
(14)AI Agent了解嘛
其他
(1)ORM框架是什么,Mybatis是半自动还是全自动,Mybatis plus呢,Hibnate呢
手撕
详见暑期实习面经手撕
(1)hot100:LeetCode 46. 全排列
(2)hot100:LeetCode 82. 删除排序链表中的重复元素II
(3)hot100:LeetCode146. LRU缓存
(4)hot100:LeetCode 279. 完全平方数
(5)LeetCode 61. 旋转链表
(5)快排
(6)冒泡及改进思路




