亚信科技 大模型开发 一面

1、自我介绍

我主要做的是大模型应用开发和 NLP 相关工作,技术栈以 Python 和 Java 为主。平时做得比较多的是 RAG、知识库问答、Agent 流程编排、数据清洗、信息抽取和模型服务化部署。之前接触过 FAQ 问答、命名实体识别、文本处理、检索召回优化、多轮对话上下文管理这些方向,也做过一些评测和效果优化工作。我希望找一份偏大模型应用落地的岗位,把模型能力和业务场景结合起来,重点做效果、工程和稳定性的平衡。

2、实习经历

3、RAG 的优化,项目中 Agent 的流程

RAG 的优化一般可以分成数据侧、检索侧、重排侧、上下文构造侧和生成侧。数据侧主要是文档清洗、去噪、切 chunk、补充标题和元数据,因为原始知识质量会直接影响最终问答效果。检索侧常见优化是向量检索和关键词检索结合,也就是混合检索,这样既保留语义召回能力,也保留精确词匹配能力。重排侧一般会加 rerank 模型,对召回回来的候选文档重新打分,提高前几个结果的相关性。上下文构造阶段会做去重、压缩、截断和顺序调整,避免无关内容占掉太多 token。生成侧则会通过 Prompt 约束模型必须基于证据回答,并且在证据不足时明确说不知道,从而降低幻觉。

项目里的 Agent 流程本质上是让模型做决策,让系统做执行。典型流程是用户先输入问题,系统先判断任务类型,如果只是 FAQ 或知识问答,就走 RAG 检索链路;如果问题涉及查接口、查数据库、调用外部工具,就由模型决定调用哪个工具,并生成结构化参数;工具执行后把结果返回给模型,再由模型组织最终答案。整个过程中通常还会有记忆管理、上下文拼接、工具结果校验和异常兜底。简单说就是先理解问题,再决定要不要调用工具,调用后再汇总结果并返回。

4、数据处理

数据处理在大模型项目里非常重要,因为很多效果问题最后都不是模型本身的问题,而是数据问题。一般流程是先拿到原始文本,然后做去重、去空、去特殊符号、编码统一、字段清洗、脏数据过滤、无效样本剔除。对于知识库类数据,还要做结构化拆分,比如标题、正文、标签、来源、时间这些字段分开处理。进入 RAG 场景后,还要做 chunk 切分,chunk 不能太短,不然语义不完整,也不能太长,不然召回和上下文利用率都不好。对于训练任务,还要检查标签分布、类别不平衡、标注一致性和数据泄漏问题。数据处理做得好,后面的召回、分类、NER、问答都会更稳。

5、NER 是什么

NER 就是命名实体识别,目标是从文本中识别人名、地名、机构名、时间、产品名这类有明确语义边界的实体。它本质上是一个序列标注任务,输入是一段文本,输出是每个 token 或字对应的标签。常见标注方式是 BIO 或 BIOES,比如 B-PER 表示人物实体的开始,I-PER 表示人物实体内部,O 表示不属于任何实体。传统方法有 CRF、HMM,后来常见的是 BiLSTM-CRF,再到现在更多是 BERT-CRF 或直接用大模型做抽取。NER 的难点主要在实体边界识别、嵌套实体、歧义实体和领域迁移。

6、条件随机场

条件随机场也就是 CRF,是一种判别式概率图模型,常用于序列标注任务。它建模的是在给定输入序列X的条件下,输出标签序列Y的条件概率。它和逐 token 独立分类最大的区别是,CRF 会同时考虑当前标签和前后标签之间的转移关系,所以更适合处理像 BIO 这种带结构约束的标签序列。

线性链 CRF 的条件概率可以写成:

这里 fk 是特征函数,λk是对应权重,Z(X) 是归一化因子。训练时最大化真实标签序列的对数似然,预测时通常用维特比算法找到得分最高的标签路径。CRF 的价值在于它不是只看当前位置,而是让整个标签序列整体最优。

7、某 FAQ 知识库问答项目

这个项目本质上是一个面向固定业务场

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

04-30 07:55
东南大学 C++
一、自我介绍 / 经历亮点 / 岗位理解1.你先简单介绍一下你最近的经历,挑项目或实习里你觉得比较有亮点的讲一下。2.你们端智能这块的特征工程,主要是做什么的?3.你们这个项目本身负责采集吗,还是主要做中间处理?4.整个系统设计上大概是怎么分层的?5.业务方怎么定义和注册他们需要的特征?________________________________________二、设备特征缓存优化7.设备特征缓存优化这个需求,是 mentor 提给你的,还是你自己发现的?8.你当时接到这个任务后,是怎么思考和解决这个问题的?9.这个问题为什么会在高并发场景下耗时,它的根本背景是什么?10.你为什么会想到用缓存来解决?11.设备特征是会变化的,那你们怎么处理这个变化?12.为什么要分成 2 秒、10 秒、90 秒这几档?13.网络状态这种高频变化的特征,为什么是两秒?14.如果某些业务对实时性要求极高,比如 0.5 秒级别,你这套缓存怎么适配?15.如果同一个特征在不同业务、不同页面下要求不一样,你怎么设计整套特征供给和消费体系?16.如果不同业务场景对同一特征的刷新频率要求不同,你真正采集和计算时怎么定间隔?17.只要有人要求最短间隔,是不是整个系统都得按最短间隔跑?18.你觉得这个体系怎么设计,才能满足这种差异化需求?________________________________________三、特征计算触发 / 业务隔离 / 平台治理19.你们怎么限制特征计算不要无限制执行?20.如果一个事件可能触发很多脚本同时运行,你怎么管控?21.如果要限制并发执行任务数,那这些任务怎么选、谁优先?22.如果不同业务都说自己的任务重要,你作为平台怎么治理?23.这个治理过程以前可能靠人 review,那现在这个时代,你觉得还需要人一个个看吗?24.如果想用 AI 去替代人工 review 算法包,你觉得应该怎么做?25.如果让 AI 判断什么是合理、什么是不合理,你觉得提示词 / 规则里应该包含哪些信息?26.哪些特征或脚本应该被重点审查?高频的、复杂的、还是孤立的?为什么?________________________________________四、端上开发经验 / AI 在开发中的使用27.你在项目里面主要做的是 C++,对吧?28.除了 C++ 性能优化,你平时接的小需求是否也会涉及 iOS 和安卓两端?29.你们整个开发过程中会用 AI 吗?30.当时你们主要用哪些 AI 编码工具?31.你平时会用国产模型吗?________________________________________五、编程题:带 TTL 的 LRU Cache(允许 AI 辅助)### 题目要求实现一个线程安全的 **LRU + TTL** 本地缓存,请使用 Java 实现一个本地缓存类。### 代码框架```javapublic class LocalCache<K, V> {public LocalCache(int capacity) { }public void put(K key, V value, long ttlMillis) { }public V get(K key) { }public int size() { }}```### 功能要求缓存有最大容量 `capacity`;每个 key 支持 TTL(过期时间);get 时如果 key 已过期,返回 `null` 并删除;插入新 key 时缓存已满:- 先清理已过期元素;- 若仍满,则淘汰最近最少使用(LRU)的元素;如果 key 已存在,更新 value、过期时间,并刷新其 LRU 状态;需要保证线程安全;说明实现的时间复杂度,并说明如何避免因重复 put 导致过期堆中的旧记录误删新值。32.你先看一下这个题,先不用急着让 AI 出答案,你觉得它给出的方案方向有问题吗?33.它这里为什么要引入 version?34.version 是怎么避免旧数据误删新数据的?35.为什么这里要用小顶堆?36.小顶堆在这个设计里的作用是什么?37.如果堆里一共有 N 个元素,其中 K 个过期了,清理这 K 个元素的时间复杂度是多少?38.如果 K 很大,比如长时间没人请求、结果大量 key 一起过期,这个方案会有什么问题?39.在这种极端情况下,get / put 还能保持接近 O(1) 吗?40.如果你现在重新设计这个方案,你会怎么做?41.如果不用 AI,你最基础的思路是什么?42.纯 hash map + 双向链表 能不能先把 LRU 做出来?43.如果只在 value 里记录过期时间,会有什么局限?44.为什么说一旦加了小顶堆,就会把一致性和复杂度问题带进来?
点赞 评论 收藏
分享
评论
点赞
6
分享

创作者周榜

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