愿景互娱游戏前端工程师二面

#游戏客户端#
项目:
1.重点问了我UE5做了些什么,用了什么技术栈?其中最难的地方是什么?
2.UE5如何做群敌作战?

C++:
1.C++三大特性是什么?仔细讲一讲他们的特点。
2.智能指针了解吗?
3.malloc和new的区别是?

操作系统:
1.进程和线程的区别?
2.线程之间的通信?

计网:
1.TCP和UDP的区别
2.TCP三次握手四次挥手具体是什么?

数据结构:
1.unordered_map和map底层实现是怎样的?讲讲哈希函数?哈西冲突怎么解决?讲讲红黑树?
2.讲一讲vector底层实现?
3.讲一讲stack和queue?两个队列怎么实现一个栈?

算法:leetcode原题
1.每个课程有先修课程,请问可以修完这些课程吗?修的完输出顺序,否则返回空
2.翻转指定范围里的链表

4.15更新,已挂
全部评论

相关推荐

07-14 17:04
已编辑
门头沟学院 C++
先说结论:目前不建议入行。除非你真的参与过工业界游戏开发管线,并且仍觉得自己非常合适,否则不建议任何人凭着对游戏的热爱和满腔热血杀进这个行业,起码现在不建议。给大家讲讲目前业界的状况:去年我自己和几位朋友加一起经历了6个项目,目前的情况是:一个上线但苟活,一个上线但缩编,一个正常在研,一个重做,两个砍掉。情况没有两三年前那么严峻(那时候5个项目砍4个),但也远远谈不上什么前途。十年前游戏行业最大的困境在于人才缺乏,五年前最大的困境在于版号稀缺,现在最大的困境在于缺少方向。以前是没有资源做,现在是不知道做什么。援引某高管的观点:过去十年,手游发展的动力,来自于将主机pc平台的佳作搬上手机,而现在这种动能已经十分微弱。(下面开始是个人观点)由于缺乏确定的方向和可预见的回报,现在业界的打法仍然十分保守,以防御为主,扩张和立项都十分谨慎,hc极其有限。另一方面,近年来得益于games系列等优秀课程的出现,以及ue5的发布,游戏界确确实实多了很多人才。尽管靠谱的ue程序依然难招,但也不至于跟以前一样会点cpp就要。以上因素综合导致了新人入行竞争加剧的现象。至于单机市场,尽管近年来国内涌现出一批以黑猴为代表的优秀作品,但国单市场盘子很小,roi很低。虽然玩家群体目前充满乐对国单市场的期望,但资方大多仍保持克制谨慎的现象,大厂项目很少,且人员要求比较高。手游尚且可以容忍粗制滥造,愿给新人一些成长的机会,单机基本立项之初就是冲着高品质去的,再加上项目组面对资方预期回报数据的巨大压力,更倾向于把有限的hc用在高熟练高产出的业内老兵身上。除开大厂,独立游戏工作室倒是愿意给新人机会,不过大多数独游工作室都不太稳定(虽说大厂也没好到哪去,但你可以活水不是),而且技术栈比较浅,人员质量参差不齐,出了问题都不知道问谁(我组有句俗语:我要去引擎组搬救兵了),从成长的角度来说不建议职业初期就去做独游。OK,以上是大环境部分,下面我们讲一讲个人部分。先声明:本人是做客户端的,如果你想了解服务器的知识,可以直接翻到最下面先说引擎吧,unity从数量上看仍然是绝对主力,但ue的反攻势不可挡,现在有点实力的厂都在纷纷开设ue项目,so如果你是大一大二的同学,建议学好cpp,以ue为主力引擎。如果你无法学会cpp,建议离开游戏行业,因为语言关只是第一关,游戏的技术栈深度太恐怖了,cpp无法学明白的话,就算换unity估计也只能在ui仔的岗位上空蹉跎几年。再说说学历,鄙人近年来没亲眼见过公司里新进过非985 211的正编,但听说过有这样的人,不过主要集中在非技术岗,so我不是很了解。实际上211都很少,985本硕是主力,海外名校有很多。不过你能掌握好cpp的话,学历估计也能到这个标准吧,so个人并不觉得学历会卡人再说说方向。客户端的方向主要分渲染,物理,动画,ai,gameplay五大方向。渲染是负责绘制游戏画面的,主要分图程和ta,图程偏向于挖掘更多性能,ta偏向于做出更好的视觉效果,技术上前者更深,后者要懂美术。不过图形学最大的问题其实在于严重的人才过剩。顶刊顶会的top2佬也捞不到渲染的工作做,只能天天写lua搓ui,一个项目组往往有一两个人图程就够了。至于其他人,猛学了两年图形学,到头来也只能证明你很聪明,仅此而已。物理主要是修bug和搞性能。学物理的没有学渲染的那么多,但用物理的项目就更少了。绝大多数游戏只要用引擎提供的基本功能就好了,不会需要用到什么复杂的软体,绳索模拟等。就算真要,一般也只会寻求视觉欺诈的解决方案,找不到就砍需求,而不是找个物理程序去给你改底层物理引擎。实际上物理程序一般不是做物理需求,而是处理因为组内同事搞不来物理引擎导致的物理bug。另一方面,游戏物理会教你怎么做高性能计算,因此物理出身的程序往往在做性能优化,场景管理,加载管理等看起来跟物理没关系的事。动画顾名思义,研究角色动画的。底层要改的很少,工作中更多的是用动画编辑器,配合美术干纯体力活。ue那动画蓝图你就连去吧,一连一个不吱声。动画的技术比较古老且少,绝大部分游戏用的还是传统状态机,少部分会用状态树,motion match(手游用不上,因为太吃性能了)等技术。算是这5个方向里水最浅的一个。ai现在分两种,一种是做传统游戏ai,一种是通过ai辅助游戏生产。前者目前比较新的实用技术是通过机器学习给ai下行动指令,多见于对抗性较强的竞技游戏(我做过,我的评价是版本管理学的灾难,pm的噩梦)。后者业内还在研究,目前处于一个各家都说自己做的ai好使,但大家看了还是更愿意发挥工匠精神,手工研制游戏的阶段gameplay是搞玩法的。以上4个方向都可以说是纯技术,但决定游戏做成啥样的还得是做gameplay的(其实是策划,gameplay只是负责伺候策划的)。这很杂,水很深。市面上主要是3c和战斗系统比较缺人。吃经验,吃在某一游戏类型上的钻研程度。网络同步也是gameplay在做当然还有做工具的,做打包构建的,做ui的等,不一一列举,但你确定你入行就是为了做这个吗关于方向的选择,我的答案是新人没有选择,全都要学,不求学得多深,只求学个皮毛,看看这个领域主要在干嘛,以及自己适不适合。全入门之后再决定自己要研究什么也不迟不过目前市场上比较缺乏的,主要是做网络的,做战斗的,做动画的,做3c的,做性能的(刚入行搞不了这个),可见都集中在gameplay方向。这是因为其他方向引擎已经把工具做的很好了,项目组只要做gameplay的把这些工具拿来拼一拼就能拼出个游戏了再说说语言,目前手游界主要是cpp/cs+lua的组合。lua总归是要学的,这语言挺简单的,语法学完再看看虚拟机原理,关键源码(lua虚拟机是用c写的,而且开源)读一读,基本都能熟练掌握。网上学习资料也有很多关于项目,其实只要不是ui点点点,走路模拟器,跑跑跳跳吃金币这种,都行。关键要有技术闪光点。打个比方,都是跑跑跳跳吃金币,有的人只会给金币加个碰撞体,做个输入绑定,播个动画就完事,这种属于培训班2天速成的。有的人能做循环地图,随机路径金币生成,角色动画没有滑步跳变,位移方式和角色姿态多样,这种就是有技术闪光点的关于面试,面试看的所谓技术,是你对引擎工具的了解程度,毕竟刚入行的做游戏就是拿工具拼好游嘛。但是能拼好游的多了去了,培训班速成的一大堆,so只能看你知不知道工具上各个螺丝钉是干啥的,或者看你能不能把工具抡得虎虎生风举个栗子:面试官问你怎么做枪械开火的命中检测。你说我不知道,下个公司见。你说射线检测,或者给子弹加个碰撞体,下等马。你说考虑到对远距离目标的弹道下坠问题,需要分段射线检测,中等马。你说对低速子弹,比如手雷,箭矢,给子弹加碰撞体,同时考虑到隧穿问题,风速问题等,上里马。你说我还知道射线/碰撞检测的原理,我还知道如何处理网络延迟,千里马。最后聊聊服务器,ue项目的服务器主要是在做非战斗的,系统侧的业务。比如什么改改勋章啊,发发成就啊,送送奖励啊这种。战斗的部分是由客户端做的(因为ds和客户端代码是一体的)。有项目(这种一般是陈年老项目,或是有大佬为了晋级想重复造轮子)不用ds的,会让服务器参与到战斗里去,这种比较少。unity项目的服务器在干什么我不懂。原本是想写点毕业一年的总结,结果临时起意突发奇想地想给没入行的朋友们写点感受。行文不成体系,多有碎碎念。错字先发后改。看到这里的同学,如果能帮到你就最好啦
程序员小白条:[赞干货,就是文章可以搞些排版和格式[赞]
点赞 评论 收藏
分享
搞不动了,没心思刷算法题了。分享一下今天的面经。重点是数据结构和算法,和一点点UI和c#Q:C#中哪些数据结构是连续的,哪些是不连续的?A:数组,List,dictionary,ArrayList,队列,栈,优先级队列,hashset是连续的,LinkedList是不连续的。Q:Dictionary的这个哈希表是不连续,你知道它的这个哈希算法是什么吗?A:不知道,就回答类似取余的操作。Q:什么是哈希冲突?可以用拉链法来解决哈希冲突,还有什么其他的解决方法吗?A:不知道Q:那如果拉链法来解决哈希冲突,那么去实现这个key的查找的过程是怎么实现的。A:这里答半天没答到点子上。后来面试官提醒说直接key就能找到在拉链上的元素。Q:用一个数组来实现一个可扩容的栈。首先需要对外提供什么借口呢?A:入栈,出栈,返回栈顶元素。Q:在这个各个的方法里面具体需要做哪些元素。A:定一个一个数组大小后,就直接用一个索引指针这个栈顶元素,然后入栈就不断的将这个指针往后面移动。如果大小超过的话就触发一个扩容的接口。Q:二叉树里面有一些特殊的二叉树。知道它的特性吗?A:这个靠印象回答好像是只能缺一个最右下角的节点。活着全部都是不缺的。Q:定义一个二叉树的根节点的高度为0,现在一个高度为h的满二叉树。总共的节点数是多少?A:说就类似一个等比数列求和。忘了求和咋算。面试官告诉我2^(h + 1) - 1;Q:完全二叉树了解吗?A:说左右子树的高度差不可以大于1。Q:但是这样的数不一定是完全二叉树A:不知道。Q:二叉树,怎么实现一个层序遍历?A:回答说通过一个队列记录每一层的元素,依次入队出队。Q:是用递归实现的吗?那这个递归实现的结束条件是什么?A:不太确定,说这个深度等于这个树的高度。好像不是递归实现的,不太记得。Q:如果实现深度优先遍历?A:不断递归,终止条件是这个节点是空就returnQ:如果用非递归的方式怎么实现深度优先遍历?A:不知道。Q:抽象类和接口的区别。A:抽象类不可实例化,接口也不能够实例化。抽象类是单继承,接口可以继承多个接口。抽象类中的抽象方法必须用abstract来修饰,但是接口里面的方法本身就是抽象的,必须被实现。不需要修饰。Q:C#垃圾回收机制了解吗?A:说分代回收,说了三代回收的一个机制。Q:这个回收的具体过程呢,怎么去判断哪些对象可以会回收掉?A:有印象,回答说就是不断去标记一些对象。Q:GC是分代了,但是最关键的是得先回收掉才能分代,最关键的是它怎么清除这一步,后面才是整理。A:没理解要问的是清除的过程还是分代的过程,但我这一块都还不清楚。Q:UI上都用哪些组件?A:这个会。Q:Canvas下有一个属性叫渲染模式 Render Mode,有几种A:屏幕空间覆盖,屏幕空间摄像机,世界空间Q:在Canvas里面有一个分辨率组件,这个是干什么的?A:UIScalerMode,可以控制UI元素在不同分辨率下的缩放逻辑。Q:ScrollView这个组件的使用,用什么组件可以实现列表里物品的排序,A:好像是一个Layout的组件,这个好久没做了,现在没想起来叫什么。很多地方都在想,吱吱唔唔没答出来,后面反问面试官对我的建议,说数据结构是基础,不管找啥工作都需要学好,可以加强一下。后续:应该是无了。
查看21道真题和解析
点赞 评论 收藏
分享
评论
点赞
7
分享

创作者周榜

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