面经

【挂】百度 - 推荐工程

一面 7.22

  • ConcurrentHashMap原理,怎么做并发控制
  • 为什么用线程池,多个线程不好吗,线程太多有什么问题,只是oom吗?
  • vector在栈还是堆,删除元素怎么搞,底层怎么实现
  • map和unordered_map原理,底层实现
  • CAS线程安全谁来保障的
  • shared_ptr线程安全吗,什么情况下不安全(多线程赋值?),引用计数为什么要是原子的
  • 进程线程区别
  • 页表为什么要是多级的,浪费内存,多级页表就不会浪费内存吗
  • 共享内存怎么实现
  • RPC的原理,介绍
  • 设计模式了解吗,使用过哪些
  • TCP三次握手,为什么不可以是两次
  • seq和ack的作用
  • 浅拷贝和深拷贝
  • lc160 链表公共结点

二面 7.26

  • directIO知道吗,原理,有什么问题
  • epoll原理,io多路复用是什么
  • 异步io知道哪些
  • 文件读写的过程
  • page cache是什么,有什么问题
  • raft原理
  • clickhouse副本如何保证一致性
  • 锁是怎么实现的,锁会一直自旋吗
  • protobuf和json优缺点
  • protobuf压缩原理
  • protobuf反射原理
  • atomic int如何实现原子的,为什么要有这个命令,mem order是啥
  • cas原理
  • 为什么要有virtual析构函数
  • 线程池参数,一般选择多少线程
  • rpc的原理知道吗,rpc框架,参数如何设置
  • 单点故障时,rpc服务应该怎么做保证可用性
  • redis为什么要有aof和rdb
  • redis rehash过程
  • redis有哪些数据结构
  • redis切片了解吗
  • 一致性哈希
  • cpu占用率高怎么看,怎么解决

滴滴 - Java后端金融

一面 7.26

  • 线程池有哪些类型,为什么用线程池
  • 接口的延迟
  • 用的什么定时任务框架
  • 为什么用ConcurrentHashMap不用redis
  • ConcurrentHashMap oom有什么解决方法
  • JWT鉴权
  • 怎么实现延迟任务的,订单取消
  • 用的什么RPC框架
  • 外卖项目框架
  • 优惠券怎么实现的
  • SpringBoot注解用过哪些
  • SpringBoot自动装配原理
  • spring-starter的原理
  • ConcurrentHashMap 1.8前后的设计
  • MyBatis二级缓存
  • IOC原理
  • ReentrantLock的unpark
  • mysql表设计的注意事项
  • 通过反射创建对象的方式
  • explain能看到哪些字段
  • 手撕:二分查找

二面 7.29

  • 如果端上12:00-12:10发生网络故障,数据会丢吗,如何处理
  • RPC用什么序列化?
  • 手撕:八皇后

三面 7.29

  • clickhouse为什么适合olap,有什么好处
  • 手撕:版本号相加,例如0.0.1 + 1.1.1

【挂】科大讯飞 - 教育BG

一面 8.21

  • 线程池coreSize > maximumSize会以哪个为准,这个人写错了
  • jvm新生代和老年代比例,怎么设置
  • Collection有哪些,List,Queue是接口吗,是的
  • ck的物化视图参数,多久更新一次
  • ck列存,为什么快
  • redis存什么
  • 项目遇到的最大问题
  • 对象创建过程

【挂】腾讯 - 天美

一面 8.23

  • 双重锁检测为什么要用volatile
  • 怎么实现定时器

【挂】字节 - 抖音

一面 8.22

  • 项目里为什么要用ConcurrentHashMap,到底是怎么更新的
  • 订单如果是每分钟的定时任务的话,每分钟执行一次会不会出现有一个订单是超时了16分钟取消的,如何解决
  • 双写一致性,如果在更新数据库后服务宕机了,缓存没更新怎么办
  • 手撕:设计一个元角分转换工具类

二面 8.29

拼多多

一面8.31

  • 手撕:m个元素分成n组,每组至少为1,不要重复例如m=4,n=2,可以分为1,3和2,2
  • 为什么用ConcurrentHashMap
  • 实习的项目,如果几个服务实例之间缓存没同步怎么办
  • 动态代理是什么,一般有哪些,怎么用
  • 单测怎么用
  • https加密介绍一下
  • utf-8编码,utf-16编码知道吗(不会,pass)

【挂】腾讯云

一面 9.2

  • lsm tree

阿里云

二面 9.2

  • 怎么检测java程序死锁
  • fork流程
  • 知道namespace和cgroups吗
  • java内存泄漏知道吗
  • java gc
  • map遍历方式

虾皮

9.7 一面

  • 三次握手四次挥手
  • 进程线程区别
  • tcp拥塞控制
  • tcp重传到上限后如何处理
  • 快排的最坏情况
  • jvm如果一次性申请32G的对象会怎么样
  • 线程池优先级调度怎么搞
  • jvm小对象大对象怎么分配
  • 旁路缓存如何优化,如果写比较多,缓存一直在失效,如何解决
  • ConcurrentHashMap原理
  • tcp怎么保证有序
  • protobuf怎么存,底层
  • 怎么判断图有没有环

得物

9.7 一面

  • String为什么是不可变的
  • hash冲突怎么解决
  • finally一定会执行吗
  • redis的key没过期会被删除吗
  • redis为什么快