滴滴用户增长技术部 | Go实习一面(OC)
时间:2023-9-26 14:00-15:00 60min
- 博客前后端都是自己做的吗?有没有做其他功能的增加?
- **Java/C++的线程和GO的协程有什么区别?**操作系统的线程和协程的区别,数量关系是怎样的?
- 为什么Go的协程比较轻量级?**从资源层次来看?**线程和协程的区别
- slice和数组有什么区别?
- 操作系统的进程有哪些信息?进程是什么东西?进程和线程之间的关系?进程和二进制文件是什么关系?
- cgroups主要是用来做什么?具体是如何对资源做限制的?到达边界怎么处理的
- 对数据库怎么优化的?在什么场景下优化?
- 并发控制模块是如何设计的 ? 怎么控制速度的?
- Go语言的锁底层是如何实现的?具体了解哪些原子指令?
- Gin实现的http功能和自带的http包实现有什么区别?为什么同样可以实现相同的功能
- 手撕:有三个队列,编号为1、2、3,现在要从队列中取任意数量的元素。要求:第一个元素从1号队列取,第二个元素从2号队列取,第三个元素从3号队列取,第四个元素从1号队列取…如果选中的队列中没有元素则从下一个编号对应的队列中取,3号队列的下一个队列是1号队列。
- 反问:大部门是用户增长,一些营销活动,促销的项目,投放券单,邀请有奖励,一些推广的业务,租车业务,显示各个租车用户商的信息,给用户达成交易。
感觉这次面试面的不怎么好吧,有很多问题都没怎么回答上来,对于操作系统的问题,不知道该如何回答,感觉对面试官的问题都没太理解,庆幸的是这次手撕做出来了,还是很不错的。
再次幸运的是10min不到,HR电话通知面试通过了,约了第二天的二面!!
滴滴用户增长技术部 | Go实习二面
时间:2023-9-27 14:00-15:00 40min
-
介绍一下青训营项目?
-
用户的密码怎么加密的?使用的是什么加密方法
-
对称加密和非对称加密?
-
使用gin,gorm‘怎么对代码进行分层?代码怎么组织的?
-
两段实习方向不一样,以后的规划?
-
实习想要得到什么东西?
-
进程和线程,协程的区别?
-
介绍业务
一面手撕的实现
package main
import "fmt"
func main() {
/*
有三个队列,编号为1、2、3,现在要从队列中取任意数量的元素。
要求:第一个元素从1号队列取,第二个元素从2号队列取,第三个元素从3号队列取,第四个元素从1号队列取...
如果选中的队列中没有元素则从下一个编号对应的队列中取,3号队列的下一个队列是1号队列。
*/
arr1 := []int{1, 5}
arr2 := []int{2}
arr3 := []int{3, 4}
res := help(arr1, arr2, arr3, 5)
fmt.Println("res = ", res)
}
func help(arr1, arr2, arr3 []int, n int) []int {
i := 0
cnt := 0
res := make([]int, 0)
for cnt != n {
if len(arr1) == 0 && len(arr2) == 0 && len(arr3) == 0 {
break
}
if i == 0 {
if len(arr1) == 0 {
i++
continue
} else {
res = append(res, arr1[0])
arr1 = arr1[1:]
cnt++
}
} else if i == 1 {
if len(arr2) == 0 {
i++
continue
} else {
res = append(res, arr2[0])
arr2 = arr2[1:]
cnt++
}
} else {
if len(arr3) == 0 {
i = 0
continue
}
res = append(res, arr3[0])
arr3 = arr3[1:]
cnt++
}
i = (i + 1) % 3
}
return res
}
评论区