游戏开发面试题5

news2024/10/6 7:23:48

什么是进程、线程、协程

进程

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

线程

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

协程

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

进程通信方式

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

按键控制LED流水灯模式定时器时钟

目录 1.定时器 2. STC89C52定时器资源 3.定时器框图 4. 定时器工作模式 5.中断系统 1)介绍 2)流程图:​编辑 3)STC89C52中断资源 4)定时器和中断系统 5)定时器的相关寄存器 6.按键控制LED流水灯模…

三丰云评测:免费虚拟主机和免费云服务器体验

近年来,随着互联网的快速发展,越来越多的人开始关注云计算服务。在众多云计算服务提供商中,三丰云备受关注,其免费虚拟主机和免费云服务器服务备受赞誉。今天我们就来进行一次三丰云的评测。首先让我们来看看三丰云的免费虚拟主机…

【运算放大器学习】

运算放大器学习 运放的选型一般主要需要观察以下几个参数,下面一起来理解一下几个核心参数的意义;今天说 输入失调电压 、失调电压温漂 、 偏置电流 、 失调电流几个参数; 放大器的几个主要参数 输入失调电压失调电压温漂偏置电流失调电流…

ECharts在最新版本中使用getInstanceByDom报错处理

引用问题导致报错 如果按如下引用的话,会报错 import echarts from “echarts/lib/echarts”; 原因 在 ECharts 的之前版本中,默认导出了一个名为 echarts 的对象,所以使用 import echarts from “echarts” 是没有问题的。但是在 ECharts …

用vue2+elementUI封装手机端选择器picker组件,支持单选、多选、远程搜索多选

单选注意点: touchmove.prevent: 在 touchmove 事件上添加 .prevent 修饰符,以阻止默认的滚动行为。 handleTouchStart: 记录触摸开始的 Y 坐标和当前的 translateY 值。 handleTouchMove: 计算触摸移动的距离,并更新 translateY 值。 han…

「技术分享」FDL对接金蝶云API取数

很多企业的ERP系统都在用金蝶云星空,金蝶云星空API是IT人员获取数据的重要来源, 常常用来生成定制化报表,进行数据分析,或是将金蝶云的数据与OA系统、BI工具集成。 通常情况下,IT人员需要使用Python、Java等语言编写脚…

【机器学习】(基础篇一) —— 什么是机器学习

什么是机器学习 本系列博客为你从机器学习的介绍开始,使用大量的代码实战和验证,最终帮助你完全掌握什么是机器学习 人工智能、机器学习和深度学习的关系 人工智能(Artificial Intelligence,AI):是一门研…

algorithm算法库学习之——不修改序列的操作

algorithm此头文件是算法库的一部分。本篇介绍不修改序列的操作函数。 不修改序列的操作 all_ofany_ofnone_of (C11)(C11)(C11) 检查谓词是否对范围中所有、任一或无元素为 true (函数模板) for_each 应用函数到范围中的元素 (函数模板) for_each_n (C17) 应用一个函数对象到序…

上位机图像处理和嵌入式模块部署(mcu项目1:假设用51单片机实现)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 到目前位置,我们借助于qt和apm32 mcu芯片,实现了大多数功能。大家如果回过头来看,其实这些功能并不复杂。从固件…

Java(七)——多态

个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 &#x1…

Arcgis Api 三维聚合支持最新版API

Arcgis Api 三维聚合支持最新版API 最近有同学问我Arcgis api 三维聚合,官方还不支持三维聚合API,二维可以。所以依旧是通过GraphicLayers 类来实现,可支持最新Arcgis Api版本 效果图:

【APK】SDKManager运行后闪退

本地JDK已安装,且配置了环境变量,未安装 android studiio 问题描述:右键以管理员身份运行 SDKManager,终端窗口闪退 问题原因:未找到正确的Java路径 解决办法: 1.修改tools目录下的 android.bat 文件&am…

0301STM32GPIO外设输出

STM32GPIO外设输出 STM32内部的GPIO外设GPIO简介基本结构GPIO位结构输入部分:输出部分: GPIO八种工作模式浮空/上拉/下拉输入模拟输入开漏/推挽输出复用开漏/推挽输出 手册寄存器描述GPIO功能描述外设的GPIO配置GPIO寄存器描述端口输入数据寄存器端口输出…

Kafka第四篇——生产数据总体概括,源码解析分区策略,数据收集器,Sender发送线程,key值

目录 流程图以及总体概述 拦截器 分区器以及分区计算策略 为啥进行分区计算? producer生产者怎么知道有哪些分区? 分区计算 如何自定义实现分区器? 想说的在图里啦!宝宝!💡 ​编辑 如果key值忘记传递了呢&a…

Vue移动端地图App:van-uploader导致的卡顿问题

问题描述 基于Vue3+Vant IU 4开发的移动端地图App,在进行地图点位上报、上报记录查看过程中,出现App卡顿、甚至闪退的问题,进行问题定位之后,发现是van-uploader组件导致的问题。 van-uploader文件上传组件 van-uploader组件用于将本地的图片或文件上传至服务器,并在上传…

园区、社区、乡村的智能管理

智慧园区、社区、乡村管理系统是现代信息技术在城市化进程中的重要应用,它们通过集成多种技术手段,实现对园区、社区、乡村的全面、高效、智能化管理。以下是对这三种管理系统的详细阐述: 一、智慧园区管理系统 1. 定义与目的 智慧园区管理系统是运用物联网、云计算、大数…

Canal架构以及使用规范

Canal架构以及使用规范 一、Canal的作用 相关文档:GitHub - alibaba/canal: 阿里巴巴 MySQL binlog 增量订阅&消费组件 MySQL主备复制原理 MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可…

【做一道算一道】和为 K 的子数组

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2 示例 2: 输入:nums [1,2,3],…

分布式整合

一、分布式架构介绍 什么是分布式系统 分布式系统指一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 通俗的理解,分布式系统就是一个业务拆分成多个子业务,分布在不同的服务器节点&#xff0…

【数据结构与算法】快速排序霍尔版

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​