老百姓大药房面试(部分)(未完全解析)

  • redis的几种数据类型,及其数据结构
  • redis为什么虽然是单线程,性能仍比memcached好?我回答IO多路复用。Q:了解CPU的亲和性、进程or线程与CPU的绑定吗
  • 有用过一些开源的redis的框架吗,去做数据的迁移,以及结点的动态添加或者上下线,槽(slot)的迁移等运维管理工作,显示大key等图表?
  • Kafka底层是怎么存储的? 每个topic是存到不同的文件吗?Answer by newBing:
    Kafka的底层存储是基于顺序追加写日志稀疏索引的方式实现的。每个Topic被分成多个Partition,Partition从物理上可以理解成一个文件夹,每个Partition又被分成多个Segment,Segment从物理上可以理解成一个数据文件+索引文件。图示:
    老百姓大药房面试(部分)(未完全解析)_第1张图片
    老百姓大药房面试(部分)(未完全解析)_第2张图片
    老百姓大药房面试(部分)(未完全解析)_第3张图片

(以下文章查阅参考:看1懂总体思路,看2来了解实例,3作为详细扩展参考:)
(1): 搞透Kafka的存储架构,看这篇就够了 - 知乎
(2): kafka-存储原理-机制、结构及底层原理 - CSDN博客
(3): 《吃透MQ系列》之 Kafka 存储选型的奥秘 - 知乎

    • 操作系统默认的page cache大小是多大?Answer by newBing: 操作系统默认的page cache大小通常为4KB。Q: 听过kafka ISR、OSR的概念吗?Answer by newBing: Kafka中的ISR、OSR是指副本的两种状态,其中: ISR (In-Sync Replicas):所有与leader副本保持一定程度同步的副本(包括leader副本在内)组成ISR。OSR (Out-of-Sync Replicas):未与leader副本保持同步的副本。OSR和ISR的概念在Kafka中非常重要,因为只有处于ISR集合中的副本才有资格被选举为leader。
    • Kafka的消费者是线程安全的吗。参考答案1,2:与线程安全的 KafkaProducer 不同,KafkaConsumer 是非线程安全的
    • Kafka进行扩容,有了解rebalance再均衡的策略吗? 相关知识3,4:rebalance的目的是消费者组内的负载均衡。kafka新版本提供了三种rebalance分区分配策略:range、round-robin、sticky
  • 了解哪些序列化技术? 我答:protobuf等。Q:什么样的场景下选择什么样的序列化框架?answer by newBing: 选择序列化框架需要考虑多个方面,如通用性、可扩展性、性能和数据类型与语法支持等。通用性是指序列化框架是否支持跨语言、跨平台;可扩展性是指所选择的序列化框架是否具有良好的扩展性;性能主要包括时间开销和空间开销,而编解码时间同样是影响序列化协议选择的重要指标,因为如今的系统都在追求高性能;不同序列化框架所能够支持的数据类型以及语法结构是不同的。
    因此,选择序列化框架需要根据具体场景进行选择。例如,如果需要高效的序列化和反序列化,可以选择 Protobuf 或 Kryo 等二进制序列化框架;如果需要跨语言支持,可以选择 XML 或 JSON 序列化框架;如果需要更好的可读性和可维护性,可以选择 XML 或 JSON 序列化框架。

  • Netty的ByteBuf应该在encode的时候,还是decode的时候释放

这个岗位是偏中间件和基础架构的,其实是我比较感兴趣的。但是offer待遇没达到我预期,所以最后还是忍痛放弃了。
后面发现面试官(未来leader)以前是兴盛优选中间件团队的负责人,又看了些帖子,比如V2EX — 中间件开发和后端开发的区别以及前景如何,好像确实对比于业务开发,搞中间件是更适合程序员长期深耕的技术方向。


  1. kafka消费者客户端线程安全以及多线程实现并发读取消息 ↩︎

  2. Kafka消费者的线程安全问题和多线程实现 ↩︎

  3. Kafka Rebalance详解 ↩︎

  4. Kafka的Rebalance机制可能造成的影响及解决方案 ↩︎

你可能感兴趣的:(#,MQ,面试,redis,Kafka,Netty,序列化,rebalance)