Unity客户端面经

乐道Unity客户端面经

  • 前言
  • 面试
    • 初试(一面)
      • 语言基础
      • 数据结构
      • 网络
      • 图形学
      • 操作系统
      • Unity
      • 设计模式
      • 美术
    • 复试(二面)
      • 语言基础
      • 数据结构与算法
      • 设计模式
      • 图形学
      • 美术
      • 想问面试官的

前言

由于之前跟着实验室做的项目还没结,自己还在当工具人,时间缩水,没有好好准备面试,结果面的很菜,当时就觉得自己凉了。没想到竟然通知我复试。
一面能有三四十分钟,二面二十分钟就差不多了,这也太弹性了吧。

建议大家还是尽早准备相关的内容,特别是不要太因为各种事情荒废时间,我现在就觉得在实验室当工具人太久了,该学的早学完了,又没空学/准备其他的,太亏了。

面试

初试(一面)

语言基础

因为我说我用C#比较多,所以主要问了C#的问题。

  • C#的值类型和引用类型
  • C#的int占用的字节数(这里因为很久没看答错了,应该是4个字节,long是8个)
  • 只占用一个字节的数据类型(同上面,答成了char,事实上char是2个字节,byte才是一个字节)
  • 使用类和结构体的区别(答不上来)
  • (举例Unity)Vector3是什么类型,A赋值给B后,A改变了B还会变吗?如果是类呢?(我都答的不变,但是实际上类的赋值是引用,所以应该会一起变才对)

这里贴上C#的数据类型表
Unity客户端面经_第1张图片
8位就是一个字节

数据结构

  • 队列和栈的区别(还主动说起了应用,结果队列的应用就没说上来。其实排队类型的需求都可以用队列)
  • 二叉搜索树如何搜索(刚开始人傻了在答深度和广度优先遍历,后来在面试官的引导下反应过来了)

网络

  • TCP和UDP的区别(因为没看所以不会)这里附上找到的TCP和UDP区别博客、三次握手和四次挥手
  • 还问我做过的游戏里没有用到过网络吗,我说我没做过网络的,都是本地的单机。(实在是惭愧)

图形学

  • 问我知不知道比如平面切割算法之类的(我说我图形学不会)

操作系统

  • 线程和进程的区别 进程的死锁(没答上来,只知道线程崩了进程会跟着崩)附进程和线程的区别
  • Unity的协程是运行在主线程还是其他线程(我答的其他线程,但实际上是主线程,因为Unity本身不支持多线程)

查了一下,进程死锁是由于进程之间抢夺资源或者顺序颠倒导致的(等待等不来的资源)。这里贴一个介绍死锁的博客。

Unity

  • 向量的点乘和叉乘(当时脑子突然空了,竟然答点乘可以计算距离…事实上是可以计算两个物体的前后方位的)
  • (具体情境)场景内AB两个角色,如何知道A在B的左还是右边(我答的使用叉乘结果的符号判断)

设计模式

  • 在做过的项目中,都使用过什么设计模式(我只记得用过单例模式)这里贴上菜鸟教程里的设计模式文档
  • 在Unity中,如何为游戏实现撤回功能(答不上来,也想不出来要用哪个设计模式,实际上应该是用命令模式)

美术

因为说看我简历里有不少美术的,可以考虑TA,就问我了相关的问题

  • 使用sp制作贴图的时候,都做过哪些类型的贴图(法线贴图之类的)

复试(二面)

语言基础

可能因为从一面的面试官听说了C#的事情,这一次就问我除了C#还有什么比较熟悉的语言,我就说了C++,于是就问我C++了。
下面是问的问题(可能有遗漏)

  • 一个字节是多少位(8)
  • 一个int占多少位(4*8=32)
  • 64位系统是什么意思(没了解过,查了一下,是指令的处理支持64位,寻址也支持更长的地址,寻址能力更强)
  • C++模板类,泛化和特化(有印象但是不知道,查了一下,泛化是通用性,特化是为了指定类型做特殊优化,而且还有个偏特化,是原本两个模板参数变成了一个,其中一个则是指定好的类型)
  • 操作符重载,new能不能重载(问new的时候我说应该不能,但是告诉我说能)
  • 父类与子类的构造与析构
  • 声明一个局部变量,会存储到栈,如何让它存储到堆(答不上来,就说应该是有个关键字,现在想来,应该指的就是用new关键字)
  • 学过Lua吗(没有学过,但是有这个想法)

数据结构与算法

  • 背包问题(不会,查了一下好像是要做动态规划,附查到的文章链接:背包问题)还有动态规划
  • 两个有序的int数组,如何算出他们的交集(当时我答的是双指针,两路归并的算法,别的没有想出来,查了查才明白确实有很多种方法,包括哈希表查询、在长数组中对短数组进行二分查找等方法)
  • set个map的区别(不会,当时以为是都是键值对,现在才发现set只有键,键值是同一个)

设计模式

  • 适配器模式(详见设计模式菜鸟文档)

图形学

  • 问我了不了解图形学(不了解)
  • 光栅化是什么(真的都不记得了,就说我只知道跟光栅有关的逐行、隔行扫描什么的,查了查才想起来光栅化是把图案对应和像素信息算出来)这里附一下图形学的渲染流程解释博客

美术

因为见我接触过shader,就问我shader一类的问题了

  • 自己都做过哪些shader
  • 如何实现一个描边shader(因为没做过,也没了解过,就老老实实说没做过,然后硬是想了一个算法)

想问面试官的

  • 问了如果入职会接触到哪些项目和工作
  • 竟然没问前边不会的问题(我也太傻了吧,只能自己查了)

你可能感兴趣的:(面经,面试)