Unity游戏开发客户端面经——算法(初级)

Unity游戏开发客户端Unity基础 Unity游戏开发客户端面经 之 Unity 篇 阅读详情

前言:记录了总6w字的面经知识点,文章中的知识点若想深入了解,可以点击链接学习。由于文本太多,按类型分开。这一篇是 算法 常问问题总结,有帮助的可以收藏。


1.十大排序

 

        时间复杂度:O(n²)        :冒泡排序、选择排序、插入排序

                             O(nlogn)   :堆排序、快速排序、(归并排序)

        不稳定的排序:选择排序、快速排序、堆排序、希尔排序。

        详细请看: (强烈推荐)https://leetcode.cn/circle/discuss/eBo9UB/#icon-default.png?t=N7T8https://leetcode.cn/circle/discuss/eBo9UB/

        若基本有序建议用插入排序,不建议用快速排序。

2. 100万的数据选出前1万大的数

        利用堆排序、小顶堆实现。 

        先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样遍历完后,堆中的10000个数就是所需的最大的10000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O (nmlogm)(n为100,m为10000)。

        优化的方法:分治。可以把所有10亿个数据分组存放,比如分别放在1000个文件中。这样处理就可以分别在每个文件的10^6个数据中找出最大的10000个数,合并到一起在再找出1000*10000中的最终的结果。

3. 两个10G 的文件,200m 内存,排序

        1.把 10G 大小的文件拆分成 N 个小文件,每个文件 1M 。

        2.把每个文件拉倒内存排序,可以并行操作,在内存中直接使用快排,然后写入文件 。

        3.对文件做两两合并。

4. A星算法

     1.基本原理

        避障碍寻路算法有很多,比如:BFS,DFS,Dijkstra等。

        对于BFS,它的优点在于可以找到最优的一条路径,缺点是需要遍历整个地图。

        对于DFS,它的优点在于不需要遍历整个地图,缺点在于不一定是最优路径。

        对于Dijkstar,它的优点在于无差别的遍历当前最短路径,对于查找起始点到任意点的最短路径该算法很有效,缺点是:对于点对点的路径查找很浪费。

        对于A*,它能很快的找到一条相对最优的路径,而且搜索的节点比前三个算法都要少。

        如果DFS就像一个愣头青,一条路摸到黑的话,那么A*就是一个聪明的愣头青,它虽然也是一条路摸到黑,但是它每一步都会更加逼近终点,而不是像DFS每一步都是随机的。可以理解为A*吸收了DFS和BFS的优点,寻找到的路径优劣程度介于BFS和DFS之间。

        简单的说,A*算法就是不停的从起点开始遍历周围的点,找出目前来说消耗最小的点作为新的起点,直到找到终点。

     2. 如何找到消耗最小的点

        1.F(总代价,走到终点消耗得代价)=G(该点离起点距离)+H(该点离终点距离)。

        2.G:从起点到达当前点要走的距离,上下左右都是1,斜边用勾股定理算出约为1.4。

        3.H:按照曼哈顿距离计算(d(i,j)=|X1-X2|+|Y1-Y2| )。

        4.开启列表open:用来存储可以考虑行进的点,同时存放F、G、H、父对象(从哪个点来)的信息。

        5.关闭列表close:用来存储不再考虑的点,存放在关闭列表中的点需要从开启列表移除,同时存放F、G、H、父对象(从哪个点来)的信息。

     3. 如何确定路径

        1.虽然最优点都在关闭列表中,但是并不能直接使用关闭列表中的点作为路径。

        2.而是在关闭列表中从终点开始查找父对象,再查找父对象的父对象。

        3.死路:当开启列表为空的时候,说明已经找遍了所有可能的点,寻路失败。

     4.  详细流程

        1、将起点记录为当前点a。

        2、将当前点a放入关闭列表close,并设置父对象为空。

        3、将当前点a周围所有能行进的格子放入开启列表,如果周围的点已经在开启列表或者关闭列表中再或者是障碍,就不用管它了。

        4、记录当前点a周围所有能行进的格子的F值和父对象(父对象为当前点)。

        5、重新在open列表中寻找最优点b(F最小值)将其放入关闭列表,同时在开启列表中移除,每次往关闭列表放点时,要判断该点是否为终点,如果是证明路径已经找完了,结束寻路,如果不是则继续

        6、将最优点作为起点b

        7、重复上述3、4、5、6步骤,直到找到终点。

        8、找到终点,寻路结束,根据终点得父节点返回到起点,为最优路径。

        原文链接:读书|杂谈|技术分享-我的编程学习笔记一个分享读书笔记,个人杂谈,技术资源的博客网站icon-default.png?t=N7T8https://www.lengyueling.cn/archives/33

        A星基础:

A星算法_筱的博客-CSDN博客_a星算法A星算法1.简述A星算法就是试图在地图中找到一条最短路径,但不保证一定存在。任务小猫去找青蛙玩(好TM弱智啊~)条件黑色方块无法通行,每走一个格子小猫消耗的体力都为1。2.如果说你是小猫,你会怎么走?嗯,毫无疑问你肯定这么走。。。很简单的对吧,但是你这么走的时候,真的没经过思考?并非如此吧,你要找最短路径是不是直接连线是最快的?但是连线有障碍物阻挡了,所以逼迫你先往上走出障碍物的区域,然后一路直线当然就是最短路径了。BUT,你所做的思考,都是建立在你脑海里已经有整张地图的概念上,代https://blog.csdn.net/cqs123111/article/details/115303885

Unity游戏开发客户端性能优化基础 Unity游戏开发客户端面经 之 性能优化 篇 阅读详情

相关推荐

Unity游戏开发客户端面经——设计模式(初级)

Unity游戏开发客户端面经 之 设计模式 篇

Sea3752的博客 9420

Unity游戏开发客户端面经——数据结构(初级)

Unity游戏开发客户端面经 之 数据结构篇

Sea3752的博客 1万+

Unity游戏开发客户端Lua基础

Unity游戏开发客户端面经之 lua 篇

Sea3752的博客 1万+

Unity大型游戏开发全流程指南

【代码】Unity大型游戏开发全流程指南。

2401_82978699的博客 5154

游戏客户端面试(Unity)

推荐阅读:  我的CSDN  我的博客园  QQ群:704621321 一。最开始的两家公司笔试面试题目       一家

爱上游戏开发 2万+

【面试准备】游戏开发中的几个岗位分别做什么&考察侧重点

在准备面试一些游戏开发岗位的过程中,我发现几个彼此重合、名字相似的职位,在牛客和知乎上浏览面试经验的时候,发现有不少人在面经当中总结失败经验,就包括没有搞清楚目标岗位考察的重点。 我也是一个小白,刚刚开始学习图形学和游戏开发,希望总结一些信息避免自己冲错领域 客户端引擎工程师 我准备某厂的面试时间比较久,某厂校招喜欢用这两个词: 客户端引擎方向 客户端方向 单论名称我真的很难分出这两个岗位的区别,我研究了一段时间的结论是: 引擎是怎么写出来的呢,是用C++配合一个图形API写出来的,所谓客户端引擎方向是要和

Quaint_Senator的博客 6257

Unity游戏开发 帧同步战斗框架 理论篇

关键词: 逻辑帧,渲染帧,关键帧 逻辑帧:逻辑执行的时间间隔(20帧/s) 渲染帧:渲染执行的时间间隔(60帧/s) 关键帧:服务器lockstep的逻辑帧间隔数(5个逻辑帧) 流程: 通过渲染帧间隔累计定时器,每帧执行渲染回调,当累计时间达到逻辑帧间隔时间执行逻辑回调。 当逻辑帧计数大于前当关键帧数时,锁定定时器不再执行任何逻辑,等待服务器下发下一个关键帧的所有事件。否则在关键帧立...

FlyToCloud的博客 3043

Unity环境下的人工智能游戏开发整合教程

htmltable {th, td {th {pre {简介:本项目将展示如何利用人工智能技术,结合C#编程语言,在Unity游戏引擎平台上进行包括客户端、服务端和热更新在内的游戏开发。详细内容包括AI在游戏NPC中的应用,C#在Unity中的编程实践,Unity引擎的跨平台游戏开发能力,客户端和服务器端的交互,以及实现游戏热更新的方法。教程将涵盖从游戏逻辑实现到多人在线同步,再到资产的动态更新等多方面知识,旨在为游戏开发者提供一个完整的解决方案。

weixin_42588555的博客 864

基于RFM模型的电商零售数据分析

E-Commerce Data 数据集介绍 E-Commerce Data Actual transactions from UK retailer 数据集地址(kaggle) https://www.kaggle.com/carrie1/ecommerce-data/kernels 该数据来源于kaggle,是一家注册在英国的电子商务网站的2010年12月份-2011年12月份之间的...

W_H_M_2018的博客 3085

2022-8-3----Android10.0(MTK)-----SN_Writer 写入 SN 注意事项

SN_Writer、写入SN

qq_854189624的博客 1万+

英飞凌Tricore实战系列导读

笔者结合项目应用经验对Tricore MCU的开发及应用经验进一步总结,成人达己,渡己渡人。

initiallizer的博客 3777

端侧 AI 落地避坑指南(中):为什么 QAT 救不了精度?——对齐“融合后算子“的硬件物理约束

在上一篇文章中,我们深入探讨了量化的本质,并得出结论:QAT(量化感知训练)是保持精度的关键。明明做了 QAT,精度还是崩塌了!让我们看一个真实的案例:✅ 使用了✅ 配置了量化✅ 训练了 50 个 epoch,学习率降为原来的 1/10✅ 冻结了 BN 统计量FP32 模型:mAP = 0.85QAT 后 FP32:mAP = 0.84(正常)工具量化后:mAP = 0.68(崩塌!问题出在哪里?层融合(Layer Fusion)机制。

weixin_51988935的博客 53

高云FPGA系列教程(7):ARM GPIO外部中断

高云GN1NSR-4C共有16个GPIO,每个GPIO可配置成输入或输出模式,支持中断输入,触发方式可选择:上升沿、下降沿、高电平、低电平触发。中断优先级可通过NVIC进行设置,支持 0-7 级可编程中断优先级。

whik1194的博客 1371

YOLOv10改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型

本文记录的是基于MobileNet V3的YOLOv10目标检测轻量化改进方法研究。的模型结构是通过得来的,其中的基础模块结合了的深度可分离卷积、的线性瓶颈和倒置残差结构以及MnasNet中基于挤压和激励的轻量级注意力模块,使模型在性能、效率和灵活性方面都具有显著的优势。本文在替换骨干网络中配置了原论文中的small和large2种模型,以满足不同的需求。

Limiiiing的博客 508

华为OD机试 - 报文响应时间 - 贪心算法、位运算(Python/JS/C/C++ 2024 E卷 200分)

贪心算法是在每一步选择中都做出当前最优的选择,期望通过局部最优解推导出全局最优解的算法。

学Java,找哪吒 1756

FLUENT 软件中design modeler网格划分后,导出失败:系统显示“在网格文件导出过程中出现异常。请将数据发送给您的技术支持供应商。”...如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1446

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: Unity游戏开发客户端Lua基础
下一篇: Unity游戏开发客户端面经——设计模式(初级)
Game_小志
博客等级 码龄6年 4565粉丝 26原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值