AI 应用 / 全栈笔试记录
完整信息
本篇目录
#笔试##我的求职进度条#
总的感言:数据库,os,rag,transformer都有了,就是没有考我擅长的前端(哭)
选择题(记了一部分,毕竟我又不是人肉打印机)
1:操作系统中父进程跟子进程共享同一资源,那么写入新资源的时候os怎么处理的
答:父子进程通过 写时复制(Copy-on-Write, COW) 处理共享资源的写入,一开始时虚拟地址相同,分配的物理内存页共享且只读,当任一进程写入时:触发缺页中断 → OS 分配新物理页 → 复制内容 → 修改写入进程的页表指向新页(类似于懒加载)
2:read commit下在第一次与第二次事务之间更新数据,那么我们可以在第二次事务看到数据库更新,这是什么原因
答:在 Read Committed 隔离级别下,一个事务只能看到已经提交的数据,并且每次读取都获取最新的已提交版本。
3:rag遇到query是“错误码e114514怎么处理”,策略最好是哪种
答:由于词法检索是关键词检索比较具体,而向量检索针对模糊化语言计算相似性,这种问题又很精确,因此建议先精确/词法检索 → 向量召回作为补充 → Rerank 融合。
4:在KV cache中,模型具有因果性,遇到第40个token没有缓存怎么处理
答:第40个及其以后的token都要重新计算,由于因果性,llm计算前n个token的注意力分数;又由于softmax的非线性,导致了无法对单一token进行相减这样的线性处理,因此只能重新计算。
编程题:打Boss
玩家初始有m滴血,第i秒收到来自怪兽的a[i]点伤害,随后会接受来自法师的b[i]点回血。玩家还有一项技能,可以在k秒内无法选中,既无法收到伤害,也无法接受回血。总共有n秒战斗,询问战斗结束时是否能够有存活的机会,能则输出yes不然是no。(数据:均小于1e4)
知识:前缀和,贪心
思路:一开始的思路是暴力枚举在第几秒开无敌,并且前缀和是比较容易想到的,然后无敌前跟无敌后玩家会不会出现没有血的情况(注意血一直需要在0以上,有可能会出现还没回上法师的治疗就被boss打game over的情况),注意到可以预处理转化成前面和后面的最低血是多少,这样可以min函数更新遍历降复杂度,最后就是无敌的处理,给减去这段时间的血条变化量即可。
代码:(见图1)
ai coding题:知识问答的场景,修bug补测试样例,一直卡28/30了hhh
本篇目录
- 01
操作系统中父进程跟子进程共享同一资源,那么写入新资源的时候os怎么处理的
- 02
read commit下在第一次与第二次事务之间更新数据,那么我们可以在第二次事务看到数据库更新,这是什么原因
- 03
rag遇到query是“错误码e114514怎么处理”,策略最好是哪种
- 04
在KV cache中,模型具有因果性,遇到第40个token没有缓存怎么处理
- 05
玩家初始有m滴血,第i秒收到来自怪兽的a[i]点伤害,随后会接受来自法师的b[i]点回血。玩家还有一项技能,可以在k秒内无法选中,既无法收到伤害,也无法接受回血。总共有n秒战斗,询问战斗结束时是否能够有存活的机会,能则输出yes不然是no。(数据:均小于1e4)