游戏开发面试题5

什么是进程、线程、协程

进程

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

线程

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

协程

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

进程通信方式

  • 管道:是一种半双工的通信方式,允许一个进程将数据发送给另一个进程,但只能在具有共同祖先的进程之间使用。
  • 信号:是一种即时的、不可靠的进程之间通信方式,不支持数据传输。
  • 消息队列:是进程之间的可靠通信方式,用于在不同进程之间传递消息。
  • 共享内存:高效,允许多个进程共享一块内存区域,以实现进程的通信,支持大量数据传输
  • 套接字(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分支用什么

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/781142.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ID3算法决策树

步骤: 先计算出信息量;信息熵;信息增量; 再比较信息增量的大小,确定分类依据。 信息量: 信息熵: 信息增益:

【网络安全】实验五(身份隐藏与ARP欺骗)

一、本次实验的实验目的 (1)了解网络攻击中常用的身份隐藏技术,掌握代理服务器的配置及使用方法 (2)通过实现ARP欺骗攻击,了解黑客利用协议缺陷进行网络攻击的一般方法 二、搭配环境 打开三台虚拟机&#…

IntelliJ IDEA 同时多行同时编辑操作快捷键

首先 点击要编辑的地方,长按鼠标左键不放,同时按住 Ctrl Shift Alt,然后就可以进行多行编辑了

【Unity】RPG2D龙城纷争(八)寻路系统

更新日期:2024年7月4日。 项目源码:第五章发布(正式开始游戏逻辑的章节) 索引 简介一、寻路系统二、寻路规则(角色移动)三、寻路规则(角色攻击)四、角色移动寻路1.自定义寻路规则2.寻…

如何根据控制框图写传递函数

控制框图(也称为方块图或信号流图)是控制系统工程中常用的一种图形表示方法,用于描述系统中各个组件之间的关系以及信号流向。传递函数则是描述线性时不变系统动态特性的数学模型,通常用于分析和设计控制系统。 识别组件&#xff…

Learn To Rank

在信息检索中,给定一个query,搜索引擎召回一系列相关的Documents,然后对这些Documents进行排序,最后将Top N的Documents输出。 排序问题最关注的是各Documents之间的相对顺序关系,而不是各个Documents的预测分最准确。…

GD32实战篇-双向数控BUCK-BOOST-BOOST升压理论基础

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布: https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

即时通讯平台项目测试(登录/注册页面)

http://8.130.98.211:8080/login.html项目访问地址:即时通讯平台http://8.130.98.211:8080/login.html 本篇文章进行登录和注册页面的测试。自动化脚本的依赖在文章末尾。 登录页面测试 UI测试 测试环境:Win11;IntelliJ IDEA 2023.2&#…

C语言课设--读取文件并统计数据

读取文件并统计数据 // 统计记事本英文字符数 //功能 &#xff1a; 读 文件 a.txt 统计出各种 数字 大写字母 小写字母 0~9 A~Z a ~z各有多少个 程序主体框架如下&#xff1a; #include<stdio.h> int a[128]{0};//其中数组元素a[i]保存 ASCII 码为i的字符的数量 v…

css样式学习样例之边框

成品效果 边框固定 .login_box{width: 450px;height: 300px;background-color: aliceblue;border-radius: 3px;position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%); }这段CSS代码定义了一个名为.login_box的类的样式&#xff0c;它主要用于创建一个登录框…

【在Linux世界中追寻伟大的One Piece】HTTPS协议原理

目录 1 -> HTTPS是什么&#xff1f; 2 -> 相关概念 2.1 -> 什么是"加密" 2.2 -> 为什么要加密 2.3 -> 常见的加密方式 2.4 -> 数据摘要 && 数据指纹 2.5 -> 数字签名 3 -> HTTPS的工作过程 3.1 -> 只使用对称加密 3.2 …

Linux系统安装软件包的方法rpm和yum详解

起因&#xff1a; 本篇文章是记录学习Centos7的历程 关于rpm 常见命令 1&#xff09;查看已经安装的软件包 rpm -q 软件包名 2&#xff09;查看文件的相关信息 rpm -qi 软件包名 3&#xff09;查看软件包的依赖关系 就是说要想安装这个软件包&#xff0c;就必须把一些前…

亚信安全发布2024年6月威胁态势,高危漏洞猛增60%

近日&#xff0c;亚信安全正式发布《2024年6月威胁态势报告》&#xff08;以下简称“报告”&#xff09;&#xff0c;报告显示&#xff0c;6月份新增信息安全漏洞 1794个&#xff0c;高危漏洞激增60%&#xff0c;涉及0day漏洞占67.67%&#xff1b;监测发现当前较活跃的勒索病毒…

CountDownLatch内部原理解析

文章目录 1、CountDownLatch介绍1.1、功能介绍1.2、demo1.3、问题 2、前置知识2.1、AQS整体结构2.1.1、整体结构2.1.2、state属性2.1.3、head和tail属性 3、CountDownLatchAPI源码解析3.1、countDown方法3.1.1、Sync类3.1.2、releaseShared方法3.1.3、tryReleaseShared方法 3.2…

C++库函数--next_permutation(详细)

next_permutation介绍 用于生成某个序列的下一个排列。它通常在需要生成排列的问题中使用&#xff0c;比如全排列问题。 使用方法 普通序列 &#xff1a;next_permutation&#xff08;起始地址&#xff0c;末尾地址1&#xff09; 结构体&#xff1a;next_permutation&#…

解决 Layout Inspector无法查看Component Tree 布局层级信息 | Android Studio Koala

问题描述 Tool -> Layout Inspector 显示下图&#xff0c;无法生成.li文件查看Component Tree&#xff0c;变成实时的Preview并功能点击操作&#xff0c;跟模拟器一样。 原因&#xff1a;默认勾选了"Enable embedded Layout Inspector"&#xff0c;启用了嵌入式…

笔记本电脑内存不够

笔记本电脑内存不够是众多笔记本用户面临的常见问题&#xff0c;尤其是对于一些需要处理大型文件或者运行复杂软件的用户&#xff0c;这个问题可能会严重影响笔记本的使用体验。那么&#xff0c;我们应该如何解决笔记本电脑内存不够的问题呢&#xff1f;本文将从几个方面进行详…

flask使用定时任务flask_apscheduler(APScheduler)

Flask-APScheduler描述: Flask-APScheduler 是一个 Flask 扩展&#xff0c;增加了对 APScheduler 的支持。 APScheduler 有三个内置的调度系统可供您使用&#xff1a; Cron 式调度&#xff08;可选开始/结束时间&#xff09; 基于间隔的执行&#xff08;以偶数间隔运行作业…

RabbitMq - Java客户端基础【简单案例 +Work模型】

目录 1、前置知识 1.1、AMQP怎么理解 1.2、Spring AMQP是什么 1.3、为什么要了解Spring-AMQP&#xff1f; 2、使用Spring-AMQP实现一个发消息案例 3、Work模型 问题&#xff1a; 优化&#xff1a; 小结&#xff1a;Work模型的使用&#xff1a; 1、前置知识 1.1、AMQP怎…

[激光原理与应用-101]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 5 - 3C行业应用 - 电子布局类型

目录 前言&#xff1a; 一、激光在3C行业的应用概述 1.1 概述 1.2 激光焊接在3C-电子行业应用 二、3C电子行业中激光焊接 2.1 纽扣电池 2.2 均温板 2.3 指纹识别器 2.4 摄像头模组 2.5 IC芯片切割 三、3C行业中激光切割 四、激光在3C行业中的其他应用 4.1 涂层去除…