无界智索 大模型评测实习生 一面

一、面试问题题单

工程基础 / Linux 基础
(1)Linux 用过吗?
(2)最常用的一些原子命令是什么?说五个。
大模型评测 / 指标基础
(1)是否知道评测里有一个叫 ROUGE-L 的指标?
(2)ROUGE-L 的指标公式能不能写出来?
(3)这个指标里是不是对应有两个分量,也就是 precision 和 recall?
(4)在最长公共子序列的基础上,如果去实现 ROUGE-L 这个经典指标,该怎么做?
(5)precision、recall,以及相当于 F1 的这个算法,该怎么写?
算法与代码实现
(1)给定两个序列,计算它们最长公共子序列的长度,写代码。
(2)如果把最长公共子序列的空间复杂度从 O(mn) 优化到 O(min(m,n)),该怎么写?
    (这里在写作代码的时候)
(3)这里的“公共子序列”理解是否正确?
(4)在此基础上,如何继续实现 ROUGE-L 的代码?
岗位动机 / 匹配度
(1)为什么投递这个岗位?
(2)投递这个岗位时主要是怎么考虑的?
面试官在交流中对背景的确认
(1)是否做过一些和评测相关的工作?
(2)是否做过 Anker 那段经历?
(3)对 research 是否感兴趣?

二、反问环节整理

反问问题一
问题
听完岗位介绍后,提出了一个理解性问题:目前公司的工作是否可以理解为,主要在搭建评测管线,或者做 benchmark、测量指标这类工作,整体更偏业务性一些。

面试官回答
面试官先追问了“业务”如何定义。随后说明,这边并不是偏业务导向,而是主要做基础模型相关工作。核心是基于 open source 和 in-house 的评测集,用工程上高效的方式搭建稳定高效的评测框架,支持训练工作。同时,在有余力的情况下,也会做一些更有影响力的事情,比如自建多阶推理评测集、做文章、做研究任务。总体上更偏基础模型和研究支撑,而不是围绕某个明确业务场景去做指标与营收闭环。

反问过程中获得的岗位信息
虽然不是直接以提问-回答形式出现,但面试官在反问前主动介绍了岗位内容,主要包括以下几块:

第一块:评测工程框架
支持从预训练、后训练到 Agent 全链路的评测任务。Agent 这一块由于很多脚手架没有现成开源代码,需要自己实现;复杂任务如 SWE 等,也需要能够在现有 Infra 上高效跑起来,后续还希望支持轨迹合成等事情。目前已经支持几十个基础 benchmark,日常训练工作基本够用,但稳定性还在持续优化。

第二块:模型评测产品化
未来会把模型评测能力不断迭代到对外推广的机器学习平台产品上,对标阿里云、百炼等平台的评测功能,并持续学习、对标和优化。

第三块:未来方向
未来可能会从 SWE 出发,继续做 Coding Agent 的事情。目前这部分挑战较大,还在构思整个数据合成管线。

反问环节结束后的延伸提问:
为什么投递这个岗位,当时是怎么考虑的?

三、体会和复盘

一次不错的面试体验(虽然一开始感觉面试官本人好像有点mean)

此外代码手撕的时候一开始面试官让我用本地IDE来写作最长公共子串,然后VS CODE的代码补全实在是很强,所以就直接让我用TXT写代码,并且——

给我一版已经写好了的代码,让我审阅代码的问题所在(原话是“这里面有三个错误,你给我指出来”)

“现在AI生成代码的能力已经很强了,我们很多时候需要做的是审阅AI生成的代码逻辑”

之前自己还是站在技术员工或者螺丝钉/执行者的角度太久了,以至于对AI本身听之任之

对AI代码(乃至文章或者图片)的态度,我们应该站在一个管理者的角度——

把AI看作是一堆自己花钱雇佣的助手,需要管理学

去批判、去审阅、去追问缘由和底层逻辑

我们的认知和审美,应该站在比大模型更高的高度
全部评论

相关推荐

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.为什么说一旦加了小顶堆,就会把一致性和复杂度问题带进来?
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

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