游戏开发面试题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.mzph.cn/web/41444.shtml

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

相关文章

排序 -- 手撕归并排序(递归和非递归写法)

一、基本思想 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有…

汉诺塔与青蛙跳台阶

1.汉诺塔 根据汉诺塔 - 维基百科 介绍 1.1 背景 最早发明这个问题的人是法国数学家爱德华卢卡斯。 传说越南河内某间寺院有三根银棒,上串 64 个金盘。寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子;预言说当这些盘子移动完毕&am…

SpringMVC(2)——controller方法参数与html表单对应

controller方法参数与html表单对应 0. User实体类 import org.springframework.format.annotation.DateTimeFormat;import java.io.Serializable; import java.util.Date; import java.util.List; import java.util.Map;public class User implements Serializable {private …

ES7210高性能四通道音频ADC转换模拟麦克风为IIS数字咪头

特征 高性能多位 Delta-Σ 音频 ADC 102 dB 信噪比 -85 分贝 THDN 24 位,8 至 100 kHz 采样频率 I2S/PCM 主串行数据端口或从串行数据端口 支持TDM 256/384Fs、USB 12/24 MHz 和其他非标准音频系统时钟 低功耗待机模式 应用 麦克风阵列 智能音箱 远场语音捕获 订购…

微服务的分布式事务解决方案

微服务的分布式事务解决方案 1、分布式事务的理论模型1.1、X/Open 分布式事务模型1.2、两阶段提交协议1.3、三阶段提交协议 2、分布式事务常见解决方案2.1、TCC补偿型方案2.2、基于可靠性消息的最终一致性方案2.3、最大努力通知型方案 3、分布式事务中间件 Seata3.1、AT 模式3.…

人工智能在软件开发中的角色:助手还是取代者?

人工智能在软件开发中的角色:助手还是取代者? 随着科技的飞速发展,生成式人工智能(AIGC)在软件开发领域的应用越来越广泛。从代码生成、错误检测到自动化测试,AI工具正成为开发者的重要助手。然而&#xf…

Postgresql - 用户权限数据库

1、综述 在实际的软件项目开发过程中,用户权限控制可以说是所有运营系统中必不可少的一个重点功能,根据业务的复杂度,设计的时候可深可浅,但无论怎么变化,设计的思路基本都是围绕着用户、部门、角色、菜单这几个部分展…

Django QuerySet对象,filter()方法

filter()方法 用于实现数据过滤功能&#xff0c;相当于sql语句中的where子句。 filter(字段名__exact10) 或 filter(字段名10)类似sql 中的 10 filter(字段名__gt10) 类似SQL中的 >10 filter(price__lt29.99) 类似sql中的 <29.99 filter(字段名__gte10, 字段名__lte20…

程序升级bootloader

文章目录 概述什么是bootloader&#xff1f;为什么用&#xff1f;bootloader启动流程图步骤 下载过程代码获取本地配置信息获取主机传过来的配置信息bootloader发送2给上位机&#xff0c;上位机发送文件给bootloader根据网站复制CRC 烧写flasherase启动编译问题 概述 用keil编…

声明队列和交换机 + 消息转换器

目录 1、声明队列和交换机 方法一&#xff1a;基于Bean的方式声明 方法二&#xff1a;基于Spring注解的方式声明 2、消息转换器 1、声明队列和交换机 方法一&#xff1a;基于Bean的方式声明 注&#xff1a;队列和交换机的声明是放在消费者这边的&#xff0c;这位发送的人他…

Dynamic Web Module facet version问题

The default superclass, "javax.servlet.http.HttpServlet", according to the projects Dynamic Web Module facet version (3.1), was not found on the Java Build Path. 1.右键项目 2.点击Properties 3.点击Java Build Path&#xff0c;右边找到Libraries&…

大模型在营销领域的探索及创新

1 AIGA介绍 2 AIGA在营销领域的 应用和探索 3 总结与展望

java 如何暴露header给前端

在Java中&#xff0c;将HTTP响应的Header暴露给前端通常涉及在Web应用程序的服务器端代码中设置这些Header。这可以通过不同的Java Web框架来实现&#xff0c;比如Spring MVC、JAX-RS&#xff08;Jersey&#xff09;、Servlet等。这里&#xff0c;我将提供一个使用Spring MVC框…

学习笔记——交通安全分析13

目录 前言 当天学习笔记整理 5城市主干道交通安全分析 结束语 前言 #随着上一轮SPSS学习完成之后&#xff0c;本人又开始了新教材《交通安全分析》的学习 #整理过程不易&#xff0c;喜欢UP就点个免费的关注趴 #本期内容接上一期12笔记 当天学习笔记整理 5城市主干道交…

docker-compose Install gitlab 17.1.1

gitlab 前言 GitLab 是一个非常流行的开源 DevOps 平台,用于软件开发项目的整个生命周期管理。它提供了从版本控制、持续集成/持续部署(CI/CD)、项目规划到监控和安全的一系列工具。 前提要求 Linux安装 docker docker-compose 参考Windows 10 ,11 2022 docker docker-c…

多线程爬虫技术详解

&#x1f380;引言❤❤ 在当今信息爆炸的时代&#xff0c;网络爬虫&#xff08;Web Crawler&#xff09;作为一种自动获取网页内容的程序&#xff0c;已经成为数据挖掘和信息检索不可或缺的工具。多线程爬虫作为提高爬虫效率的重要手段&#xff0c;通过并行处理技术大幅度提升…

开发个人Go-ChatGPT--4 用户管理

开发个人Go-ChatGPT–4 用户管理 先看下我的目录结构&#xff0c;可以根据个人爱好&#xff0c;进行重构 |-- Dockerfile |-- LICENSE |-- common | |-- callmodel | | |-- gemma.go | | -- models.go | |-- consts | | |-- code.go | | |-- common.go |…

k8s 部署RuoYi-Vue-Plus之nginx部署

1.挂载存储 可参考 之前文章设置 https://blog.csdn.net/weimeibuqieryu/article/details/140183843 2.部署yaml 先创建命名空间ruoyi, 有就不用创建了 kubectl create namespace ruoyi我暂不需要使用xxjob和Monitor模块, 所以去除了. 有需要再自行添加 需要先启动后端服务…

(ECCV,2022)Mask-CLIP:从CLIP中提取自由密集标签

文章目录 Extract Free Dense Labels from CLIP相关资料摘要引言方法Mask-CLIPMask-CLIP 实验 Extract Free Dense Labels from CLIP 相关资料 代码&#xff1a;https://github.com/chongzhou96/MaskCLIP 论文&#xff1a;https://arxiv.org/abs/2112.01071 摘要 对比语言-…

SprongBoot及其基础应用全套部署脚本和配置

POM.xml配置 </dependencies> <!--skywalking日志监控依赖--><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version>8.5.0</version></dependency&g…