游戲開發面試題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.pswp.cn/web/41444.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41444.shtml
英文地址,請注明出處:http://en.pswp.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…