【2023暑期实习】字节朝夕|游戏开发客户端(更新4.6)

23暑期实习游戏开发岗1022616984

字节朝夕客户端二面

感觉难度和深度更大了orz

大概40min,有两个面试官(看见两个面试官之后疯狂紧张

自我介绍,如果一面有一些没有回答上来的问题也可以再和我们说一下 【只进行了自我介绍

数据结构和算法的话平时有没有刷过题或者有没有上过相关的课程? 【both

面试官A

  1. 先不做coding了,简单问一些问题,一个无序数组,可能有重复,给你另外一个值,要你找出两个 数组中的元素,说一下思路和算法。 【我第一遍把两个 数组中的元素理解成了两个数组 中的元素,然后让面试官又描述了一遍题面(虽然我知道应该是两数之和,但是我以为是什么变种 【然后想都没想说了先排序然后双指针

    • 追问: 如果要给出这两个数原始数组的索引怎么办?
    • 【应该就做不成了(想着不如说另一种解法,就说了应该做不成了
    • 引导:做不成吗?要不你再想想?
    • 【带着索引一起排序
    • 追问:前面提到了会有相同值,可能会使得有多对索引成立,要返回索引值最小的,用你的方法该怎么办?
    • 【可以再把索引也进行排序(殊不知我掉进了面试官挖的坑里
    • 麻烦了吧,排序里面有稳定排序和不稳定排序
    • 【沉默(感觉掉坑里了
    • 不再深问了,那你的这个算法时间复杂度大概是什么级别?
    • 排序nlogn + 遍历 n
    • 引导:你确定吗?要不你想一想最坏的情况是什么?
    • 最坏排序可以达到n方(我也不知道非得考虑最坏情况
    • 追问:你第二次遍历最坏的情况是什么?
    • 【我说的是要找的解在正中间(现在想了想,应该说在某一侧是最差的
    • 引导:你要不再想想?然后打断,有没有想过更快的办法?
    • 【哈希表
    • 追问:能具体说一下吗?
    • 【两数之和解法之一,不赘述了(早说这个方法就没上面那么多事了
  2. 说一下你在项目中用过哪些设计模式吗? 【单例、观察者、工厂(只是单纯回答了一下,但是没有具体举例子

    • 单例模式和工厂模式一起用过吗?
    • 【没有
    • 追问:那你的工厂模式是怎么用的?
    • 【把要用的工厂模式的函数变为静态
    • 追问:调用静态函数,如果在非主线程调用的话会有一些问题,不知道你在项目中有没有遇到过这种情况?如果有,或者说我希望你规避不规范的调用,你会怎么做?
    • 【没有遇见过这种情况,不太会处理
    • 我看你项目用到过观察者模式,是所有敌人监听一个对象,那如果有一万个敌人的话会一万个人都同时监听一个对象?
    • 【对,但可能会引发一系列的问题。
    • 追问:所以如果我要你解决这个问题,你该如何解决?
    • 【一万多个的话我可能不会让他们去做这个操作了(开始回避问题
    • 追问:这可能是解决方法中的一个,那如果要你解决一万个敌人监听一个对象这个问题,你要怎么解决?
    • 【胡言乱语瞎回答了“那就在敌人类里写死吧”
    • 好,我了解了。
  3. 我看到你这几个项目里都会有对敌人的管理,我想了解一下对对象的管理都是怎样的管理? 【首先是它的生成,比如用对象池来对内存进行管理;比如设计不同的类来管理不同的行为状态

    • 理解下来,还是对生命期的管理。
  4. 你有没有去了解一下游戏里场景或者物体管理的方法? 【对于素材的话我会文件夹分类,场景中的物体我会在视图窗口分类,场景的话写SceneManager来管理场景(不知道对不对

  5. 说一下你用NavMesh的时候,你对NavMesh的理解

面试官B

  1. 你觉得你对Unity最深入的模块是啥? 【感觉没有什么特别深入的

  2. UGUI,做手机游戏的话手机屏幕大小不一,适配的话你该怎么做? 【用Canvas里的适配长宽的设置

    • 追问:你是按宽还是按长呢?
    • 【按宽
    • 追问:为什么呢?
    • 【感觉(不是很清楚,就说按感觉
    • 追问:所有品类所有情况都按宽吗?
    • 【不太清楚,手机上开发得比较少
    • 追问:电脑上的宽高也不一样
    • 【我会锁定1080P
    • 追问:如果长屏的话你是会留黑边吗?
    • 【那我可能会把背景图片拉大一些
  3. 如果想让HUD固定在左上角,你会怎么做? 【用锚点

    • 追问:锚点是什么原理?
    • 【具体原理不清楚
    • 任何地方的锚点都是以画面为基准的吗?
    • 【这边开始没反应过来,后来引导之后答的以父物体为基准
    • 追问:所以如果让你设计的话,你会怎么设计锚点呢?让物体固定在左上角或者右上角或者拉伸?
    • 引导:子物体需要保存什么数据才能让它显示到相应的位置?
    • 【存储占父物体的长和宽的百分比位置
    • 追问:有了这些数据之后,如何计算这个UI的位置?

简单看一个代码考核 每个任务有一个ID号,同时有其依赖关系struct TaskConfig{public int ID; public List<int> dep } 策划给你一个任务列表传给你List<TaskConfig> configs;,同时已知任务完成的ID列表int[] completed

返回一个列表,玩家接下来可以完成哪些任务?

【最开始以为要拓扑排序,然后说了一下想法,面试官问有没有更简单的方法,考虑很久,想到可以直接遍历任务列表,然后对每个任务开始搜索其依赖是否完成,复杂度n方

其他

实习有感兴趣的方向的吗?

老板对你们管的严吗?

实习时间?

反问

  1. 你们现在做的项目是可以说的吗?
    • 不太能说,不过现在是在做一个海外休闲类的项目。
  2. 如果我进去的话会做什么工作?
    • 肯定是客户端的工作。可能会负责一个玩法的模块,主要用Lua来写,和策划美术对接,进行实现和调优,必要还会和服务端对接协议,有能力有诉求可以去服务端逻辑的编写和优化。
  3. 工作制度?
    • 上午10点开始,晚上7-8点;如果没做完或者需要和别的同学配合最晚9点,不会每天都是这样的。 ## 字节朝夕客户端一面

大概35min,不知道诸位有没有什么复习八股的好办法,操作系统实在是太难背了

### 自我介绍&项目

面试官自我介绍:绿洲工作室P3项目负责人

申请暑期的还是有可能后续日常也可以?

项目经历

介绍一下A项目

项目的游戏引擎,都是几个人做的

你觉得最有成就感/最满意的项目是什么?你能介绍一下吗?

为什么有成就感?

你觉得这几个项目里最有技术难点的是什么,可以和我分享一下吗?

【手写了一个简单的对象池来管理敌人、特效生成

可以说说如何实现的吗?

### 业务

一个进程有多个线程还是一个线程有多个进程?

两个线程之间通信的话大概会有哪些方法呢?

【没复习操作系统,只回答了一个 信号量

- 引导:有没有什么更简单一点的方法?

- 【沉默

- 引导:不考虑锁的话,最简单的方法应该是什么?

- 【将资源放在他们共有的进程里(我在说啥

- 追问:如果说一个线程一个只读一个只写的话,需要对资源进行加锁保护吗?

- 【需要(我猜的

- 追问:为什么?可以举个例子。

- 【如果对某个资源读取的同时对其写入的话可能会出问题(我猜的

#### Unity细节(真的很细节)

一个材质分为 sharedMaterial和普通的Material,他们两个有什么区别?

【面试官有点口音我没听清shared这个词,不过搜了一下发现确实我也没用过:

- 当使用Renderer.material的时候,每次调用都会生成一个新的material到内存中去,这在销毁物体的时候需要我们手动去销毁该material,否则会一直存在内存中。也可以在场景替换的时候使用Resources.UnloadUnusedAssets去统一释放内存。

- 当使用Renderer.sharedMaterial的时候并不会生成新的material,而是直接在原material上修改,并且修改后的设置就会被保存到项目工程中。

你在UGUI下显示过粒子吗?

【没用过

那在场景下有用过粒子吗?,在哪里用过?

【用过,比如爆炸相关的特效会用到。

在UGUI中接触过合批的概念吗?怎么才能把UI用比较高效的方式绘制呢?

【没接触过,管理的话可能会用pannel来管理

- 追问:了解过Canvas吗?

- 【画布,了解过一些。

- 用Canvas的时候是用几个呢?使用一个把UI都放在上面吗?

- 【有时候会分组用多个,不需要的会直接关闭Canvas

### 代码

有序数组用最快方式查找值,有该数返回下标,没有返回-1。

【二分(即答

(好像这次面试HR没给开编写代码的权限,所以只问了一道题,然后问了别的问题)

### 项目again

你的项目里是联机的还是单机的?

【都是单机的

你的B游戏里用了navmash寻路,自动寻路是怎么做的?

【直接用的Unity插件(没敢说知道A*,因为仅仅是知道

### 业务again

在函数外声明的变量和函数里面声明的变量有什么区别?

- 追问:如果是new出来的变量的话会存在哪里呢?

- 追问:三种变量的生命周期是怎么样的?

C++中new一个类出来,在内存中大概的结构是什么样的?(这个类有父类和祖先类,还都有各自的虚函数)

虚函数表的内容应该是什么样子的呢?

【之前看过,但是不记得先后顺序了

### 反问

1. 面试官现在是做什么的?

   - 正在做一个老虎机相关的游戏,客户端开发的负责人

2. 如果我进入到你们团队的话会做什么工作?

   - 刚开始很可能是去做系统,比如说促销或购买等,或小游戏的玩法,主要是UI操作相关的东西等,具体是什么会根据项目安排等。项目周期大概一两个星期。也可能是换换皮,比如圣诞节活动换上相应的主题素材

3. 团队中用的引擎和语言是什么?

   - (面试官对我的问题有点疑惑,我忘了招聘要求上写没写了)就是Unity,语言就是C#和Lua,Lua用得多一点,要用热更新。

#实习面经##面经##字节游戏#
全部评论
已变为凉经
点赞 回复 分享
发布于 2022-04-07 09:17
观察者模式,一万个敌人监听的问题,有思路了吗
点赞 回复 分享
发布于 2022-04-02 13:02

相关推荐

点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
07-22 11:07
门头沟学院 Java
点赞 评论 收藏
分享
评论
10
57
分享

创作者周榜

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