华为AI算法 华为AI算法笔试 华为秋招 0917

笔试时间:2025年9月17日

往年笔试合集:

2023春招秋招笔试合集

2024春招秋招笔试合集

第一题:大模型分词

您正在为一种罕见的语言构建一个专用的大语言模型。由于训练样本缺失,传统BPE等标准的分词器效果不佳,使得大模型推理生成的句子不理想。

幸运的是,一位语言学家为罕见语言的已知词根和词缀(统称为"词元"或"Token")都标注了一个置信度分数,这个分数代表了该词元作为一个"独立单位"的合理性。同时,语言学家还总结出了一个转移分数表,表示当前词元选择对下一个词元"置信度"的影响。

您的任务是设计并实现一个"最优分词器",它能将输入的罕见语言句子(一个不含空格的英文小写字符串)切分成一系列词元,并使得所有词元的置信度分数之和达到最大。

输入描述

  • 第1行为输入的、不含空格的罕见字符串 text,假设只含英文小写字符
  • 第2行为已知置信度词汇表的个数 n
  • 随后 n 行为已标注词元及其置信度分数 P,以空格分隔
  • 第 n+3 行为转移分数的个数 m
  • 随后 m 行为转移分数数据,包括起始词、下一个词、转移分数加分 X,以空格分隔

输入限制:

  • 0 < len(text) ≤ 100
  • -100 ≤ 转移分数表中的影响分数 X ≤ 100
  • -100 ≤ 词汇表置信度分数 P ≤ 100
  • 0 < 词汇表大小 n ≤ 100

输出描述

返回最高的分词得分,若根据已知词汇表无法拆分则返回0。

样例输入

applepie

2

pen 3

apple 10

2

pen apple 5

pie apple 2

样例输出

0

样例说明: text句子中含有不在已知词汇表中出现的词,无法进行拆分。

参考题解

解题思路:

这是一个动态规划分词问题,需要将输入字符串切分为一系列已知词元,使得所有词元的置信度分数之和加上转移分数之和达到最大。

  1. 状态定义:使用dp[i]表示处理到第i个字符时的最优解状态。由于需要考虑转移分数,dp[i]需要记录以不同词元结尾时的最大得分。
  2. 状态转移:对于每个位置i,遍历所有可能的起始位置j(0≤j<i),检查子串text[j:i]是否在已知词元表中。
  3. 边界条件:dp[0]初始化为空字符串''得分为0。
  4. 最终结果:dp[len(text)]中所有可能状态的最大值。

Python:

import sys

def optimal_tokenizer():
    text = sys.stdin.readline().strip()
    n = int(sys.stdin.readline())
    
    confidences = {}
    for _ in range(n):
        token, score_str = sys.stdin.readline().split()
        confidences[token] = int(score_str)
    
    m = int(sys.stdin.readli

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

2025 春招笔试合集 文章被收录于专栏

2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南

全部评论

相关推荐

02-28 19:07
已编辑
成都理工大学 Java
一面2.12一面是产品leader面的,整体来说偏业务面试官叫我共享屏幕演示Agent平台1&nbsp;你的这个Agent平台做了什么?2&nbsp;Agent平台的盈利模式是什么?3&nbsp;平台的用户画像?4&nbsp;做这个项目的核心目标是什么?5&nbsp;实习中的规则引擎解决了什么问题?6&nbsp;场景题:给出一个关于广告创意平台的场景,如何设计Agent赋能7&nbsp;了解过哪些Agent框架主要是说了python的一些框架8&nbsp;整体职业规划二面(技术面)2.271&nbsp;个人信息:-&nbsp;请做一个自我介绍。-&nbsp;在你的项目里,挑一个技术难度大或有成就感的点介绍一下。-&nbsp;你的技术栈主要是Java,对其他语言有接触吗?-&nbsp;你平时工作中用过哪些AI编程工具?-&nbsp;对Python掌握如何?相比Java有什么优势或劣势?-&nbsp;如果要做Go开发,你介意转语言吗?-&nbsp;对Go有哪些了解?说了一下协程和虚拟线程,提了一下Go用于云原生比较多2&nbsp;实习:-&nbsp;多版本快照模型和乐观锁解决并发更新问题,你们是怎么处理的?-&nbsp;回滚时如何保证线上实例不受影响?-&nbsp;RTE从150ms降到25ms,你们如何定义和拆分核心链路和非核心链路?-&nbsp;非核心链路执行失败,如何保证核心链路的数据一致性?-&nbsp;应用程序关闭优化,进程关闭耗时325秒,你们是如何监控的?-&nbsp;业务池未响应,具体原因是什么?-&nbsp;关闭长任务时的数据一致性如何保证?-&nbsp;使用本地消息表如何在重启后恢复数据?3&nbsp;Agent项目-&nbsp;MCP网关实现协议转换,你们的MCP协议解决了什么问题?-&nbsp;大模型(LLM)的熔断和降级是如何处理的?-&nbsp;多跳检索是怎么实现的?循环检索策略是什么?4&nbsp;MySQL和Redis-&nbsp;MySQL、Redis使用频率及场景是什么?-&nbsp;MySQL的InnoDB为什么用B+树做索引?-&nbsp;联合查询索引怎么建?-&nbsp;如果只用联合索引的非最左字段查询,会失效吗?总结归纳了MySQL索引失效了根本原因是破坏了索引的有序性-&nbsp;MySQL事务一致性是如何保障的?这里延申比较多,从ACID开始答,提到了SQL语句执行顺序和WAL,最后说了一下怎么选择事务隔离级别-&nbsp;Redis常见的数据结构有哪些?-&nbsp;排行榜类型的数据结构应该用哪种?为什么?-&nbsp;MySQL和Redis之间如何保证数据一致性?没有说太多具体方案,主要是提了一下自己的理解5&nbsp;平时怎么使用AI工具?
点赞 评论 收藏
分享
03-13 16:30
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

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