字节面经1
1面 7.15 50min
- 怎么理解微服务
- 微服务的缺点
- 微服务之间怎么做负载均衡
- Oauth2基本流程、原理
- 登录模块是怎么做的
- cookie和session的区别
- 购物车为什么用Redis存,是永久存储吗
- 为什么购物车多读多写
- Redis怎样清除过期key,有哪些策略
- lru是怎样的过程
- Redis字典底层怎么实现的
- hashtable是怎样实现的
- ziplist怎样实现的
- 普通的哈希表怎样实现的
- 哈希表怎么扩容
- 使用MQ的好处
- MQ解耦和微服务解耦的区别
- 算法:最长回文子串
- https建立连接的过程(SSL/TLS协商的过程)
- 对称加密和非对称加密的优缺点
- 为什么要区分内核态和用户态
- 什么时候从用户态切换到内核态
- 你编程的情况下,系统调用什么时候会发生
- 反问:业务,开发语言,表现,对应届生的要求(重点是基础和算法)
- 面试体验不错,但是项目挖的有点深
2面 7.19 1h
- 手写单例模式
- volatile什么作用
- 多线程的几种实现方式
- 四种方式的区别
- 锁用过哪些
- 排它锁什么意思
- 自旋锁什么意思
- CAS相关
- MySQL可以不指定主键建表吗,背后的逻辑是什么
- 聚簇索引和其他索引有什么区别
- 建唯一索引,插入数据时是怎么处理的
- 重复插入会报错,是怎么处理的
- 不同事物隔离级别的实现
- 以前没有实习过吗
- lc40 组合总和II
- 反问:部门怎样培养新人,刚进来做什么(学基础,语言和中间件,做demo),大概多久做需求(1周到1个月不等,看学习情况),框架和中间件以开源的为主还是以自研的为主(自研的)
3面 7.26 1h
- 有在实习吗
- 面试通过后可以实习吗
- 做项目的过程中遇到过什么问题
- 内存泄露具体发生在哪
- 什么情况下会出现多线程访问
- 缓存穿透,怎么解决 (好像一紧张说成缓存击穿了,面试复盘的时候才发现。。。)
- 缓存雪崩,怎么解决
- 缓存与数据库数据一致性
- 超卖问题怎么解决的
- 集群环境下,Redis内存里的数据怎么保证一致
- 算法:给定一个字符数组,和一个字符串,在字符串里找到任意一个完全由字符数组组成的子串,字符顺序无所谓(滑动窗口)
- 反问:面试通过还有面试吗,新人入职有培训吗,技术氛围怎么样