Golang开发实习生 - 日常实习 - 百度
#百度# #面经#
一面:
自我介绍和项目介绍,针对项目每个问了一个点
我第一个项目问了加密链接怎么加密的,我说用的商品的uuid,既是主键又保证唯一,因为数据量小无需考虑哈希碰撞问题(没延申讲点开放地址法和加密算法,有点可惜,当时有点紧张了)
第二个项目问了怎么做的IP数据库的校验,我说扒了14个网站的API做数据库校验。
项目相关的就问了这些,没了。
做一道题:LRU,编译器go1.19版本,还行,可调用第三方list包有自动补全功能,太棒了,这个ACM是我用过的最好的,之前的ACM都没这个智能,注意题目是面试官手打的,不会给那种官方题目描述什么的,得口头细问一些细节。
(本来是想让我写堆排序的,没怎么练过排序算法,立马跟面试官反馈不会请求换题了,排序那套东西练的太少了)
问GMP的调度是怎么调度的,具体操作(时间轮结构等,完整描述了程序创建和调度的过程,还行)
问GC具体的实现,标记流程和对象是什么 (记得没多少,答了个大概,不够)
MAP具体怎么扩容的,底层实现流程是什么?
Channel结构是什么样子的有什么字段有什么用?
Channel在项目中怎么使用的,什么情况下会panic什么情况下可以关闭什么情况下用有无缓存?
多个defer时的执行顺序?(我答了类栈结构,先进后出,说了示例)
defer在函数中执行是在return后还是前?(我答错了,可惜了)
redis的常见类型有什么?(没答全可惜了)
redis中的大Key问题怎么解决的?(我只知道Mysql的怎么解决,不知道redis的)
redis中的持久化怎么操作的?(答了RDB和AOF,但应该不大够,还有全缓存和混合持久化没答上来)
mysql中的innodb和myisam引擎区别?(答了很多,但估计面试官要一些底层不同处,没答上来,应该还有B树B+树区别之类的)
mysql的优化怎么优化,项目中如何使用的?(我答了不在简历中的项目,加了二级索引,没继续问了)
mysql的索引为什么用B+树而不是B树?(我只记得多了一个指针从左到右方便范围检索,其他不知道了,可惜)
mysql的几百万量级的数据如何删除?(我只记得大表删大数据复制出小表重命名,不能一次性删除,面试官说还有起一个后台任务慢慢删,没答完整)
mysql的死锁如何解决?(问处理方案,我只知道加一个中间proxy/中间层还有加超时机制,其他的就不知道了,可惜)
docker问了常用命令有什么?(我说了常用的docker ps -a,docker rm 容器id,docker exec -it 容器名 哪些系统是/bin/bash还是/bin/sh,docker-compose build .这些,说了自己项目推到哪里,没答全,可惜了)
docker问dockerfile中add命令和copy命令有什么区别?(抱歉没答上来,只用过copy没用过add,可惜了)
反问环节:问了具体啥业务,hr说是海外业务没细说,面试官介绍了一下几个业务线
总结: 恶补了面试的高频考点,几乎都用上了,太棒了。还是有一些八股小细节没对上,go基础,redis,还有docker方面的八股还得补补。
结果:年后寄了,虽然感觉八股面的算面过中比较好的了,但业务说是Mysql实战不够,挂了。