同程游戏面试记录
在Boss上收到同程HR的面试邀请,简单聊了一下,大概情况心里了解了一下,加班少不了,虽说不是996但是肯定也不是965;薪资福利待遇基本能满足我的要求,因为目前还是在职状态,约的晚上6点面试.
时间:20210825-1800
地点:苏州同程大厦
任务:一面技术主程;二面制作人;三面Boss
大概6点10分钟左右到的同程大厦,路上有些事情耽误了,因为之前没有和HR沟通具体的面试地址,就知道在6楼,上6楼后发现大楼分A,B,C,D四个区很大,无奈问了几个办公的人员,后面有联系了HR才知道在D区,正常应该从大厦前台签到上来的,我是进来后面进来的随便找了电梯就上去了,就绕过了前台…..
根据HR的引导成功与HR会面,HR很贴心的看了一下我没有带简历,还问了一下,然后带我到会议室让我等待一会……
一面:技术主程
(后面二面和制作人聊的时候知道的)
面试官进来后先简单说了一下他是这次的面试官,叫xxx.
第一个问题就是简单的自己我介绍一下.面试官翻看着我的简历.
这个问题基本上百分之九十的面试都会问,简单的说一下就行,最好在介绍结尾的时候可以代入下一个话题,可以根据职位的需求进行分析,找一下相关的话题做为介绍的结尾,或者进行一个简答的反问.最好和技术相关和职位相关.
我当时介绍就是:我是xxx,今年xx岁,从事Unity开发3年多,目前是在职状态,主要技术栈是U3D,C#.偏前端开发.
然后就是问一些C#基础的技术问题,(技术问题只记得大概)
第一个问题:C#中两大数据类型是什么?
我第一反应是Array,List,堆,队列,字典,图等 发现对不上号,面试官说是2个,我这好几个,然后思考一下试探性的问了.
- 我:是数组,队列这些吗?
- 面试官:不是,我换个说法int是什么类型,string是什么类型?
- 我:int是值类型,string是应用类型
- 面试官:值类型和引用类型有什么区别
- 我:xxxxxxxxx(记不得说的了)
分析:这里我把数量类型和数据结构记混了 数据类型: C#中数据类型常用的有值类型和引用类型,还有指针类型不常用 值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的. 值类型包含 int、char、float、double、bool、byte,所有的整数类型和浮点类型都是 引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用 内置的 引用类型有: 和 string和object、dynamic
数据结构: C#中的数据结构有: Array(数组),ArrayList,List LinkedList(链表) Queue(队列) Stack(栈) HaskSet:(哈希表) Dictionary(字典),SortedDictionary(排序字典)
第二个问题:Array和List有什么区别?
- 我:Array是在声明是申请固定的长度,后期如果添加新元素超出原来的数值长度是需要申请新的内存,把原来的数组拷贝过去进行扩容,List可以理解成是Array的plus版本内部把这些操作处理好了,可以在内部可以动态的改变数组的长度.(还好我之前看过List的内部结构的文章).
第三个问题:堆与栈的区别?(这个问题在之前之前的其他公司的面试中也有遇到过还好我事后整理一下)
- 我:栈是快消类型,既用既消,在方法中声明的变量都是存放在栈中的;堆中存放的是实体的类型如类的参数/字段等.栈的速度比堆快.
堆与栈的区别: 1.栈内存存储的是局部变量而堆内存存储的是实体; 2.栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短; 3.栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时的回收。 栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
扩展: 请简述值类型与引用类型的区别 答:区别: 1.值类型存储在内存栈中,引用类型数据存储在内存堆中,而内存单元中存放的是堆中存放的地址。 2.值类型存取快,引用类型存取慢。 3.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针和引用。 4.栈的内存是自动释放的,堆内存是.NET中会由GC来自动释放。 5.值类型继承自System.ValueType,引用类型继承自System.Object。
然后看了看我的简历,根据我的简历又问了几个问题.这里重点说一些,写简历的时候必须要慎重,大部分面试官都会根据简历提问,自己写在简历上的东西必须知道熟悉.我简历上写熟悉设计模式.然后下个提问就来了?
第四个问题:你熟悉哪些设计模式?
还好我把xx设计模式看完了
我:单例,工厂,监听,(MD后面就记不得了)我常用的就这些.
面试官:你觉得单例有什么好处?
我:单例申明全局唯一个变量,可以直接访问,给我感觉就是开发更高效,比如可以在GameManager或者UIManager中使用…..(结合自己做过的项目.谈一谈)
面试官:你在什么时候用工厂模式?
我:比如在设计敌人的时候有些共同点和不同点,可以通过工厂模式,把一些功能设计成组件的模式在工场内部完成初始化,这些方法不对外部开放.(可以扩展到面相对象的三大原则封装基础多态的角度来谈)
第五个问题:怎么判读一个链表是否有环
这个我两天还在LeetCode刷到,记不起来了
我思考了一会.
我:这个我前两天还在LeetCode刷到的,突然记不起来了;
面试官:你平时在哪里刷LeetCode
public static bool hasCycle(ListNode head)
{
if (head == null)
return false;
//快慢两个指针
ListNode slow = head;
ListNode fast = head;
while (fast != null && fast.next != null)
{
//慢指针每次走一步
slow = slow.next;
//快指针每次走两步
fast = fast.next.next;
//如果相遇,说明有环,直接返回true
if (slow == fast)
return true;
}
//否则就是没环
return false;
}
然后和面试官闲聊了一会LeetCode和算法方面的问题
中间还有问了排序算法,冒泡,快排.插入
我说就知道会一个冒泡排序,冒泡排序比较稳定
然后聊了一下公司项目的情况,简单沟通了一下,就让我等一下.
分析:这次技术面试没有什么难点都是一些底层基础的问题,没有问道Unity3D相关的技术题目,就连链表检测的那个也是算比较基础的.整体不是特别难,后面了解才知道这个面试我的是目前技术主程,也是做Unity3D开发,不过公司最近做的项目都是用CocosCreator开发的.所以引擎方面的问题没有问的太多.
二面:制作人
- 制作人:简单介绍一下自己
- 我:xxxxxx
制作人看了看项目经验根据我之前做的项目简答聊了聊,看到我项目上有写mqtt问我是什么
- 我:mqtt是xxxxxxxxx.
聊了聊Socket的通讯在网络互连的第几层(七层框架:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层)
- 制作人:平时玩什么游戏吗?
- 我:英雄联盟,王者荣耀,吃鸡战场,偶尔涉猎一些新奇的小游戏.
- 制作人:你还有什么要问的吗
- 我:xxxxxxxxxxx(这个问题真很考验被面试者,通过你问的可以看出来你关心什么,每次被问到这个问题,我到头大
)
制作人:你以后职业规划是什么?
我:偏重视前端,以后发展想朝TA方面发展.
制作人说了说目前在做的项目和以后要做的项目,等等. 后面就是让我等一会
分析:制作人主要聊的是过去做的项目的和个人的成长规划,入职是否稳定.能否接受加班和对后期项目的接受程度.
三面:Boss
Boss现在不在,改天在约个时间吧.
20210830更新
隔了一天后收到HR的通知,约的周五晚上面试和Boss,简单和HR聊了一下Boss是发行人主要聊一些过往情况,未来发展等.
Boss:简单介绍一下自己.
我:XXXXXXX
Boss:说一下过去几家公司的经历.
- 我:XXXXXXX
Boss:说一下每次离职的原因.
我:XXXXXXX
Boss:你觉得那家公司对你的帮助最大.
我:XXXXXXXX
Boss:你为什么要加入我们公司.
我:XXXXXXX
Boss:你觉得你的优点是什么
我:XXXXXX(自我感觉当时回答的不好,应该说一下和工作和技术相关.)
Boss:你觉得你的缺点是什么
我:XXXXXX(自我感觉当时没有回答好)
- Boss:你未来的发展规划是什么样的
- 我:XXXXXX
分析:这次整体的感觉回答的不好.首先在和HR沟通之后知道Boss会聊一下过往经历和未来规划,自己也没有
做这方面的准备.其次这个算是比较正式的和我第一次和Boss面试.(之前的其他面试,基本上前面的技术过了,就是发offer了).这次的这个Boss面,询问的问题基本是围绕个人经历和职业规划这块的.有些问题也也问的比深入和直接,比如每次离职的原因是什么.基本上每个方向的问题都问的比较彻底.等消息吧!最后一面感觉有点悬.
——————————————————————END————————————————————
文档信息
- 本文作者:康
- 本文链接:https://startnight.github.io/2021/08/23/%E5%90%8C%E7%A8%8B%E6%B8%B8%E6%88%8F%E9%9D%A2%E8%AF%95%E8%AE%B0%E5%BD%95/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
