滴普科技Java日常实习一二面面经(已OC)
《面试题目》
一面
- 栈和队列的区别
- 链表和数组的区别
- Java 中哪些实现用到了链表和数组
- 介绍一下 HashMap
- 介绍一下红黑树
- 智能客服项目:检索流程怎么做的?重排序模型怎么调用的?
- 文档要控制范围,不让某些用户搜索到,怎么办?
- MCP 是什么?MCP 的通信方式有哪些?怎么保证 MCP 调用的安全性?采用 stdio 通信协议的情况下怎么保证安全性、避免其对重要数据修改?
- MCP 和 Skill 的区别?Skill 的渐进式暴露是怎么做的?
二面
- 面向对象是什么,有没有了解过哪些设计模式
- 单例模式的作用是什么
- 讲一讲代理模式
- 讲一下数据库三大范式
《参考解析》
- 文档权限隔离在检索场景的实现:在向量检索/全文检索前置或后置增加权限过滤条件——检索时携带当前用户的可见范围(如部门、标签、权限等级)作为 metadata filter,只在用户有权限访问的文档子集中做召回,避免因检索环节缺少权限校验导致敏感文档被跨用户召回泄露。
- MCP 通信方式与安全性:MCP 支持 stdio(本地进程间标准输入输出通信,适合本地工具)和 SSE/HTTP(远程服务,适合云端工具)等传输方式;stdio 模式下由于是本地进程直接通信,安全性主要依赖于对被调用工具的权限最小化设计(如只读权限、路径白名单)和输入参数校验,防止恶意或错误的调用对本地重要数据造成破坏。
- MCP vs Skill 的区别:MCP 是标准化的协议层,定义了模型与外部工具/数据源之间”如何通信”;Skill 则是更上层的能力封装(通常是文档+资料组成的知识包),定义了模型在特定场景下”该怎么做”,两者可以配合使用——Skill 里可以引用 MCP 暴露的工具。渐进式暴露指的是不一次性把所有工具/文档细节都塞进上下文,而是先给出摘要或索引,模型判断需要时再按需加载详细内容,从而节省上下文空间、降低成本。
- 数据库三大范式:第一范式(1NF)要求每个字段都是原子的、不可再分;第二范式(2NF)要求非主键字段完全依赖于主键(消除部分依赖,适用于联合主键场景);第三范式(3NF)要求非主键字段之间不存在传递依赖(每个非主键字段只依赖主键,不依赖于其他非主键字段)。