上海沐瞳科技-Go社招-一面凉经-硬-7.29

alt

  1. 自我介绍
  2. 您之前是做一个中台开发的,是什么的样的服务啊,什么业务啊
  3. 有没有什么值得分享的点,解决了什么疑难的问题呀,具体的一些不错的产出啥的
  4. 项目-抓数系统
    1. 为什么要用到kafka
    2. 感觉你们数据库的数据量也不大,也就几百个账号要抓取,为社么不用rpc调用而用kafka呢,感觉也没啥峰可削
  5. 用go多久了
    1. 什么类型可以作为map 的key
    2. 什么是自旋锁?
      1. go里面怎么实现一个自旋锁?
      2. 用sync/atomic来实现,具体怎么操作?
      3. 什么情况下会更改失败
    3. 场景:假设有10个goroutine,希望一个goroutine退出的时候,另外几个goroutine也尽快退出,这个怎么实现?
      1. 不用context.withcancel怎么实现?
      2. 为社么要关闭这个channel来做,而不是向这个channel发消息之类的?
      3. 关闭channel有一个问题,如果两个goroutine差不多时间要结束,大家都尝试去主动关闭这个channel,一个channel只能被关一次,关两次会panic掉,怎么解决这个问题呢?(我的回答:指定一个专门的goroutine去关闭channel,其他的goroutine只需要在结束前向channel发一个信号)
      4. 那直接发信号给channel,另外一边接受这个消息不就一样了嘛,为什么要有专门的goroutine,这个好处是什么?
      5. 一个是我说的关闭信号退出,当中有一个goroutine专门负责做关闭这件事情;还有一些goroutine是说我直接发消息,没有当中,直接收到消息,收到消息退出。这两种方案,第二种方案更简单一点,不需要当中有goroutine,是不是选第二种方案就比第一种方案更好呢。
    4. sync.pool 这个你知道干嘛用的么
    5. go里面的map开始的时候指定一个大小,后面如果key越来越多,会自动扩容,从原理上来讲自动扩容大概是个什么样子的
      1. 假设map有10万数据了,自动扩容的时候再开一个map会产生一个多大的map
      2. 20万,这个时候要把所有的数据都一个个重新计算他的key然后搬过去,这个时间会很长,知道他是怎么保证性能的吗。虽然你用的角度上是无感的,你不会发现他有一个很长的等待过程。这个是怎么做到的?
      3. 渐进式的怎么渐进呢,具体什么时候触发这个搬运的工作?
      4. 什么时候做的这些小步骤迁移的,一开始不会把数据迁完,后面总会不断地迁,那到底什么时候迁呢?
      5. 这个一步步迁移是什么时候发生,已经开始扩容了,但是不会一下子全部扩完,你刚说的渐进式扩容,那这个渐进式也是要做的嘛,是什么时候做的呢?(总算引导着我答出来了:每次有新的写入操作时,go会选择一部分已有的数据迁移到新的map,这样渐进的迁)
  6. mysql
    1. 场景:一张用户表,有用户的基础信息,id,昵称之类的。有一列是一个身份证号,业务有一个需求,要绑定身份证号。这个用户要么不绑定身份证号,要么就是身份证号和用户是一 一对应的关系。用户可能不会立马就绑定身份证号,后面可能注册登录流程到一定阶段就让他绑身份证号了。身份证号和用户必须是唯一对应的关系,这个在绑定过程中的唯一对应是怎么实现的呢?
  7. redis
    1. 场景:redis里面要更新两个key,需要保证他们要么同时成功,要么同时失败,有点像事务的原子性。这两个key在业务上是强相关的,希望这两个key要么同时set成功,要么一条都不成功,这两个key是不同的数据结构,所以不能用一条语句直接更新,该怎么实现这个功能?
      1. lua脚本可以,为什么?
      2. lua脚本同时操作这两个key,假如用的集群模式待分片的,那用lua脚本会不会有问题
      3. 假如我要用lua脚本,两个key,有什么办法去解决这个问题呢?
      4. 知道分片的hash算法吗?为什么断定前缀一样就会分到同一个槽里面,他本质不是一个b+树啊
  8. k8s
    1. 有自己搭建过一个简单的k8s环境然后上去部署服务吗
    2. k8s服务发现是怎么做的?
    3. 场景:k8s里面有一个a服务和b服务,a、b服务各有10个pod,ip都不一样。a服务要访问到b服务的某个pod上,那这个过程是怎么样的你知道嘛?他怎么拿得到b服务的某一个pod的ip呢?
  9. 反问
    1. 岗位是给游戏用的业务中台,有支付,活动,官网等等
    2. 项目经验还需要再丰富一些,你现在工作年限不多,项目接触的还是比较少
    3. 你的面试情况要跟团队内部沟通一下,后续会跟hr
#沐瞳##Golang社招##场景题##一面凉经##游戏公司#
全部评论

相关推荐

04-15 20:23
已编辑
门头沟学院 Java
MorganLeFaYy:最后一题我的做法是把6个点能够组成的所有三角形的最小覆盖圆的半径进行求解,这些半径中的最大值即为最终的求解答案。 求任意三角形的最小覆盖圆的思路是:首先通过余弦定理求得最大角的余弦值,若该余弦值为负,说明该三角形为钝角三角形(或三点在同一直线上),最小覆盖圆的半径即为其最长边的一半;反之该三角形的最小覆盖圆即为其外接圆,用外接圆的半径公式求解即可。
投递携程等公司10个岗位
点赞 评论 收藏
分享
评论
6
10
分享

创作者周榜

更多
牛客网
牛客企业服务