新浪一面微信视频面
7月16日 面了35分钟
1 自我介绍
2 介绍项目
3 我看你项目中用到了redis和RabbitMQ,我分别问你两个问题,redis基本数据结构,RabbitMQ的几种工作模式,你用的是哪一种
redis5种数据结构 String(字符串)、list(列表)、set(集合)、hash(哈希)、zset(有序集合)
RabbitMQ五种工作模式:
简单模式:一个生产者,一个消费者
work模式:一个生产者,多个消费者,每个消费者获取到的消息唯一。
work模式:一个生产者,多个消费者,每个消费者获取到的消息唯一。
订阅模式:一个生产者发送的消息会被多个消费者获取。
路由模式:发送消息到交换机并且要指定路由key ,消费者将队列绑定到交换机时需要指定路由key
路由模式:发送消息到交换机并且要指定路由key ,消费者将队列绑定到交换机时需要指定路由key
topic模式:将路由键和某模式进行匹配,此时队列需要绑定在一个模式上,“#”匹配一个词或多个词,“*”只匹配一个词
4 知不知道redis底层数据结构?
4 知不知道redis底层数据结构?
redis8种底层数据结构 long 类型的整数 简单动态字符串 简单动态字符串 字典 LINKEDLIST 双端链表 ZIPLIST 压缩列表 INTSET 整数集合 SKIPLIST 跳跃表和字典
5 zset(有序集合)是由什么底层数据结构实现的?
有序集合的编码可能两种,一种是ziplist,另一种是skiplist与dict的结合。
6 详细讲讲跳表skiplist,与平衡树比较怎么样?
7 给你出一道算法题,自己实现一个数据结构,可以完成插入,删除,取最大最小值,取中位数,分别告诉我时间复杂度。
刚开始思路是数组加链表,就hashmap底层数据结构,可以做到 O(1)复杂度插入删除,但是无序,没法取最大最小和中位数
之后 思考用treemap,底层红黑树,但是不知道怎么去中位数
最后 给面试官说 用 最大堆加最小堆 复杂度O(nlog(k)),面试官说可以
8 工作地点北京杭州 ,偏向哪个 ,答杭州
9 能不能来实习,不能
10 最后反问,我问刚才那道算法题的标准答案是什么?
面试官说没有标准答案,你回答的挺标准的,要实现排序,要不用堆,要不用树,都可以
等会有人联系你二面。
#面经#