数据开发一面、二面面经
完整信息
本篇目录
之前从没发过面经,这次实在是太奇怪了,值得一发,简历里面有RAG,Agent的同学一定以我为戒,简历里面写到的东西,无论大小,一定要认认真真的多复习复习啊😭
0.自我介绍
1.简述一下几种向量索引方案?(热身题,我说分ENN和ANN,细分还有HNSW,IVF系索引)
2.热身结束,现在milvus里有一千亿个向量,你怎么设计索引?(此时已经开始满头小汗,想的是做两层,先用ivf分桶,再用HNSW分层)
3.那如果分完桶之后,有一个桶里面他只有10000个向量,为什么会出现这样只有10000个向量的桶,这些向量是怎么组织的,怎么分层的?(题干有点忘了,我只说出来HNSW的分层好像是随机的,不看具体的向量相似度,别的我想不到了,问面试官愿不愿意给点提示,他说答案就一两句话,提示完没必要问了)
4.设计一个10个Redis机器构成的集群,内部存的是普通的K-V,K是UID,V是一个二进制文件,要求考虑单点故障,负载均衡等,要实现高可用,低延迟。(到这里已经满头大汗了,集群这方面我从来不敢说自己会,简历里也没写,不知道怎么就被问到了。我就说了点首先二进制文件可能造成大key,最好用对象存储,其次热Key,雪崩问题要处理,其次单点故障的话首先要先降级再将这些数据先加载进别的机器先读着,一致性哈希当时没想到)
5.面试官说休息一下写个算法吧,二叉树层序遍历。(控温中……5分钟秒了)
6.手撕进阶:二叉树我们不可能永远存int你考虑一下如果我们需要二叉树里面能存多种类型要怎么做?(给了三个方案,第一个Object暴力存,实际用的时候向上向下转型一下,第二个想到泛型,第三个想到Guava的那个Optional做一个空值保护)
(插播一条,其实到这,脸上的汗感觉略微有点消了,前面一直在擦额头,擦鬓角留下的冷汗)
7.我们这边是离线数据架构,你能介绍一下你对大数据组件的理解吗?(因为和实习重合,我就先简单讲了一下之前实习的大数据平台的一些情况,然后说了一下常用的那些,Spark Flink HDFS)
8.对这些有深入的了解吗?Flink有实操过吗?(到这里感觉又出汗了,说了一下确实写过一些Spark任务,包括ETL自己也有过写,做数据迁移的时候用过,直觉告诉我可能不太对)
9.那你说一下随着计算任务的推进,Flink的State越来越多,变得难维护,你要怎么做?(大的来了,感觉自己浑身发抖冒冷汗,我只说出了Flink有时间窗口,可能将State做随着时间窗口的一个过期与淘汰,或者将State持久化进OLAP,方便频繁的IO)
反问环节,我问了一下面试官,您针对于Neo4J,Milvus提的问题都很有价值也很尖锐,想请问您这边做这个吗,他说不做,只是看你简历上面写了,随便问问。(😅)然后两个场景题我的答案还能不能完善,面试官说Flink的说到这勉勉强强,Redis集群的场景题,我给出的思考都不是那些在业务场景比较常用的考虑,可能比如在极端场景下内存要爆了才考虑将二进制文件写入对象存储,Value只存URL,否则既然redis是缓存,那么我们还要存对象存储的话,那缓存的意义就丢失了。最后请求面试官从前辈的视角给我一些点拨,他也只是说前辈谈不上,没什么点拨。
面完之后,我摸了一下后背,衣服已经被冷汗浸湿透了。仰天大笑出门去,归来倚仗自叹息,其实为了这个二面我还是准备了一些东西,比如进一步了解了一下Spark,OS与Kafka的八股也复习了很久,结果一个都没考,离线架构还考了Flink。面试结束之后有一种不知道要怎么准备了的感觉,不管在什么方面下功夫,面试官想难住我都是洒洒水。现在真正体会到那句话了,如果有一个技术,我不能100%理解,那就不要往简历上写。还有让我理解不能的是。既然这个面试官问了我这么多这么复杂的问题,为什么最后的手撕让我写的是二叉树层序遍历?感觉像是看我前面说的太差了,已经决定要挂我了,最后给我控控温,来个临终关怀。
PS.一面问的一些OS内存管理的八股,然后来了一道场景:设计一个给大模型提供训练数据的数据流动链路,要求数据需要被归一化,然后任何服务的cpu和gpu资源都稀缺随时可能宕机。(最后用Flink做数据的清洗与结构归一化,利用Checkpoint机制记录Flink的实时计算状态,方便CPU不足所导致的宕机能够被从最近的Checkpoint进行重启,再用Kafka做消息投递到LLM那边,还能做一个训练数据的持久化,如果LLM需要并行推理可能要利用Partition做数据分区,然后Flink处,LLM处都要做日志,方便排查消息丢失或者训练数据的结构不规范),手撕是什么我忘记了但是不难,力扣Medium程度好像。
本篇目录
当前问题0114
- 01
自我介绍
- 02
简述一下几种向量索引方案?
- 03
热身结束,现在milvus里有一千亿个向量,你怎么设计索引?
- 04
这些向量是怎么组织的,怎么分层的?
- 05
设计一个10个Redis机器构成的集群,内部存的是普通的K-V,K是UID,V是一个二进制文件,要求考虑单点故障,负载均衡等,要实现高可用,低延迟。
- 06
面试官说休息一下写个算法吧,二叉树层序遍历。
- 07
手撕进阶:二叉树我们不可能永远存int你考虑一下如果我们需要二叉树里面能存多种类型要怎么做?
- 08
我们这边是离线数据架构,你能介绍一下你对大数据组件的理解吗?
- 09
对这些有深入的了解吗?Flink有实操过吗?
- 10
那你说一下随着计算任务的推进,Flink的State越来越多,变得难维护,你要怎么做?
- 11
您针对于Neo4J,Milvus提的问题都很有价值也很尖锐,想请问您这边做这个吗
- 12
然后两个场景题我的答案还能不能完善
- 13
最后请求面试官从前辈的视角给我一些点拨
- 14
设计一个给大模型提供训练数据的数据流动链路,要求数据需要被归一化,然后任何服务的cpu和gpu资源都稀缺随时可能宕机。
