字节教育后端二三面凉经

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

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号又发一份。

#内推##面经##秋招##字节跳动#
全部评论
这算法题...
点赞 回复
分享
发布于 2020-08-02 19:10
求问楼主像 hashset 这种底层的东西要去去准备的话看面经就足够了吗?还是说需要吃透书?求问
点赞 回复
分享
发布于 2020-08-03 07:28
联想
校招火热招聘中
官网直投
楼主base哪
点赞 回复
分享
发布于 2020-08-03 16:49
不用broker之间如何通讯楼主是怎么回答的啊?
点赞 回复
分享
发布于 2020-08-04 20:26
看面经里做java投字节的基本都凉了
点赞 回复
分享
发布于 2020-08-17 10:39
 好难
点赞 回复
分享
发布于 2020-08-17 21:00

相关推荐

时间:45 min,无算法自我介绍1. 项目解决的业务问题是什么2. 介绍下项目中你具体做的事情3. 单计算机多移动设备具体怎么做的4. 蓝牙通信怎么做的?5. 用原生 Socket 会不会有问题?6. 蓝牙断了怎么办?7. 产品化要考虑什么?8. 介绍下 I/O 多路复用?9. 有没有用过基于 Socket 的框架?10. Netty 底层了解吗?11. 介绍下 NIO12. 还知道 Netty 其他功能吗?13. 项目中遇到的技术挑战14. 场景题:做秒杀业务要考虑什么?库存(不超卖)、响应效率、稳定性    - 进一步要考虑的细节?    - 介绍下分布式事务?    - 什么时候会导致 TCC cancel?15. 大数据量级 MySQL 库表怎么优化?16. JVM 在 1.8 的变化?    - 为什么这么变化?17. 场景题:多线程顺序打印 ABC    - 有什么实现方式?条件变量、wait / notify    - wait / notify 具体怎么做?    - 存在虚假唤醒怎么去优化?    - 条件变量具体怎么做?    - 还有没有其他方式?park / unpark    - 有没有用过 join18. ConcurrentHashMap 和普通 HashMap 的区别19. ConcurrentHashMap 具体是怎么处理并发的?20. 介绍下知道的锁21. 可重入锁是怎么实现的?22. Transactional 注解底层原理23. RocketMQ 消息收发流程?24. 介绍下事务消息?
点赞 评论 收藏
转发
3 47 评论
分享
牛客网
牛客企业服务