boss直聘一面
时间点如下:9.20投递 -> 9.26一面 -> 9.29二面
一点思考
boss直聘问的比较基础,都是常见的八股文,例如redis/java集合。一面面试官比较年轻,估计是个一线开发,二面面试官是部门老板,感觉很严肃,听说我要的涨幅比较高,之后就没有后续了,今年真是沦为鱼肉了。
今年找工作十分不易,市场候选人很多,能过就是钱给不到位!希望这篇面经能帮到大家~
boss直聘一面(9.26 19:00)
- redis底层数据结构,sds怎么实现的?
全称:简单、动态、字符串,capacity/free/buf[],改善的c语言字符串
- redis list底层是什么数据结构,为什么ziplist跟linkedlist相比,性能会更差些?
(1)压缩列表比较紧凑,删除数据、插入数据,比较差,但是能省空间,底层是连续的,类似数据,查询数据比较快。但是需要大块的申请数据。
(2)链表的话,会存一个next地址,消耗的空间大一些。查询数据是O(n),插入/删除数据是O(1)
java中,什么场景用ArrayList,什么场景用LinkedList
如果redis list里是整数,redis怎么存储?
因为内存价格昂贵,在性能不影响的情况下,尽量节约内存。整数集合是集合键的底层实现之一。
整数集合的底层实现为数组, 这个数组以有序、无重复的方式保存集合元素, 在有需要时, 程序会根据新添加元素的类型, 改变这个数组的类型。
升级操作为整数集合带来了操作上的灵活性, 并且尽可能地节约了内存。
整数集合只支持升级操作, 不支持降级操作。redis hmap怎么实现?
字典
ES底层分片怎么执行topN的,堆的数据结构是怎样的?
cat跟skywalking有什么区别?
定位不同。
- CAT 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。可以告警。支持 Transaction、Event、Heartbeat、Metric 四种消息模型
- 记录接口耗时(recore timer/ p90/p95,transaction),接口请求量(recordOne,event/metric)、业务指标(recordSize)、jvm指标(线程个数、内存占用个数等,heartbeat)。需要引进sdk,有侵入,不支持跨线程。4.根据traceId查询的需求开发日常使用中还是比较频繁的,CAT和Pinpoint都没有直接提供根据traceId的查询的页面。CAT不支持TAG不?
- skywalking:链路追踪。跨线程,基于java agent字节码增强,无侵入。
- CAT跟promethues比较,有什么区别?
- 采集端,CAT和Zipkin直接嵌入项目或框架,CAT需要机器特定目录下额外的配置文件
- Skywalking和Pinpoint也需要在机器实现在机器目录下由agent的jar包,如果后面通过容器发布,可以文件打入镜像中,需要使用的业务方直接在Dockerfile中使用相应的镜像,并配置-javaagent启动参数即可。