百度aigc生产系统研发Go一面面经

# 10.28面经
26日常实习,百度meg下aigc生产系统研发工程师Golang方向。

## 自我介绍
语速太快了介绍完面试官把我的简历都没看完...
## 实习经历询问
复述了一下实习干了什么(中科院的一个小项目,其实非常水,但是就纯吹牛),询问了一些K8s,Docker,没有太深入询问。
## 项目询问
是跟着一本书做的项目,比较垃圾,描述项目整体有什么功能,描述完之后询问项目中的某个具体功能如何实现(用户验证),面试官见我的项目比较一般(确实是两个玩具项目),所以没有太大的兴趣。

## 八股拷打

### Golang拷打
一开始看我简历上有熟悉Java及其框架(确实学过但是忘得差不多)+了解Rust语言,遂询问为什么Java转Go(被迫...),讲讲Rust语言(讲了我依稀记得的Rust的生命周期lifetime,想讲ownership的时候忘了具体概念了,就说不太清楚了)

1. slice底层原理
    * 只知道长度,容量,具体扩容机制忘了。

2. Map的底层原理
    * 讲了讲原生Map为什么线程不安全,如何解决这个线程安全问题

### 数据库
1. Mysql事务是什么?事务级别?如何使用事务?
    * 吟唱八股
    * 后续询问了一个为什么可重复读是Mysql默认的事务级别,与什么有关系?(我答与Innodb,MyIsam应该没关系,至于为什么我又重复了一遍什么是可重复读,没再深究)
如果我没记错,没有问redis?

## 代码题

### Go语言题
```go
func main() {
    original := []int{1, 2, 3} 
    copied := original[:2]
    copied = append(copied, 4)
    original = append(original, 5)
    copied = append(copied, 6)
    original = append(original, 7)
    fmt. Printin("original===",original)
    fmt.Printin("copied==="copied)
}
```
询问上述代码的输出结果,其实就是slice的底层原理,正如上面所说我对这里不是很熟悉,开始一眼看过去以为是相等,但是想了想不对,印象中扩容没有那么简单,最后属于是蒙对了。
* 具体来说,当 append 导致切片的长度超过其容量时,Go 会自动为切片分配一个新的、更大的底层数组,并将原数组的内容复制到新数组中
* 扩容机制为2倍扩容,一方扩容后,指向的就是新数组,另一方还是指向底层的旧数组,所以最后结果不同了。

### 手撕题
**题目要求**
小明 有n天假期,每天他可以进行三种活动中的一种,每种活动给他带来的愉悦值各不相同。如果当天进行过某一种活动,第二天即不能进行这种活动,求n天后小明能获得的最大愉悦值
3
10 40 70
20 50 80
30 60 90
210

一道常见的动态规划,由于第一次面试时手撕代码,紧张地看了两分钟题目都没看懂...最后手撕出结果,出错,讲述思路的过程中改对了。

## 反问阶段
1. 寻求建议,指出项目有点简陋(这个我承认);
2. 询问部门职责
3. 询问会有几面(2-3)

## 总结
面试官人非常好,不紧不慢,态度温和,整个过程大概50分钟左右,问的题目算是简单的了,如果能进二面肯定就是狠狠地拷打了,继续努力吧,感谢百度给了这次大厂处女面的机会。

面试确实能给自己查缺补漏不少东西并提供未来努力的方向。
全部评论
啥时候面的大佬
点赞 回复 分享
发布于 昨天 17:47 天津

相关推荐

点赞 3 评论
分享
牛客网
牛客企业服务