2024.7.17
面试
- 自我介绍
- java 和 go 区别
- 介绍一下 go 写项目 (比较基础所以就没深挖)
java
- static 修饰的方法
- 常量怎么声明
- 接口能有具体实现吗, 能多继承吗
- 多态怎么实现的
- 垃圾回收
- 介绍 ArrayList 和 HashMap, 能动态扩容吗 (不改变内存地址)
- 链表和数组的查询和添加
mysql
- 和 MongoDB 区别
- 索引是什么
- 事务
redis
- 怎么持久化
算法题
- 算 $\pi$, 给个数字 $k$, 公式如下
$$ \pi = \sum_{k=0}^{\infty} \frac{(-1)^k}{2k+1} $$
反问
公司业务 (问了两遍都没听太清, 是个资产什么的, 一个没听过的词)
总结
一般, 大概率也不太会去
2025.02.18
二战一面
面试
- 自我介绍,为什么实习时间那么短
- make 和 new 区别
- defer 怎么用,执行流程
- goroutine 什么情况下会阻塞
- channel 相关,读写关闭的 channel,读写满的 channel
- map 结构,是否并发安全,并发安全的 map
- GMP 流程(先从全局拿,再从其他本地队列拿)
- go 并发原语
- 怎么实现 qps 限制
- go 的垃圾回收
- MySQL 聚簇索引和非聚簇索引,explain
- MySQL 实现乐观锁
- Redis key 的删除策略(回答的过期删除策略,但是感觉可能是想问淘汰策略?)
- Redis 实现排行榜,什么命令取前 10 名
- 一段代码多次请求 Redis,怎么优化
- RabbitMQ 实现订单超时
- 降级熔断怎么工作,多实例部署怎么共享失败次数,调用失败是服务级别还是实例级别判断,降级后怎么恢复
- 开发流程,测试覆盖率要求
反问
- 业务(toB 项目,客户埋点信息收集)
总结
降级熔断这块儿还是得再看看,之前一直没考虑过多实例的情况。Go 的垃圾回收机制之前也一直没系统了解过,只知道一些关键词,以及 Go 的一些相关数据结构还需要了解一下(或许需要总结一篇 Go 的八股文了?)。