腾讯实习
一面
- 反射是什么,使用场景
- 反射的性能问题
- ArrayList扩容
- HashMap 实现原理
- HashMap 实现线程安全
- ConcurrentHashMap 实现原理
- ConcurrentHashMap在哪里使用了CAS
- volatile原理
- synchronized原理
- G1收集器特性
- jstack
- MySQL事务隔离级别
- 可串行化隔离级别的实现原理,如何避免幻读的
- 索引的设计原则
- 索引的底层结构
- 为什么主键用自增不用UUID
- Redis为什么快
- Redis 两种持久化方式
- 写RDB文件的时候fork 调用的原理,为什么这样性能表现良好
- SpringMVC的工作流程
- SpringMVC的处理器拦截器的使用场景
- 链表倒数第K个节点
字节飞书实习
一面
- Java8之后的更新趋势
- G1收集器特性
- ConcurrentHashMap 版本更新及实现原理
- 数据库索引底层结构,为什么用B+树不用B树
- 数据库事务ACID特性是怎么实现的
- Redis除了做缓存还有什么用
- Redis 中用到哪些数据结构
- 项目里的Redis是单机的吗,如果单机的话 Redis 分布式锁有没有什么问题
- 分布式锁是怎么用的
- 分布式锁是怎么实现的,用了啥命令
- 为什么选用Kafka,和RocketMQ有什么区别
- 出现OOM问题怎么定位
- Socket如何处理并发连接
- TCP三次握手
- 死锁的出现场景
- 死锁有哪些危害
- 为什么用DDD,有什么优势
- 算法题:有效的括号
二面
- 算法:合并区间
- 觉得哪门专业课学得比较好
- 说说malloc的执行过程
- 说说操作系统中堆的结构
- 写过系统级别的代码吗
- 说说项目
- 为什么做这个项目
- 在项目中学到了什么
- 后端的知识会哪些
阿里云文件存储实习
一面
- 算法:LRU
- Redis定期键删除策略
- 项目为啥要用这些组件
- 项目中如何实现数据—致性
- 处理万一 Redis 崩了怎么办
- MySQL和Redis数据同步方式或相关组件
- MySQL索引
- 进程通信的方式
- 并发数据,QPS
- 这么低的QPS,是不是直接用MySQL就行了
阿里云块存储实习
一面
- 介绍两个项目
- 对线程安全的理解
- 什么是死锁
- 如何解决死锁问题
- Java 中创建线程的方式
- Java 中线程的状态
- sleep和wait的区别
- volatile 和synchronized
- 悲观锁和乐观锁
- CAS
- 三次握手过程
- 四次挥手过程
- 为什么需要三次握手
- TIME_WAIT状态
- 什么是拥塞
- TCP 拥塞控制
- TCP和UDP的区别
- 数据库类型
- 什么是数据库事务
- 事务隔离级别是什么
- 脏读、幻读、不可重复读
- MySQL常用存储引擎
- InnoDB和MyISAM的区别
- 分布式系统中的一致性问题
- CAP理论
- MySQL主从复制
字节抖音日常实习
一面
- 介绍项目
- Redis 分布式锁干嘛用的
- 消息队列怎么处理数据—致性的
- 处理数据一致性的消息发送,在Redis 分布式锁的范围内吗
- 分布式锁的过期时间是多长
- 事务性消息
- 进程和线程的区别
- 为什么进程上下文切换开销比线程大
- 进程和线程上下文切换具体需要保存哪些信息
- 内存分段管理中,包含哪些段
- —次HTTP的请求涉及哪些网络知识
- 有一个服务器,上面存储了很多静态的文件、图片等内容,如何设计来做优化
- LRU和LFU
- CDN协议
- 逻辑题:在原点上,第一次可以走一步,第二次可以走两步,以此类推。如何判断能否到达数轴上一个指定位置,如下标为100的位置。
二面
- 介绍项目
- 项目中有没有涉及到多数据库间数据—致性的处理
- MySQL各个隔离级别分别是怎样实现的
- MySQL中的锁有哪些
- MySQL中自增列是怎样实现的
- select in share mode和select for update的区别
- TCP四次挥手中的状态变化
- 为什么需要TIME_WAIT
- 流量控制和拥塞控制为什么我们都需要
阿里云弹性计算暑假实习
一面
- 抽奖策略是啥
- 游戏抽奖中,如何在要求十连抽保底的前提下,依然维持概率
- 规则引擎怎么实现的
- SpringBoot Starter 的配置文件
- 如果需要更轻量级的实现,如何替代你的 Kafka、Redis、Dubbo
- 分库分表系统的ID 如何选择
- 父子线程之间ThreadLocal的值如何共享
- ThreadLocal在线程池中的特殊处理
- 电脑突然卡一下是一般是什么指标会明显不正常:负载
阿里云ECS暑假实习
一面
- 为什么重写equals 还要重写hashCode
- StringBuiler、StringBuffer 和String
- HashMap、HashTable和ConcurrentHashMap
- 三次握手
- 两次握手可以吗HTTPS
- TCP拥塞控制
- 数据库事务ACID属性
- 索引种类
- b树索引和b+树索引
支付宝商家开放平台暑假实习
一面
- 介绍项目
- 项目基于什么需求,在其中做了什么
- 为什么做了一个分库分表组件,而不是其他的中间件如RPC
- 悲观锁和乐观锁
- 讲讲CAS
- Java中的四种引用级别
- 五种IO模型
- Java 中泛型的定义,应用场景
- 泛型的底层实现
- Java对象创建过程
- 分布式事务常见解决方案
- 常见的加密算法
- 在软件开发中,如何保证软件质量
- 白盒测试和黑盒测试
- Java中的单元测试框架
- 项目有什么功能
- 领域模型的架构
- 拿到一个商城系统的需求,如何去做
钉钉文档协同
一面
- 项目的背景
- 为什么做分库分表中间件
- 有没有在抽奖系统的层次上做什么校验
- 如果奖品或者活动没有库存了,会发生什么
- 用户有没有自己的可以参加活动的次数,如何做处理的
- 如果你来设计支付宝集五福活动,会怎样设计
- 在系统中有什么原子的操作吗
- 分布式锁的设计
- Redis的主从复制机制
- 既然Redis的从服务器复制不是同步的,那么你如何信任你的高可用缓存系统呢
- 分库分表中间件中如何用到扰动函数的
- 为什么分表操作中表的修改不在业务层做,而是反射获取表名并修改
阿里云日志暑假实习
一面
- 两个抽奖策略的应用场景
- 讲—下怎么用分布式锁的
- 数据库事务是什么
- 为什么奖品那里用数据库行锁,数据库行锁怎么保证线程安全的
- 垃圾回收机制
- 怎样减少Full GC的次数
- Java中的内存泄漏
支付宝搜索工程暑期实习
一面
- 介绍项目
- 为什么用消息队列
- 为什么用 Redis
- 为什么要用Redis 分布式锁,而不是原子的库存扣减
- Redis 字符串的实现
- Redis 哨兵模式和集群模式的区别
- 哨兵模式和集群模式分别满足CAP理论中的什么情形
- 用Executors创建线程池的问题
- 线程池的处理流程
- 商用垃圾回收器的演进过程