青藤之恋一面
- 自我介绍
- 我们知道golang里头的map遍历是无序的,那该如何得到一个有序的遍历结果?
- map如果发生了并发读写,会出现什么问题吗?
- 那这个panic可以被捕获的吗?
- 并发安全是什么,那我们在实际的golang并发编程中应该注意什么,一般会怎么解决一些并发隐患问题?
- go中的切片是怎样进行动态扩容的?
- 那工作中如何尽量避免触发slice的扩容呢?
- 这段代码会输出什么?
func TestFunc() {
for i := 0; i < 10; i++ {
go func() {
fmt.Println("i = ", i)
}()
}
}
- 那你帮忙改成按预期打印出0-9的10个数,不需要考虑顺序
- 有没有更优雅的写法?
- 那假设我现在想讲并发数控制在最多只有3个协程在运行,而不是每次for遍历都起一个新的协程,该怎么改?
- 使用channel的时候有什么注意事项?
- (问一些网络相关的)比如说,通过一些抓包工具抓到了一些http接口,然后就可以写脚本模拟客户端请求(直接可以把一些cookie和body信息截下来),并修改其中的一些数据,那么这个时候服务器该怎么识别出这些请求入参是否被人篡改过?
- 有了解过什么常用的数据签名算法吗?
- 那假设现在我不篡改了,我把抓到的请求完全拷贝出来,多次发送?该如何处理?
- 有没有更优的方式?没走进service层就拦住?
- 算法题:链表两数相加 leetcode.cn/problems/ad…
- 反问
2023.12.13二面(交叉面)
- 自我介绍
- 为什么想要换工作
- 介绍一个你自己觉得做得最深入的一个项目,重点讲讲其中的亮点是什么?(过程中面试官围绕一些点也有提问,但主要是对业务规则上不大理解)
- 你们这个是实时算的还是一天一算?
- 收费周期是按返利报告的生成周期(双周报或月报),那要是预算超太多了没有问题吗?
- 这里头提到的乐观锁是怎么实现的
- 这里头用的数据库是什么?
- MySQL里头的事务是怎么实现的?
- 比如说MySQL突然宕机重启,数据会丢失吗?
- redo log里头存的是什么东西,它和binlog的区别是?
- Redis用过哪些数据类型,了解过它们的底层数据结构吗?
- 最近有在主动学习哪方面的技术?
- 有没有遇到过一些golang的问题?
- 代码题,实现LRU算法
请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。
实现 LRUCache 类:
LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存
int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。
void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;
如果不存在,则向缓存中插入该组 key-value 。如果插入操作导致关键字数量超过 capacity,则应该逐出最久未使用的关键字。
其中,函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。
2023.12.20 三面(青藤之恋部门leader面)
- 自我介绍
- 挑一个计费这边印象最深刻的项目展开讲讲(中间面试官围绕需求背景、业务规则细节还打断提问了不少,但是纯技术点的问题倒不多,探讨了比较久)
- 你觉得这个项目里头的难点是什么?
- 代码题
给定一个整数n,表示有0,1,2,3,...,n的连续n+1个整数
现在创建一个长度为n的数组,随机从前面n+1个数中取n个数放进去,那么还剩一个元素没有放进去
现在需要你找出这个元素是什么
要求时间复杂度为O(n),空间复杂度为O(1)
- 为什么想离职
- 反问
2023.12.22 HR面
- 老家哪里的?为什么考虑看武汉的机会呢
- 目前还没成家吗,是单身吗?
- 目前出来看机会的原因
- 之前有体验过我们这边所做的产品吗?对社交类的产品感兴趣吗
- 你现在看机会的话会比较关注哪些方面?
- 目前薪资以及期望薪资