近期游戏开发的笔面试Ⅱ

我的秋招还没结束,而且还得持续到十二月了。

以下是十月底到十一月底的笔试面试记录。除了华子,岗位都是游戏开发(或者叫前端开发啥的,就这意思)。不是时间顺序,随缘写的。

极致游戏笔试

27道选择3道编程,80min

  • 选择什么都在考,c++,操作系统,数据结构,甚至还考了好几道数学题,甚至有一道给我很强的小学奥数题的即视感,做烦了乱选了
  • 类似于路径总和Ⅱ(lc113)
  • 括号的分数(lc856)
  • 最长公共后缀(只是从lc14的前缀变成了后缀)

4399一面

纯KPI面。

二十分钟。自我介绍。随便问问项目细节,用了什么优化,最困难的是什么。最近有在学什么(我提到了c++,问我为什么要学这个。然后给我来了两个c++的问题:深拷贝和浅拷贝的区别;普通枚举和强类型枚举的区别)。性格有什么优点和缺点。现在学校那边是什么安排。投递过什么公司。未来1-3年的规划。

面试官说这是技术初面,以后如果有需要会联系我。无反问环节。那就是现在不需要呗,不需要你面我干啥?后来确实就挂了

极致游戏一面

40min。第一次遇到两个面试官

面试官自我介绍,然后我自我介绍

问的八股比较少

  • 介绍两个C#的容器
  • 字典的哈希是怎么实现的
  • 哈希算法有哪些。让你自己设计哈希算法的话会怎么做
  • C#的网络编程
  • TCP和UDP的区别
  • TCP粘包

主要是问项目的具体实现。为什么选择走游戏开发的路。甚至把我跟游戏无关的项目也问了问(Python爬虫,nlp。还问了如果爬取的数据规模很大,该怎么办)。

反问(项目组。base。工作强度。面试官也顺便问了我base的倾向和对加班的看法)

这公司是十月底面完的,两三周没消息,然后我发邮件问了HR,告诉我已经进了储备池。……

Garena笔试

  • 20多道(不是25就是27道)不定项选择,大部分是操作系统和数据结构,少部分c++
  • 1合并区间
  • 2合并有序链表+反转链表
  • 3重组数字,找到比原数字小的最大结果

2h。总的来说比较基础和简单,时间也很充裕。也是让我ak上了

华为

一天完成。线上。都追着问了项目(就是我的和软开无关的项目hhh)。聊得挺杂的,以下不完全。

  1. 一面:C#的GC,反射,序列化。错误和异常的区别。TCP三次握手。输入网址到网页显示的过程。快排的思想。快排为什么比冒泡快。笔试复盘。手撕有效的括号
  2. 二面:介绍几个C++的容器。指针。内存泄漏是什么,为什么会发生,如何解决。AVL树和红黑树。哪些地方用了红黑树。map底层如何用红黑树做的。TCP三次握手,为什么是三次,两次四次行不行。手撕两数之和
  3. 主管面:对华为了解多少。职业规划。自己的优势和劣势。(你说你兴趣在编程,为什么当初没有选计算机专业?)另外这个主管居然懂一些游戏引擎和渲染的东西,有点强。

可能真缺人吧,手撕如此简单。1145和25定律也是都应验了,丝滑入池。

Garena一面

二十分钟

一面一上来先简单问了下项目,然后就是三个场景题……每个场景题都展开了聊的。以下是场景题大意

  • 大型多人在线的玩家信息同步策略,包括数据结构和算法设计
  • 编译器中,脚本互相import了对方,导致重复编译,如何解决
  • 10个玩家在副本中跑酷,选择帧同步还是状态同步

反问

广州途游

11.9电话询问我的情况,是不是不想做捕鱼,说广州途游那边有一个在研SLG项目,我有没有兴趣。于是约了面试,开启途游二周目

一面

26分钟。面试官没自我介绍也没开摄像头

自我介绍

  • 讲讲BFS,如何实现的,复杂度是多少
  • 介绍A*
  • 帧同步和状态同步的区别
  • 说说你知道哪些游戏是帧同步,哪些是状态同步的
  • 在A*中,如果得到的路径全是拐角(像楼梯一样),设计一个算法在最后得到路径的时候优化这条路径让它平滑一些
  • 了解Unity近几年的新技术吗?比如DOTS,ECS,Burst。简单讲讲
  • 你做项目的这段时间你有什么收获和提升吗
  • 如果让你从头再开始写这个项目,你觉得你有哪些需要改进的地方吗

反问(在研项目能再详细讲讲么。听说在研项目的工作强度一般都很高,是吗。我该如何提升游戏开发的技术)

两个小时后电话约二面

15min。面试官自我介绍是研发负责人,但是这一面几乎纯聊天,技术向的纯聊天

问项目。成绩如何?玩过什么游戏?怎么学的unity?了解图形学和渲染吗(此处讲了讲渲染流程)?写过shader吗?

……之后没几天挂了

Garena二面

35分钟。有点想到啥问啥的感觉

自我介绍

  • 介绍一下你的项目
  • 项目中敌人AI怎么做的?
  • FSM具体怎么设计的?
  • 状态之间怎么转换的?(我是硬编码的,后来知道了,最好的写法是解耦的)
  • 知道或者项目用了什么设计模式吗?
  • 项目中用的什么寻路?(A*)项目中的寻路单位之间有碰撞吗?(有)那各单位之间是如何躲避的?(我知道这应该是在问动态避障,但是解决办法只想得起来是叫RVO,具体是怎么做的忘了,所以临场只说了寻路选定一条路径之后会略微提高这条路径的代价,以此减小其他单位选择这条路径的概率,可以在一定程度上起到局部回避的效果)
  • 场景:如果有很多玩家同场竞技,如何制作一个排行榜
  • 介绍堆
  • 向堆中加入新元素时的复杂度是多少?
  • 堆一般是用什么数据结构在存储?(数组)
  • 为什么堆用数组,而一般的树却常用结点?
  • 场景:玩家抽奖,在24h后可以抽下一次,服务器需要在24h到时,向玩家发送通知,如何设计服务端的数据结构?(我答单调队列)
  • 进一步:如果每个玩家下一次抽奖的时间不固定(24h变成任意时间间隔),又该如何设计?(我答优先队列。又问还有别的方法吗,思考了一会儿可能可以用哈希表)
  • 进程线程的区别
  • 进程通信方式
  • Unity协程和线程的区别
  • Unity协程是如何实现的
  • Unity你还了解些什么?(答动画系统和渲染管线)于是问了渲染流程
  • 智力题:12个乒乓球,用天平找坏的(还是第一次在面试中被问智力题。虽然我也知道这题很经典,但是真没想到会问到我头上,一直没有提前去看过标准答案,淦)

反问

字节一面

十一月我唯一一次的补录捞人,但也是我秋招至今最残忍的一次c++拷打

项目组是用ue,只能说可惜吧,把握不住机会,我c++确实不熟,技术栈全在Unity

自我介绍

  • 你擅长什么语言(C#)我们项目组主要使用c++,所以我还是会问你c++的问题(……)
  • 内存对齐
  • 一个struct的sizeof的大小由什么决定
  • 一个struct中char,int,double类型变量各一个,sizeof是多少
  • 如果有三个char呢
  • 如果是空的struct,里面什么也没有呢
  • 继承与虚函数
  • 讲讲虚函数
  • 虚函数是如何实现的
  • 虚函数表里有什么
  • 虚表指针的大小是多少
  • 父类和子类的构造和析构函数的调用顺序是怎么样的
  • 如果在构造函数中调用虚函数会怎么样
  • 如果子类完全没有重写父类的虚函数,那么有几张虚函数表
  • 智能指针
  • 有哪些智能指针
  • unique ptr的特点
  • shared ptr是怎么实现的
  • STL
  • 讲讲vector
  • vector扩容时,什么情况下不会发生元素的复制?
  • 讲讲map和unordered map的底层实现
  • 算法
  • A*有什么缺点?什么场景不适合用A*?
  • 什么算法才能求出最短路径?
  • 讲讲迪杰斯特拉的步骤
  • OS
  • 进程和线程的区别
  • 线程的通信方式(不会,问能不能说进程的)
  • 进程的通信方式
  • 共享内存是如何实现的
  • 共享内存下,进程是如何做同步的
  • 场景:如何在游戏中实现一个人一边走一边打拳的动画
  • 场景:场景里有很多需要倒计时的东西,如何设计实现倒计时
  • 场景里有上千个倒计时,每帧都需要全部遍历?
  • 如果很多都是短时间的,难以按时间长短区分?
  • 项目有什么难点,是如何解决的

反问

确实是比较常见的C++八股,但是毕竟不太会C++,也没怎么准备,所以遗憾……

秋招是真的要结束了,现在主要在等两家公司推流程,其他的,就保持一下手感吧。还不能松懈……

全部评论
猛的,哥
1 回复 分享
发布于 11-29 23:55 北京
佬,加油,我和佬的区别在于我十一月没什么面试
1 回复 分享
发布于 昨天 10:27 江苏
太艰难了加油呀佬
1 回复 分享
发布于 昨天 16:15 广东
佬,能问一下你garena从笔试到约面的timeline吗,我是这个月17号那样ak的,等了老久也没啥消息
点赞 回复 分享
发布于 11-30 01:50 广东

相关推荐

11-29 19:19
点赞 评论 收藏
分享
评论
5
13
分享
牛客网
牛客企业服务