首页 > 字节教育后端二三面凉经
头像
阿帕亚
编辑于 2020-08-06 10:26
+ 关注

字节教育后端二三面凉经

和一面间隔了一个星期,下午面了两个面试官。基本上全程问我秒杀项目的问题。

PART 1

  • 秒杀项目的架构
  • 限流组件,限流算法,滑动窗口,然后让写滑动窗口的伪代码
  • 基于多线程改造上述代码
  • ConcurrentHashMap的原理
  • volatile 原理
  • 如何防止超卖
    • 可以用分布式锁锁住库存。
    • 或者是在redis里面预减库存,成功后再往MQ里发。
  • redis怎么减库存,redis的分布式锁的原理?
  • zookeeper的分布式锁,具体原理(这个问得很细)
    • 分布式锁采用curator,然后说了下curator是如何实现分布式锁的。
    • zookeeper的临时顺序节点时怎么保持有序的?
      • zookeeper集群中的只有一个leader是负责数据的写入,所有创建临时顺序节点都是在leader节点上操作,创建时的取当前目录下临时顺序节点的最大序号,然后在次基础上加1,如果创建失败则获取最大的节点序号,再重新创建。
    • 服务挂掉了,锁怎么释放?
      • zookeeper客户端和服务端有会话保持,heartbeat机制与服务端保持有效的会话,会话有超时时间,只有在规定时间内重新连接上集群中的服务器,会话才能继续保持。
  • kafa的模型
    • producer、consumer、broker、partition、replica等等
  • broker和broker之间的怎么通信?
    • broker之间的地址和端口是存储在zookeeper上的,zookeeper充当注册中心的角色。比如partition有多个副本,一个leader和多个follower,leader和follower进行通信就需要从zookeeper中获取地址和端口。
  • Kakfa怎么保证同一个topic的消费的顺序?
    • producer写的时候指定一个key,相同key的数据会分发到同一partition中去,而且这个partition中的数据一定是有顺序的。
    • consumer从partition中取出数据的时候,也一定是有顺序的。
    • consumer中多个线程来并发处理消息,因为单线程太难了,多线程又不能保证顺序消费。
    • 写 N 个内存 queue,具有相同 key 的数据都到同一个内存 queue;然后对于 N 个线程,每个线程分别消费一个内存 queue 即可,这样就能保证顺序性。
  • producer生产的速度大于consumer消费的速度,会发生什么,怎么解决
    • 扩展partition,或者增加consumer
  • 设计一个分配有序的分布式ID的模型
    • 面试官举的是论坛的例子,论坛底下是一层一层的,每一条留言对应一个ID,有序且唯一
    • 回答采用雪花算法(1bit + 41bit-时间戳 + 10bit-工作机器Id + 12bit序列号)
    • 然后问雪花算法的原理,问是否还有其他的吗,然后我回答还有美团的Leaf,但是原理还是不懂。我真是给自己挖坑的好手。

一个面试官问的大部分问题给忘记了,等想起来再补吧。上述大部分是第二个面试官问的。

PART 2

  • 如下,*表示星星,可上、下、左、右、左上...等8个方向组成星座,如果两个星座的星星数量相同则为一个星系,计算有多少星系,最大的星系有多少星星。

    5 7
    ......
    ..**..

    .....
    ......
    ....
    ..

  • 两个链表找公共节点

不知道为什么连续收到字节两份感谢信,3号发来一份,5号又发一份。

全部评论

(6) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐