个人简历准备
自我介绍面试官您好!我叫Sarf,是武汉工程大学软件工程专业 2026 届应届毕业生,主攻 Unity 客户端开发方向。 在校期间,我系统掌握了 C# 语言与面向对象编程,深入熟悉 Unity 引擎的核心模块,包括对象生命周期管理、组件系统、资源加载与性能优化等关键技术。 在实践中,我独立主导过两个 Unity 项目:一个是 2D 类银河恶魔城动作 RPG,实现了角色控制、战斗系统和资源热更新;另一个是移动端休闲跳跃游戏,负责了无限关卡生成和性能调优。 专业技能方面点乘:a⋅b=∣a∣∣b∣cosθ(判断2个向量是否同方向(大于0为同方向, = 0为垂直),Unity中可以判断物体是否在前方) 叉乘:a×b=∣a∣∣b∣sinθ⋅n,可以用来判断点是否在三角形内(分别3条边与顶点到该点的向量 进行判断,3个结果都相同在三角形内) 1.熟悉使用 C# ,理解协程、接口、委托/事件等核心特性 ,具备面向对象编程能力事件和委托 对于C#委托和事件,委托是一种类型安全的方法引用,允许程序将方法当作数据进行存储和传递。通过委托程序可以在运行时决定调用...
UGUI面试学习
1.Canvas三种渲染模式:ScreenSpace - Overlay,ScreenSpace - Camera,WorldSpace。每种渲染模式针对不同的场景及应用 ScreenSpace - Overlay:直接贴在屏幕的最上面,不会因为相机的移动或者变换而变化,常用来制作游戏中背包和血条面板。 ScreenSpace - Camera:UI同样贴在平面上,但是会受到相机来渲染。也就是会受到相机距离来影响,但是需要指定一个 Camera,UI 会根据摄像机来显示,可以控制 UI 与摄像机的距离、排序、层级 WorldSpace:UI 变成 3D 世界里的 “平面物体”,随相机视角变化,用于场景内的 UI。这时候 Canvas 不再是“贴屏幕”,而是像一块广告牌、显示器、按钮面板一样,真的放进 3D 世界中。Canvas 有真实的位置、旋转、缩放,会受场景透视影响,可以被别的 3D 物体遮挡,玩家走近看会变大,走远看会变小 Overlay模式并不与空间上排序有任何关系,空间上的前后位置不再对元素起作用,它常用在纯UI的区域内,这种模式下Camera排序有别与其他模式,Sor...
tap4fun面试
Tap4Fun一面1.实习的主要负责的模块是什么我主要负责的是: 卡牌逻辑相关模块(洗牌、发牌规则校验) UI 交互逻辑优化 性能优化(对象池、GC优化、资源加载) 整体偏功能开发 + 优化。 2.客户端的人员分配客户端 3 人: 主程:架构 + 核心系统 一名开发:主要功能模块 我:版本迭代 + UI + 优化 3.实习主要负责UI逻辑吗不是只做 UI,我的工作是以客户端逻辑为主,其中一部分是 UI 交互逻辑,同时也参与了功能开发和性能优化。 4.用的什么UI框架主要使用 Unity 自带的 UGUI,同时项目中有简单的 UI 管理框架,用于统一管理界面生命周期。 5.在Unity进行点击的时候如何响应到C#逻辑层的通过 Button 组件的 onClick 事件绑定 C# 方法来实现。 底层是 Unity 的事件系统(EventSystem)处理输入,再分发到 UI 组件。 6.如何进行UI响应的是,通过挂载还是代码的绑定Inspector 拖拽绑定 代码 AddListener 7.两者的优缺点拖拽方式: ✔ 简单直观 ❌ 不利于维护,容易丢引用 代码绑定: ✔ 可...
peropero面试
基础差(主要是拷打八股文)1.协程原理以及底层实现Unity协程核心本质都是迭代器 + 状态调度。 总结:Unity 协程的底层本质上就是“迭代器 + 状态机调度”机制。它依赖 C# 的 IEnumerator 接口和 yield return 语法实现,当我们通过 StartCoroutine() 开启一个协程时,Unity 并不会创建新线程,而是把这个协程注册到主线程的调度系统中执行。编译器会把带有 yield return 的协程函数自动转换成一个状态机类,这个类会保存协程执行时的上下文信息,比如当前执行到哪一步、局部变量的值以及当前等待条件等。当协程运行到 yield return 时,会先暂停当前执行,并把等待信息返回给 Unity;之后 Unity 在合适的时机继续调用这个迭代器的 MoveNext() 方法,使协程从上一次暂停的位置继续往下执行,直到函数执行结束或再次遇到新的 yield return。因此,协程本质上仍然是在主线程中分段执行的函数,它能够把逻辑拆分到多个帧里完成,但不能真正解决耗时计算造成的主线程阻塞问题。 2. 调度器的 “心跳” 作用协程不会自...
Lua面试学习
1.Table表基本原理: 在lua中不存在字典,列表等数据类型,同时也不存在class与struct等数据类型,所有的这些类型都是基于Table表实现的。 lua是关联性数据结构,可以使用任意类型的值来表示索引,但不可以是nil lua是不固定大小的数据结构,可以自动进行扩容 如果在table中允许nil存在,他是会占一个索引位 {}相对于匿名table,如果判断一个table是否为nil,不能直接进行与{}比较,因为相对于2个table,而非空。if next(data) == nil then end进行判断 12345678910111213141516171819202122--数组(如果使用Table表来实现数组,默认索引是从1开始的,但是可以指定元素索引。并且lua中的数组中元素类型可以不相同)--在lua中的#是取出数组长度,但是遇见nil会直接停止,不会获取后序的元素local Mytable = {1,3,"av",1.2,true}Mytable["123"] = "123...
设计模式
以下是 10种设计模式 的完整技术实现方案,包含 类图(PlantUML)、应用场景、核心代码,按结构化方式组织: 工厂模式:封装对象创建逻辑,客户端无需知道具体类。 策略模式:定义可互换的算法族,运行时动态切换。 装饰器模式:动态扩展对象功能,避免继承层次过深。 组合模式:统一处理单个对象和对象集合,形成树形结构。 观察者模式:一对多依赖关系,状态变化自动通知所有依赖对象。 状态模式:对象行为随内部状态改变而变化,避免条件分支。 中介者模式:封装对象间交互,降低直接耦合。 单例模式:确保一个类只有一个实例,并提供全局访问点。 代理模式:控制对目标对象的访问,增强功能(如缓存、权限)。 享元模式:共享细粒度对象,减少内存开销(如字符、图形复用)。 模板方法模式:定义算法骨架,子类重写特定步骤而不改变结构 一、组合模式(Composite)想表示对象的部分-整体层次结构希望用户用一致的方式处理个体对象和组合对象。 类图 ———————————————————————————————————————————————————————————————- 核心代码123456789...
note-87
./tools/build-test.sh 先看看就好。 docs/algorithms/solitaire docs/algorithms/sudoku 核心是我这个库 会有测试驱动重点关注算法开发,算法测试你如果能够在widdows上让./tools/build-test.sh 运行起来,基础能力基本过关了