当前位置:   article > 正文

2022.5.12 腾讯魔方客户端暑期实习 一面凉经_腾讯魔方客户端面试

腾讯魔方客户端面试

完全裸考,,,只能当作是长经验了,,,随便记录一下吧/(ㄒoㄒ)/~~太菜了

1.自我介绍

2.实习项目经历

2.1 你在项目中负责的工作

A:负责游戏角色手部的抓取和放下动作的开发,基于UE的C++开发。

2.2 UE中动画、骨骼模型、骨骼之间的关系?

A:这个没回答上来,只回答了一些感性的理解。。。之后补充。。

UE4动画系统笔记 (nicethemes.cn)

这里十分推荐一个Up主的教学视频,十分详细,强推:

虚幻4(UE4) 动画技术 深入浅出 高级运动系统_哔哩哔哩_bilibili

2.3 UE中TwoBoneIK的原理及作用?背后的数学原理,如何确定唯一的解?用过其他的IK吗?

A:(回答的很多,但感觉不是很好,参考一下这些篇文章吧)

Joint Target Location: 该点和Effector Location、root bone三个点确定的平面将会是joint bone所在的平面,因为通过计算后的joint bone位置可以有无数个,通过指定Joint Target Location可以使joint bone在比较合适平面,Joint Target Location的值需要不断试验来得到最合适的值。

IK节点详解 - 知乎 (zhihu.com)

【游戏开发】逆向运动学(IK)详解 - 知乎 (zhihu.com)

2.4 IK和FK的区别?TwoBoneIK中Effector Location Space有哪些选项?这些选项有什么区别?

A:回答的差不多吧,想看的参考一下这个:

正向运动学(Forward kinematics, FK):利用机器人运动学方程,根据关节的特定参数计算末端受动器(end effector)的位置。正向运动学要求用户为所有涉及的关节设置参数。

逆向运动学(Inverse kinematics, IK):流程与FK相反,利用机器人运动学方程来确定机械手的关节参数,使末端受动器移动到期望的位置。末端受动器可以是关节(如手和脚),也可以是内部关节(如手肘和膝盖),不一定位于末端。IK最早出现在机器人学技术中,现在在许多领域都有应用,比如:工程学、计算机图形学、电子游戏、CG动画。

关于末端受动器:机械手臂抓取末端受动器的位置、角色开门时手的位置、角色行走时脚的位置,这些可以称为末端受动器。

Effector Location Space: EffectorLocation的坐标系,World Space世界坐标系,Component Space组件空间坐标系,Parent Bone Space以EffectorSpaceBoneName配置的骨骼的父骨骼为原点的坐标系,Bone Space以EffectorSpaceBoneName配置的骨骼为原点的坐标系。

2.5 UE中动画蓝图的作用?动画蓝图你都用过什么?都有什么作用?

A:状态机,C++映射蓝图结点,Blend混合空间,人物Slot

Q:这个Slot有什么作用?

A:。。我当时用来限制只播放上半身的动画,设置了一个新的slot

Q:那这个Slot的原理是什么?

A:不知道。。。(菜

2.6 Blend的原理是什么?

2.7 动画的Retarget的原理?

2.8 Motion Matching的原理?如何匹配的?如何映射到特征向量的?

2.9 Motion Matching用的UE中的哪个插件?怎么用的?

3.C++

3.1 C++指针和引用的区别?

A:八股文,不多赘述

3.2 模板用过吗?什么时候会用模板?模板在什么阶段生效?(大概是这么问的)

A:一般一个函数有不同类型的参数的时候会用到,这样就不用重复写多个函数,在编译阶段生效,根据传入的值来判断取哪种类型。

3.3 C++函数后面加const有什么作用?

A:不能修改类成员变量

C++函数前后加const含义_宜向华的博客-CSDN博客_c++ 函数前const

3.4 了解过什么数据结构?大概说一些概念术语就好

A:树、图、堆、栈、队列、链表、数组等。。

①好,那你说一下树有哪些遍历方式?大概都是怎么实现的?

A:一般就是DFS和BFS吧,DFS一般可以用递归的方式来实现,递归遍历左子树和右子树。BFS一般通过队列来实现,将子节点全部入队,循环判空,知道队列为空为止。

②好的,那你说一下链表和数组的区别吧,各有什么优缺点?

A:主要是查询效率和空间分配上的区别吧,数组是一片连续的空间,可以快速查询到下表对应元素,但是插入和删除效率低,因为需要移动对应位置之后的全部元素;链表则是不连续的空间,由指针来进行链接,所以访问效率没有数组高,需要从头遍历链表,但插入和删除的效率比数组高。同时空间分配是动态分配的,可扩展性强。(原话回答,其实这里应该分点来说的)

③好,你刚才提到了删除与插入,在STL中有时间复杂度为O(1)的删除函数,有了解过吗?他的源码看过吗?原理是什么?

A:

3.5 排序算法都有哪些?大概说一下名字就行

A:快速、归并、堆、选择、希尔、桶、冒泡、基数

①好,那其中哪些是稳定的排序?哪些是不稳定的?

八大排序算法的稳定性及时间复杂度_algsup的博客-CSDN博客_稳定的排序算法

②好,那现在有一个十万个数据数组,你能用其中哪个排序来找到数组中前K大的这些数?(TopK问题)

Top K 问题的解决方案_HerofH_的博客-CSDN博客_topk问题

3.6 给你一个数组,你来求一下某个区间的平均数,比如a[i]-a[j],要求复杂度为O(1)?

A:可以利用前缀和来实现,但需要额外的空间来存储前缀和。每个下标对应的元素为当前位置对应的前缀和。之后如果想要求a[i]-a[j]的平均数,可利用前缀和数组sum[j+1]-sum[i]除以j-i来求得平均数。

Q:好的,那如果这时是一个二维数组呢?并且要你求这个“矩形”二维数组中的一个“小矩形”二维数组的平均数?

A:。。。我理解二维数组本质上就是一个一维数组,这样的话可以通过遍历每一行来获得对应的区间的列下标,比如在一个3×3的矩阵我会遍历三行来获得三个区间对值,那么这样就可以在本质上的一维数组中采取三个区间的和,进行求和和平均。。

Q:好的,理解的你的意思了,那这样的话就不是O(1)了鸭

A:。。。哦哦,好像是的,暂时想不到别的办法了(真的菜

Q:好的,没关系

4.图形学的一点知识

4.1看你用过OpenGL和DirectX,你大概了解到什么程度?对游戏引擎了解多少?

4.2 好,那我问一些图形学的基础知识,说一下向量点乘和叉乘的区别?

4.3 说一下点乘和叉乘在图形学中有什么作用?以及他们的数学表示?相乘的结果是向量还是标量?叉乘得到的方向如何确定?

A:点乘结果是一个标量,其数学表示是|a||b|cosθ,在图形学中常用来获得两向量的夹角;叉乘结果是一个向量,垂直于两个向量组成的平面,数学表示为|a||b|sinθ,在图形学中常用来获得两向量组成平面的法向量。叉乘通过右手螺旋定则来确定。

Q:好的

点乘和叉乘的区别是什么?_基本模型与多画图的博客-CSDN博客_点乘和叉乘的区别

4.4 GAMES101中提到的画家算法,你能解释一下吗?

A:就是一种优先填充的思想,类似画家绘画的流程,由远至近进行绘画,并且近处的物体会覆盖远处的物体。其深度缓冲的思想与其类似,根据像素的深度值来决定如何绘制(这里回答的不好,很多都不细致)

深度笔记(一)深度在渲染中的应用 - 知乎 (zhihu.com)

4.5 好,那么在逐像素的深度处理中会有什么问题?

A:。。画家算法会每一个物体都去绘制一遍,这样一些覆盖多次的区域就会被渲染多次,导致效率低下。同时也可能会产生Z-fighting的问题。(基本都忘了,硬答)

5.你有什么要问的?

over

给自己找个最近忙的要死的接口开脱一下- -完全裸考

当时积累经验了- -

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/1017675
推荐阅读
相关标签
  

闽ICP备14008679号