Unity面试(2022.2.17 - 18)
(废话)
本来昨天的面试应该在写一篇文章做一个总结的。可惜啊,我并没有做。不然今天的二面可能通过的几率就大了。太离谱了,为什么两次面试会考同样的题目啊。难道是为了测试我的学习态度?可是我也不是每一天都有空去针对的复习啊。唉,算了。我菜就是菜了,菜才是一切悲哀的源头。
以下都是本人的面试记录。答案都是从我自己的认知和我在网上找到的答案。如果你觉得我的答案不好你也可以去网上找一份
面试记录2022.2.17
1.你做得项目里面有用到什么框架吗?
答:按自己项目来回答
这种问题按照自己做过的项目来就好了。如果没有就准备一下。我倒是没有用到什么框架的,所以我随便扯了一下。如果你也没有那记得面试的时候准备一下编的好一点。
2.协程的原理
答:Unity中协程的实现原理其实就是C#中的迭代器原理。协程有两个函数Current和MoveNext。满足MoveNext条件时才可以访问Current。
协程的原理在很多Unity面试的地方都有提到了。
3.协程的应用
答:场景过渡、网络加载和时间计算。
4.C#提供的数据结构中哪个是用二叉树进行实现的
这题我不会。
5. ...
笔试(乐言2022.2.11)
前言
笔试结果应该是挂了。这也没什么好说的。只能怪自己太傻逼了。唉。但是感觉要是就这样心里总是感觉很不愉快。所以我就写一下了这文章了感慨一下了。事先说明,本人使用的C#语言。文章中的代码部分都是C#。
第一题 程序填空题
阅读下列程序说明和
C#程序,将应填入__(n)__处的字句写在答题纸的对应栏内。
【程序说明】
应用计算机处理日常事务或者是编写程序的时候,经常需要用到带有通配符的字符串匹配。比如:linux命令行下输入,ls
.txt
就是列出当前目录下所有的结尾是.txt的文件。下面一段函数实现了带有\(和*两种通配符的字符串的匹配功能。其中:\)表示长度大于0的数字串,表示任意长度的字符串。要求:按照自己对于算法的理解填写该函数的5个空白。
请注意:必须是完全匹配才能返回true,比如1.txt, a.txt可以匹配*.txt,
2.tx或者
2.txta不能匹配*.txt。函数的参数与返回值的说明请参见函数的注释。
// 功能描述:
表达式是否匹配成功, $表示长度大于 0 的数字串,*表示任意长的字符串
// 输入参数:
字符串 rul ...
C#中用其他类给所需类扩展方法
C#中使用其他类给所需类扩展方法
有时候我们会觉得C#某些类中的一些方法不满足我们的需求,但因此多开一个新类调用时又有些分割感。而这样的方法又会在许多的地方用到,所以单独作为函数又增加了代码的复杂度。那么我们就可以使用扩展方法使得这个类中出现符合我们需求的方法。虽然这仍然要多加新的类,但是调用这个方法时却是使用原先的类。这样会减少一份‘分割感’让我们使用起来更加的方便。
扩展方法的代码入下:
12345678910public static ClassName{ //T表示你要扩展的类名。 //实例中是有返回值的,如果你无需返回值那么可以改为void //param表示参数,这个可以为空即括号中可为(this T),this T不能丢 public static T FunName(this T,param) { return default(T); }}
快速幂模板
关于快速幂算法
所谓的快速幂算法就是进行快速幂运算的算法。它的思想可以看做是将一个幂运算拆分两个指数只差一的幂运算。
例如n的2m次方,我们就拆成两个n的m次方。而n的2m+1次方,我们就拆成n的m次方和n的m+1次方。所以快速幂的时间复杂是O(log)。
上面的思想我觉得比较容易去理解。快速幂还有一种解释。(其实和上面得差不多。但是如果要用非递归的思想去写模板的话那上面的想法就难实现了。)
我们将所要进行幂运算的指数变为二进制形式。然后我们再用二进制转为十进制的思想进行幂运算。这里我就举一个具体的指数吧。n的13和18次方。13的二进制数为:(1101)。18的二进制数为(10010)。那么将(1101)变为13要进行下面的运算:20*1+21*0+22*1+23*1。即1+4+8,那么我们就可以把n的13次方看做是n*n4*n8(这里的指数也很特殊)。18也是一样的想法你可以自己转换一下。那对于我们来说我们只要每次判断指数二进制数中每位的数并让n每次都和自己相乘,当判断到其数为1的时候就将我们所要返回的数乘上此时的n就可以了。那么其时间复杂度也是O( ...
计算机网络-tcp的拥塞控制
TCP的拥塞控制方法
前言:TCP的拥塞控制方法有:慢开始,拥塞避免,快重传和快恢复。这是我在考试后进行的一次整理,如果有错的话也请指出。(主要是我做错了,难受)
1.慢开始
主机刚刚开始发送报文段时,可先设置拥塞窗口
cwnd=1(即设置为1个最大报文段MSS的数值),在每收到一个对新的报文段的确认后,将拥塞窗口加
1,即增加一个 MSS
的数值(重传的不算在内)。使用慢开始算法后,每经过一个传输轮次,拥塞窗口
cwnd 就加倍。一个传输轮次所经历的时间其实就是往返时间
RTT。“传输轮次”更加强调:把拥塞窗口
cwnd
所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。为防止拥塞窗口增加过大引起网络拥塞,还需要设置一个“慢开始门限(ssthresh)”
2.拥塞避免
拥塞避免:让拥塞窗口 cwnd
缓慢地增大,即每经过一个往返时间 RTT
就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口
cwnd 按线性规律缓慢增长。
慢开始和拥塞避免按照下面的规则进行使用:
当 cwnd < ssthr ...
数据结构-二叉树
前言
这篇文章是我学习二叉树的总结。希望本文章能给那么带来一些帮助。有错的地方也请指出,我会更正的。
二叉树简介
百度百科
我理解的概念
所谓的二叉树也就是树结构的一种,只是二叉树中的任意一个点最多只能指向两个点,并且这个指向是有方向性的也就是我们所说的“左孩子”和“右孩子”。这个方向性是很重要的,因为你在之后使用二叉树需要区别数的时候就要用到。比如堆排序和编码等。如果你不明白什么是堆排序或者编码也没关系。你只要知道二叉树每个点的“孩子”最多两个且是它是有方向性的。
树的相关术语
树的节点(node):包含一个数据元素及若干指向子树的分支;
孩子节点(child node):节点的子树的根称为该节点的孩子;
双亲节点:B 节点是A 节点的孩子,则A节点是B 节点的双亲;
兄弟节点:同一双亲的孩子节点;
堂兄节点:也就是同一层上的节点但是双亲不同;
祖先节点: 从根到该节点的所经分支上的所有节点
子孙节点:以某节点为根的子树中任一节点都称为该节点的子孙
节点层:根节点的层定义为1;根的孩子为第二层节点,依此类推;
树的深度:树中最大的节点层
...
算法—-广度优先搜索
前言:
本篇文章是对我学习广度优先时所刷部分题目的总结。
什么是广度优先搜索
我理解的广度优先搜索是在横向进行搜索的时候使用的方法。具体说明参照百度百科就好了。
算法应用场景
最简单明了的需要用到广度优先的题目一般是让你在一个图上找到从某点到另外一点最短的距离。这样的题目出来了就是用广度优先,虽然有时候深度优先也可以但是一般广度优先会更好。
广度优先搜索的题目意思都是
说从某点开始以特定的步骤进行移动最终到达符合条件的点。这里并不仅仅局限于图论,还可以用于其他的地方。
总而言之,凡是需要进行横向查询某一个事物的时候都可以使用广度优先搜索。
具体题目
这里我展示一些经典的题目来具体说明。
POJ
3699
1234567891011121314151617181920212223242526272829303132DescriptionBessie hears that an extraordinary meteor shower is coming; reports say that these meteors will crash i ...
算法——求最大公约数
前言
这篇文章我将介绍两个最大公约数的算法并讲解一些题目。有错的地方,请大家多多包涵。
介绍
最大公约数(最大公因数)指的就是可以同时被整数a和b整除的最大数(百度百科链接)。用代码来求最大公约数一般用这两种思想。
辗转相除法:也称欧几里德算法。
更相减损法:也称更向减损术。
算法实现
辗转相除法
设两个整数a和b(这里默认a>b)。a%b得到整数c,然后a=c如果换完后a<b那么a
b互换后再进行上面的操作直到出现整数a被整数b整除。这时候的整数b就是最大的公约数。它的证明太复杂了,我感觉这个链接中的证明就很好了。所以我这里就不证明了。
辗转相除发的算法实现
12345678910111213141516171819int __gcd(int a, int b){ if (a%b==0)//如果可以a可以被b整除就意味着b就是最大公约数 { return b; } else { a = a % b; if (a>b)//如果a小于b那么a%b会一直为a,函数就会进行死 ...
对于oj做题中会出现的问题分析
前言
有时候我们做题会出现WA,RE,PE等错误。这可能是因为我们在细节上出错。这里我就罗列一些我在做题时常见的错误。希望可以给你一点借鉴。
Presentation Error
中文意思:输出格式错误。顾名思义,它就表示你输出结果的格式错误。
出错情况:
(1) 有时候题目虽然没有要求最后一个数子不带空格但是它给出的结果却会是这样。
(2) 你忘记了输出空格或者换行。
解决方法:
检查你的输出是否符合题意,再检查一下题目的输出样式,查明是否最后一个不带空格。
Compilation Error
中文意思:编译错误。这个错误就是表示你的代码编译不通过。
出错情况:
(1) 你的代码有语法错误。
(2) 你的编译器和oj上的编译器不一样。因此某些你编译器上支持的语法在oj上的编译器上不支持,最终导致了CE错。
解决方法:
一般oj上都有提示你错在哪里,你只要按照oj的提示修改就好了。
如果oj上面没有提示。那你只能先去你本地的编译器上调试一下,有错就修改。否则就是oj上的编译器和你的编译器支持的语 ...
算法—-拓扑排序
前言
这篇文章是我对于自己学习拓扑排序的一个总结,如果有错的地方请大家见谅。
什么是拓扑排序
这里我就简单的说明一下。拓扑排序就是在有向图中只有出的没有进的点先排除掉。你只要遇到这类的题只要记住这个思想接下来就是空间和时间复杂度的考虑了。(如果你要在深度了解或是看我这个说明不明白的话可以自行百度,百度百科链接)
在一个图中如果你要想排出所有的点,那么只有无环的有向图才可以把所有的点排出去。而且当我们进行拓扑排序的时候,由于大家想法不一样每一个人排出来的顺序都有可能不同。题目就会在这两个方面来进行设题。题目有时不一定会给你有向无环图,而且为了保证答案的唯一性题目会给你一个排序的规则。这时候你必须要看清题目的需求来进行做题。
如何实现拓扑排序
首先我们要先建立有向图。那么我们肯定要有两个数据:一个表示点,另一个表示点的指向。在这里举一些本人常用的方法,当然具体使用的时候要按照实际的需求来。
方法一:二维数组。
用行来表示图上的点,用列表示点的指向。一开始我们用0来填充这个表示图的二维数组。假设点1指向点2那么我们就可以让a[1][2]= ...