【面试】商汤研究院-游戏AI见习算法研究员面试总结

2023-10-28 09:40

本文主要是介绍【面试】商汤研究院-游戏AI见习算法研究员面试总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 岗位介绍
    • 一面,技术面,1h,8.10
    • 二面,技术面,40min,8.16
    • 总结

岗位介绍

直接贴JD吧。
在这里插入图片描述
面试用的是“小鱼易连”。这算是我硕士阶段第一次正式的面试。

面试前都有电话、短信通知,很贴心,反应也很快。

HR告诉我这是一个偏科研的岗位,但是一面二面的面试官告诉我,可能更多做的是技术落地。

一面,技术面,1h,8.10

问的很广(相比二面)。
首先自我介绍+聊项目。项目聊了一个最相关的,聊得非常非常细致。

聊到卷积,计算40 * 60的矩阵,经过kernel=5*5,padding=1,stride=2的卷积后的参数数量。
然后叫我用pytorch手写代码来验证我计算结果的正确性。

问我优化算子,我直接说Adam,然后给他讲了SGD等其它我知道的算子和特点。

然后聊到了BatchNormal,我说了一下作用,以及为什么强化学习用这个效果不好。
答完以后面试官嘴漂了,似乎说漏嘴,说我深度学习这块掌握的不错。

“看起来你深度学习这块学得不错,再来看看线性代数这方面”

然后是矩阵,求解3*3实对称矩阵的100次。
这个用特征值分解就行。
“如果实矩阵不对称呢?”
这个我不记得了。面试官告知用约当标准型后,我回忆起来了。
顺带一提,面试官还说用计算机的快速幂算法也是一种做法。

接下来是概率论。说实话我感觉这个甚至算不上概率题。
如何在单位圆内均匀采样1000个点。这个题目的“均匀”其实有点歧义。
我一开始理解成均匀采样是指采样成一个均匀的点阵,说了半天方法,结果面试官说我这个不是概率意义上的均匀。
后来才明白面试官的意思是,random(0,1),然后重复运行1000次。
那就有两种方法了,一种是拒绝法,在框住圆的正方形内采样,如果点不在圆内就将其抛弃;一种是将圆转化为(r,θ)的极坐标形式,θ使用均匀采样,而r则是在(0,1)内均匀采样后开根号(要开根号原因是rdr采样其实等价1/2dr2采样,具体为什么这么做就不证明了)。

算法题很简单,简单得不可思议。写代码求解x=cos(x)的数值解,精度小于0.001。第一反应是要考察我牛顿迭代。说实话这个牛顿迭代法就五年前用c语言写过一次,真没有把握能一次写对。
突然灵机一动说可以用中值定理+二分查找解决。
代码我没有保存。用递归的话不难。
我没有答好的地方在于我没有看出这个方程只有一个实数根(因为它单调)。所以我说我算法的缺点是找不出所有的实数根……

反问环节:
我如果顺利入职,工作内容偏科研还是偏落地。

偏应用落地。如果想发文章的话需要自己课外再做一些努力,计算资源很足。

介绍一下组里最近的项目。
面试官说了一些项目内容及大致完成的工作。

请吐槽一下在商汤工作的感受。

工作任务完成就行,对时长没有硬性要求,整体组间学习氛围还不错。

二面,技术面,40min,8.16

我本来以为会问一些强化学习的内容,结果完全没有提到。从我为什么选择做强化学习开始,就像闲聊一样。
甚至问我喜不喜欢打游戏,水平怎么样。(因为是游戏AI这个方向的嘛)
算法题做完后,直接问我能实习多久,为什么不再多实习一会儿……
感觉就像是关系户走流程一样……

算法题还是问了的,不难,4个状态的马尔可夫随机游走。
初始在中间两个状态,左右转移概率都是1/2。到最左边节点终止且reawrd为0,最右边节点终止且reward为1,其他情况则继续游走,
叫我说一下怎么求。
强化学习的话就是值迭代、MC算法,数学的话就是二元一次方程组。答案是1/3,2/3.
如果节点变成5个怎样快速求解……(1/4,2/4,3/4。面试官的意思好像是根据对称性,中间节点的价值一定是1/2,从而快速确定。)

算法题就是用蒙特卡洛算法,写一个agent和env来验证结果的正确性。


# 假设env,agent给定
# env.step(action) 
# 返回值 state'(下一个状态),reward(回报函数),done(是否结束)
# agent.step(state) 
# 返回值 action (agent内置策略生成动作)def solve(node_num = 3):result = np.zeros(node_num)result[node_num-1] = 1for episode in range(10000):state = env.reset()index = statedone = Falsesum = 0while not done:action = agent.step(state)state,reward,done = env.step(action)result[index] += reward/10000return result

这里面的思想就是随机玩10000场,然后各个位置的回报取均值。我这里面其实是有bug的,在最后reward/10000那里,被除的应该是该状态被随机到的次数而不是10000,不过面试官没有指出就放我过了。

反问环节:
上个环节问了项目,这个环节就问那些项目用到什么技术。

在强化学习算法层面,用的都是PPO、SAC这些老算法,工作中更多要思考的内容是reward的表征、游戏信息特征的提取等功能。

做侵入式AI比较多还是非侵入式AI比较多?

侵入式比较多。非侵入式也尝试过,不过后来就不做了。

怎么看待上述两者?

侵入式的AI特征提取困难,算力需求大。是未来的方向,但是现阶段不准备尝试。

总结

商汤面试到此为止了。之前本来是想等三面或者HR面之后再发,结果过了一个多月还没有结果。因为手头有了新的事情,还听说被拒会有感谢信,我也没去找HR确认。现在时间过了那么久,想起这茬事,就默认凉了。

总体来说面试官水平还是很不错的,在面试过程中我也学到了不少知识。今天偶然看到这篇文章堆在我的草稿箱,加上这最后一段总结,我也就发出来了。希望可以作为大家的参考。

这篇关于【面试】商汤研究院-游戏AI见习算法研究员面试总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/292336

相关文章

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1