2.26 字节后端开发转正实习一面

先自我介绍,然后开始聊项目。

深挖AI项目:
项目为什么用的是JSON-grpc?它是怎么设计的?和标准的rpc有什么区别?

对mcp工具调用时的不同错误类型,你的设计有什么区别?

怎么封装的rpc超时重试机制?

客户端发起一个请求的时候,服务端怎么找到对应的工具?(mcp工具调用的全流程)

假设客户端请求的QPS很高,高并发环境下怎么去优化性能?

讲一下SSE通信模式,他和websocket有什么区别?

怎么通过RAG对mcp工具的选择进行优化的?

工具调用时token消耗过高,是在什么时候呢?(远程调用大模型的时候)

RAG向量化的内容是什么?

怎么把用户的问题,prompt去向量化的呢?有对比过引入RAG向量化后的效果吗?

mcp服务端在Linux平台上运行时,CPU突然占满了,如何排查?

怎么判断运行时出现了死锁?

如果是进程或者I/O引起的CPU100%,怎么判断进程卡在内核里、锁里还是I/O等待里?

讲一下僵尸进程和孤儿进程的区别。

算法题:带过期时间的LRU缓存,淘汰策略是random。

反问:
Q:您那边负责的主要业务是什么呢?
A:我这边是字节主端侧,AI基础设施。
Q:贵公司对在校生和实习生,更看重哪些方面的能力?
A:基础知识、和岗位方向的匹配度、还有学习能力。

总结:一个多小时,项目拷打基本抗住了,而且幸好面试前专门研究了大模型token和RAG,和面试官有得聊。算法题只写了个大概,用哈希表+双向链表,但双向链表的特点给忘了没回答好。
全部评论
大佬的面经太有价值了,我私信你了~看看吧
点赞 回复 分享
发布于 03-05 13:39 北京
面了多久通知结果的?我面了两天没消息了,是不是寄了
点赞 回复 分享
发布于 03-04 15:26 上海
楼主投的是网络平台后端开发-算力与AI基础设施这个岗位吗
点赞 回复 分享
发布于 03-02 19:28 陕西
这真是infra么
点赞 回复 分享
发布于 03-02 13:33 上海
cpp开发方向的ai infra?
点赞 回复 分享
发布于 02-27 17:38 广东

相关推荐

04-23 10:31
已编辑
山东大学 C++
拼多多一般多久出结果呢?一面感觉面的依托40分钟面完了。。感觉有点小寄整理一下一面的问题吧也学不进去。(1)门面模式,策略模式、模板方法 (因为项目写了!所以这么问的)门面:为复杂多子系统提供统一简洁接口,隐藏内部繁琐流程,降低调用复杂度,让外部只需一个入口就能使用整套功能。策略: 定义一系列可互换的算法策略,封装各自逻辑,运行时灵活切换算法,不修改原有业务代码,符合开闭原则。模板方法模式定义算法固定骨架流程,将步骤延迟到子类实现,不改变整体执行顺序,子类只重写具体细节,复用算法结构。(2)策略模式和工厂模式区别 (这个问题一直追问我!! 我只知道特别浅浅的东西)!!!工厂模式负责造对象,只关心怎么创建实例;策略模式负责用算法,运行时切换不同业务逻辑,工厂管创建,策略管行为。然后 追问 工厂模式不能做不同策略对象吗? 工厂造出策略对象,再交给策略模式去调度使用,二者分工完全不一样 然后又追问他们使用场景 多个同类对象,创建逻辑复杂多变,不想让业务代码直接 new 对象,统一封装创建,解耦对象生成与使用。 同一业务有多种算法 / 规则切换,比如支付方式、排序规则、优惠计算,运行时灵活替换业务逻辑。又追问 相同点是什么同时他们的区别是什么呢? 回答封装变化、都用到了多态,都降低了耦合、都符合开闭原则。不同点 一个创建对象一个选择对象怎么去干活的。第一个项目项目学到了说明一下 就随便说了一下简历上的东西 然后没有追问下面问rpc框架的东西了 因为简历有rpc。  自研 RPC 让我掌握TCP 粘包解决、动态代理、服务注册发现、负载均衡、SPI 扩展(3) 问怎么处理粘包!! 定消息头 + 长度域的私有协议,先读头获取长度,再按长度读体。(4) 为什么会有粘包的问题: TCP 是面向字节流的协议,没有消息边界,发送方批量发、接收方一次性读,就会出现多条数据粘在一起。(5) 问我tcp为什么是流式的?? 我直接蒙蔽了。。。我咋知道!!!TCP 是流式的,因为它的设计目标是提供一条可靠、有序、连续的字节管道,而不是独立数据包的传输服务。(6) 问我项目设计的 协议消息的格式是什么样子的 让我写道屏幕上 因为确实背了这里写出来了(7)问我 message length代表什么意思 message length 就是消息体的字节长度,告诉接收端要读多少字节才是一条完整消息,是解决 TCP 粘包半包的核心字段。(8)因为我使用的是recordParser去进行消息的处理然后面试官问我 没有被截取的部分怎么处理呢? 看了recordParser源码所以答出来了 没读完、不完整的字节,我会自动暂存在 Vert.x RecordParser 内部缓冲区里,不丢弃、不处理,等下一次数据到来继续拼接,直到凑够一整帧才交付(9)jdk动态代理是什么 !!(10)jdk动态代理底层是什么 运行时动态生成接口代理类字节码 → 加载进 JVM → 全部方法统一走 invoke () 反射调用 这里好像我当时说的怎么实现动态代理了因为我不知道底层所以当没听见。。。(11)红黑树和跳表的应用区别 redis?红黑树 范围查询慢 HashMap  跳表 插入 / 删除只改指针 范围查询极快(12)为什么空间复杂度都是O(N)(13)除了上面还有什么区别吗? 我又重复了一遍上面的回答。。。因为确实不知道了。。实现难度不同红黑树:极难,要处理旋转、变色、平衡,代码复杂易错。跳表:简单,只用随机层数 + 指针调整,代码短、易维护、易扩展。插入 / 删除稳定性不同红黑树:插入删除可能触发连锁旋转 / 变色,最坏会有O (logN) 次调整,高并发下有抖动。跳表:插入删除只修改前后指针,局部调整,无连锁反应,高并发更稳定。范围查询效率不同红黑树:范围查询要中序遍历,跳转多、缓存不友好,速度慢。跳表:直接在底层连续链表遍历,缓存命中率高,范围查询天生更快。并发场景支持不同红黑树:修改时影响路径多,加锁粒度大,并发性能差。跳表:操作局部化,加锁粒度小,更容易实现无锁 / 细粒度并发。缓存友好度不同红黑树:节点分散,CPU 缓存不友好。跳表:底层是连续链表,缓存命中率更高。(14) 又问他们读取的区别是什么呢?读取时会怎么样红黑树读取(查找)从根节点开始,不断左右跳转,走一条从根到叶子的路径节点在内存中不连续,CPU 缓存命中率低每次比较都可能缓存未命中,读取速度受影响范围查询需要中序遍历,跳转更多,更慢2. 跳表读取(查找)从最高层索引往下跳,快速缩小范围,最后落到底层有序链表底层是连续链表,内存局部性好CPU 缓存更友好,连续读取更快范围查询直接遍历底层链表,几乎无跳转,极快(15) 最后除了两道算法题1、是leetcode 面试150题里面的一个2、实现一个线程安全类 然后又add和remove操作!!都写出来!!42分钟差不多就面完了
点赞 评论 收藏
分享
评论
7
65
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务