日常实习-百度MEG-达人商单面经及疑惑

面经-日常实习-百度MEG-达人商单

一面:

自我介绍

项目介绍:反问项目

  1. 缓存与数据库一致性:“Cache-Aside” 时,你提到延迟双删,延迟双删的时机?(1)面试答:第一次,先更新DB,后删除缓存 第二次:定时时间后,再删除缓存--------感觉面试官觉得不好,搜了下AI(2)AI答:延迟双删,采用先删除缓存,再更新数据库;更新后,过段时间再删除
  2. 你说是为了避免两次缓存击穿,所以选择了订阅Binlog实现删除缓存操作,讲一讲Binlog等MySQL日志?(1)undo-log 讲了存在Buffer Pool,和数据页脏页一样,提交事务后,再存入磁盘 ----- 没理好后面怎么讲的思路,犹豫了一下,面试官不想听这个(2)面试官让我讲一讲redo-log,讲redo-log是物理日志,问我Binlog是什么日志,我说是二进制----- 想讲的太多,卡壳了,想仔细讲:redo-log是通过日志序列号参与实现崩溃恢复,面试官直接不让我讲redo-log了,问Binlog(3)面试官是想看看,我到底知不知道Binlog的模式:SQL,ROW,混合发现我没回答上来,面试官讲解了一下Binlog日志,切换模式,各个日志不一样
  3. 我看你项目中用到了“雪花算法”,讲一讲雪花算法是怎么实现的?(1)很多实现,好久没复习一时间忘记了,简单回答了雪花算法实现分布式ID,可以用随机数,也可以用时间戳(2)详细讲了采用时间戳的雪花算法,会出现“时间回拨”的问题:而我自己的雪花算法生成分布式ID:沿用过失的时间戳,这个时间戳的序列号,序列号分配完了,就采用下一个时间戳-------- 继续紧接着问其他的了?疑惑:答得不到他想要的?

八股文:

  1. 讲一讲MySQL的隔离级别吧?三个问题 ------> 四个级别 ------> ReadView 快照 使用 区别 ------> 反问还需要细节讲哪些嘛?面试官,紧接着又问其他的了
  2. Golang new make 区别?一个基本类型:只分配内存,一个引用:既分配,又初始化
  3. 讲一下实现协程池的思路?见过别人的Java面经,没想到Go也问(1)Channel 有缓冲管道 作为信号量 实现:有多少用多少,超容量就等待(2)还有其他实现嘛?没想到,硬挤了 for创建固定数量协程 。面试官提示:平常用过sync同步包嘛?回答:sync.WaitGroup 利用 Add Done Wait 实现
  4. 知道 sync.Context 有哪些种类嘛?空白:Backgroud Todo 带值:WithValue 带取消:WithCannel 带时间戳,用于超时的:WithTimeOut
  5. 协程之间的共享操作,你了解嘛?channel 并发安全,用管道传Mutex 互斥锁 同步串行,实现共享-------- 还有嘛?atomic 原子操作包,实现共享------- 讲了以后,感觉面试官觉得还有,但没接着问了
  6. 从URL讲一讲怎么访问到后端?讲到TCP三次握手,反问:TCP三次握手流程 -----跟着 SYN-SEND SYN-RECV ESTAVBLISHED 客户端与服务器状态变更,讲了一下

问回项目:

  1. 联合索引,用了,但查询仍慢,发生了什么?没符合最左匹配原则,索引失效
  2. 索引失效还有哪些场景?不太记得了,一个个想,面试官一个个质疑我跟他讲自己能想到的就这些,然后讲了优化器觉得全表扫描优于走索引,就会索引失效然后就接着问下一个问题了
  3. 简历上看你知道操作系统,讲一讲项目部署到Linux,怎么排查问题,高内存占用啥的?(1)背过,但当时TODO了,忘记重新看了 --- 就记得一个PS 查看端口号我说我平常就看看Docker上,测试API后的弹出的日志,没怎么接触过。(2)追问:几个G的日志,该怎么看?答不上来面试官说,不为难了

算法题:

  1. SQL题:(1)第二高的分数 limit 1 offset (2)分数大于90的科目和数目, group by count
  2. 实操题: map[int]string 有序打印 Key (考察是否了解map随机遍历)随机遍历,将Key放入切片,对切片排序后,再打印
  3. 三数之和 秒了(补充讲了,灵神的另外两个优化思路)

反问

项目部署到Linux,怎么排查问题,高内存占用啥的,这个问题答案是什么?

面试官:你是在反问我嘛?既然你想知道,我就勉为其难告诉你了

PS---->TOP----->主要看日志 ------> vim 小文件 , less 大文件 配合 grep

二面

八股拷打:

  1. Linux 系统 指令 你平常用哪些?讲了一些基本的 和 一面时的问题排查 和 查看大日志文件------ 没接着问了
  2. 问我平常怎么用过哪些MySQL指令?------ 抛砖引玉,看我答什么,问什么。根据我答的考察了:常用索引类型,底层结构,查询语句的执行顺序,索引怎么设置索引,索引失效场景
  3. 几十个列的表,怎么设置索引?每个列都是常用列 ----- 答:先排除频繁修改的
  4. Group by 怎么使用索引?或者说,你了解使用索引可能出现的问题嘛? ------- 答:索引本身是讲列存起来,列太多,有些列值太大,效率下降
  5. Group by,Order by,Where 执行顺序?这里有点记得不清了: Group by ----> Order by----> Where ----> 列
  6. Where IN 与 Where >= 索引失效嘛?
  7. 分页查询,Limit 很大数 offset 小数 会出现索引失效嘛?
  8. 数组,切片,map 区别?简单讲了讲底层数据结构,面试官想看我了不了解map的底层内存分配,为什么Golang map采用无序遍历?

算法题:

  1. 回文字符串,至少两个实现?双指针,对称性,翻转 ;一时间只想出来三种实现
  2. 两个1h蚊香,怎么得到15min的计时?只答出来,第一根首尾都点,第二根操作没答对:第二根一开始就点,第一根烧完,第二根尾部再点(我想着直接看第一根燃烧的中点)

反问:

  1. 面试官问:考研打算;如果能一直在百度实习到毕业,会怎么选择?
  2. 我讲了拷打我MySQL索引的大致过程,我想问一问最后的答案是什么,和为什么这么问?
  3. 面试官:我直接告诉你答案,我怕你反堆上面结果,上面不对,下面答的对,负负得正。
  4. 为什么这么问的原因:一点点考察,我对MySQL索引的理解和实际使用的理解。
  5. 后续学习应该按什么顺序学;不直接告诉答案,是深入的东西多,光看网上八股文,回答够,但深入还是不行
  6. 比如: SQL 执行顺序 八股文给的,自己使用其实够了,但SQL执行顺序,底层是有选择的(大概这么讲的,可能记错了)
  7. 如果我答上来了,就会问具体索引失效的情况了;
  8. 批评了其实八股大家背得都熟,但深入的还是需要继续学。
  9. 一般都是问:切片,数组区别?为什么又跟了一个map,想考察什么?
  10. 很多语言,本身map是支持有序打印的,但golang之所以选择无序打印,是因为底层的内存分配上的问题(没记错的话)

反问环节:二面面试官调侃我把面试当学习了,我苦笑:也是进行战败总结了

最后:

我吃晚饭时,已经在心理建设了,但还是暗暗期望。没想到,吃完晚饭,回宿舍,HR面电话就来了。

和HR高兴的聊,以为二面G了,吃饭都在忐忑。聊面试的薪资情况,和住房推荐,可以在公司有班车的地方,公司在北京西北旺,百度科技园。

第一次大厂实习面过,可能就会很开心吧。不过,这是要北飘了???温饱和房租能够嘛?家里说,别担心钱.......

一点点疑惑:

我看官网是在6月份开招MEG-达人商单的GO后端实习,现在快11月份又招人什么情况?

看新闻,百度MEG8月份裁员了很多,牛友们觉得MEG-达人商单这个部门怎么样?问问什么情况?

#日常实习##百度##还记得你第一次面试吗?##发面经攒人品#
全部评论

相关推荐

天门一键开:她的意思是问你有没有论文吧
点赞 评论 收藏
分享
10-15 12:00
已编辑
重庆邮电大学 Java
点赞 评论 收藏
分享
算法冲刺中:kpi面加一,面完完全没动静,感谢信都没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务