当前位置: 首页> 娱乐> 影视 > 游戏开发面试题5

游戏开发面试题5

时间:2025/7/13 9:03:39来源:https://blog.csdn.net/qq_47012987/article/details/140251245 浏览次数:0次

什么是进程、线程、协程

进程

进程是计算机的一种基本运行单位,由操作系统管理资源和分配资源的基本单位,进程可以理解为一个正在运行的程序

线程

线程是计算机的一种独立执行单元,是操作系统能够进行运算调度的基本单位,线程之间共享资源,是两个同时进行的管道

协程

协程是一种假多线程,可以将代码分时执行,不卡主线程,把可能让主线程卡顿的耗时逻辑分时分布执行

进程通信方式

  • 管道:是一种半双工的通信方式,允许一个进程将数据发送给另一个进程,但只能在具有共同祖先的进程之间使用。
  • 信号:是一种即时的、不可靠的进程之间通信方式,不支持数据传输。
  • 消息队列:是进程之间的可靠通信方式,用于在不同进程之间传递消息。
  • 共享内存:高效,允许多个进程共享一块内存区域,以实现进程的通信,支持大量数据传输
  • 套接字(Socket):可靠的通信方式,在两个不同的进程(不同机器)之间建立一个逻辑连接,实现进程之间的通信,支持同步和异步的通信,可以传输大量数据

怎么处理并发

使用锁:在对数据进行操作之前,先对数据加一个锁,在操作完成之后在释放锁

进程和线程的区别

进程拥有独立的内存空间,线程是共享进程的内存空间

一个进程可以包含多个线程,线程不能独立存在,必须依赖于进程

进程独立分配资源,线程之间共享资源

进程之间相互独立,互不影响,线程共享资源,相互之间会有影响

协程与线程的区别

线程是独立运行的管道,和主线程并行执行

协程是再原线程之上开启的,进行逻辑分时分布处理

线程是由操作系统调度执行的,而协程是由程序自身控制执行的

一个线程可以有多个协程

快排的思想

  1. 首先在数组中选择一个基准元素,通常选择第一个元素或者最后一个元素;
  2. 分区操作,将比基准元素小的放到左边,将比基准元素大的放到右边;
  3. 递归地对左右两部分子数组分别重复上述步骤,直到所有分区只剩下一个元素为止,这就意味着排序结束。

给你一个有序的数组,怎么将他打乱

可以使用Fisher–Yates Shuffle算法,它是一种随机洗牌算法。
算法步骤如下:

  1. 从最后一个元素开始,随机选择一个位置,并将其与最后一个元素交换。
  2. 重复步骤1,直到把第一个元素也随机交换一次。
    以下是实现的C++代码:
  • void shuffle(int array[], int n)
  • {
  • for (int i = n - 1; i > 0; i–)
  • {
  • int j = rand() % (i + 1);
  • swap(array[i], array[j]);
  • }
  • }

多态的实现

  • 静态多态是指编译时多态,它是通过重载实现的,即多个函数名称相同,参数列表不同的函数,编译器在编译时就能根据参数列表的不同来区分调用哪一个函数。
  • 动态多态是指运行时多态,它是通过虚函数实现的,即父类中声明一个虚函数,在其子类中重写该函数,在程序运行时,根据实际对象的类型来调用其对应的函数,从而实现多态。

map和set插入删除有啥区别

  1. map支持插入和删除操作,而set只支持插入操作,不支持删除操作。
  2. map中插入的数据是键值对,而set插入的是单一的值。
  3. map插入数据时,key必须是唯一的,而set插入数据时,值也必须是唯一的。
  4. map支持插入和删除操作,而set只支持插入操作,不支持删除操作。

socket通信,如果客户端崩溃服务器会怎么样

如果服务端发送数据给客户端没有得到任何的反馈,在超时之后服务端会发送一个探测报文,在连续发送十个探测报文都没有得到回应,服务端默认此次连接关闭。

git用过吗 dev分支合并到master分支用什么

关键字:游戏开发面试题5

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: