当前位置: 首页 > 面试经验 >

momenta 后端开发 已oc

优质
小牛编辑
92浏览
2023-09-30

momenta 后端开发 已oc

自我介绍

自己挑一个项目来讲讲

我选的是6.824,讲了一下我使用goroutine和channel的场景

问了问能不能在项目中加入数据库?

回答了可以,mySQL用来做数据源。事后复盘感觉以下的思路回答更全面:

我的项目是geecache可以从这几个角度来考虑:

  1. 持久化缓存数据:考虑将缓存数据储存在MySQL的数据库中。
  2. 数据备份和恢复:MySQL提供了备份和还原工具,可以更容易进行数据备份和恢复。
  3. 数据查询分析:可以使用MySQL对缓存数据进行复杂的查询和分析操作。

缺点:

  1. 额外的复杂性和性能开销
  2. 需要考虑的问题:数据同步,缓存失效策略,性能开销,维护数据库的成本。

结论:如果目标就是构建一个高性能的分布式缓存系统,那么还是将缓存数据储存在内存中,如果需要定期更新缓存,那么可以将mySQL作为数据源。

你会写测试脚本对吧?我想对数据库mock应该怎么实现?

这个我没答上来(没有这方面的经验啊)面试官最后说golang有现成的三方库可以解决。(我说好的,学习了!)

协程进程线程的联系和区别?

结合GMP模型回答了一下。

协程之间是怎么通信的?

我讲了一下GMP调度的流程,然后我补充了一些可能是channel,共享内存,锁啥的(也不知道对不对)

你讲到锁,设计一个死锁的方案?

两个channel互相收到对方信息后向对方传值。

笔试题:实现lru缓存

写完了,有bug,报了一个从没见过的错。debug了二十分钟左右,面完试回看发现是构造函数的部分写成成员函数了,哎痛苦。

面完一面的第三天就二面,二面挺容易的,面完之后当天就发了offer

二面笔试题,反转句子(I love Beijing -> Beijing love I)没有复杂度限制,我用数组实现的复杂度稍高,面试官问为什么不用栈(golang不会用栈)

 类似资料: