一面

1.7层网络模型

从上到下分层依此为:应用层,会话层,表示层,传输层,网络层,数据链路层,物理层。

TCP/IP四层协议:应用层,传输层,数据链路层,物理层

常见教学的五层模型:应用层,传输层,网络层,数据链路层,物理层

2.每层的常见协议

应用层:HTTP、HTTPS、SMTP、FTP

传输层:TCP、UDP

网络层:IP、ICMP

数据链路层:以太网协议(Ethernet)

3.TCP协议的建立连接和断开连接

三次握手

  1. 客户端发送 SYN(请求建立连接)
  2. 服务端回复 SYN + ACK(同意连接)
  3. 客户端发送 ACK(确认)

四次挥手:

  1. 客户端发送 FIN(我要断开)
  2. 服务端回复 ACK
  3. 服务端发送 FIN
  4. 客户端回复 ACK

👉 连接彻底关闭

4.TCP和UDP的主要区别有那些

TCP 面向连接,UDP 无连接

TCP 可靠,UDP 不保证可靠

TCP 有序,UDP 无序

TCP 速度慢但稳定,UDP 快但可能丢包

5.TCP里面有哪些机制来保证他的连接是可靠的

TCP 通过以下机制保证可靠性:

  • 校验和:检测数据是否损坏
  • 序列号 + ACK:保证数据有序且不丢失
  • 重传机制:丢包后重新发送
  • 滑动窗口:实现流量控制
  • 拥塞控制:避免网络拥堵

6.序列号主要是用来做什么机制的

序列号主要用于:

  1. 保证数据有序到达
  2. 去重(防止重复数据)
  3. 作为确认机制的基础(ACK)
  4. 配合滑动窗口实现流量控制

7.进程和线程的区别

  • 进程是资源分配的最小单位
  • 线程是 CPU 调度的最小单位

线程共享进程资源,而进程之间相互独立。

8.进程之间是如何进行通信的

常见的进程通信方式有:

  • 管道
  • 消息队列
  • 共享内存
  • 信号量
  • 信号
  • Socket

9.讲一下虚拟内存

核心本质:它是操作系统的内存管理机制,把磁盘的一部分空间虚拟成内存用,让程序觉得自己有超大的可用内存,不用管物理内存实际大小。

作用:能够让多个程序同时运行。能运行比物理内存还大的程序;还能进行内存隔离

虚拟内存是操作系统提供的一种内存管理机制,把磁盘空间映射为内存使用。

  • 让程序感觉有更大的内存
  • 支持多进程运行
  • 实现内存隔离
  • 支持分页和换页机制

10.二叉树的遍历方式

前序,中序,后序,层级遍历

11.C#和lua这种编程语言的最大区别在哪

C# 是强类型编译型语言,Lua 是动态解释型语言

C# 运行在 .NET/Mono 上,Lua 通常嵌入使用

Lua 更轻量,适合热更新

12.常见的设计模式

1.单例,观察者,工厂模式,状态机,享元模式

13.实习期间遇到过什么问题?怎么去解决的

我遇到过卡牌频繁创建导致 GC 抖动的问题。

解决方式是:

  • 使用对象池管理卡牌对象
  • 减少频繁 Instantiate/Destroy

明显降低了 GC 开销,提升了运行稳定性。

14.C#GC

15.平衡二叉树

平衡二叉树指左右子树高度差不超过 1 的二叉树,常见的是 AVL 树。

16.红黑树?红黑树是如何保证每个节点到叶子节点的黑色数量是相同的。

红黑树是一种自平衡二叉搜索树,通过以下规则保持平衡:

  1. 根节点是黑色
  2. 红节点不能连续
  3. 每条路径黑节点数相同

👉 为什么能保证平衡:

通过“黑高一致”保证最长路径不会超过最短路径的两倍。

17.二叉树的常用场景

搜索(BST)

数据排序

表达式解析

游戏 AI 决策树

18.什么是协程

协程是一种轻量级的异步执行方式,可以在函数执行过程中“暂停和恢复”。

  • 不是线程
  • 不会并发执行
  • 由主线程调度

Hr面

image-20260331171043279

1.为什么觉得自己根这个岗位匹配度较高

第一是技术栈匹配。我主要做的是 Unity 客户端开发,熟悉 C#,了解协程、事件、接口等核心机制,同时也掌握对象池、单例、事件管理、资源加载等常见游戏

开发框架,这些都是岗位需要的基础能力。

第二是有实际项目和实习经验。我做过 2D RPG 和休闲游戏项目,也在公司参与过纸牌游戏的版本迭代开发,接触过真实的商业项目流程。

第三是学习能力和主动性。我平时会结合 AI 工具提升开发效率,也会主动去总结和优化代码结构,所以我适应新环境和新需求的能力比较强。

2.实习经历

我在火金网络科技有限公司做过 Unity 客户端开发实习,大概 3 个月时间,主要参与的是一款移动端纸牌接龙游戏的版本迭代开发。

主要工作包括功能开发、问题修复以及性能优化,同时也参与了一些 UI 交互优化和资源加载流程的调整。

3.实习人员分配(团队人员架构,包括策划,美术等)

我负责的客户端的人员大概3人,服务端人数在2人左右,策划2人,美术/UI大概4人,测试2人/

客户端是一个主程,2个开发

4.实习的工作内容

我主要负责以下几块内容:

  • 参与游戏版本迭代开发,比如优化 UI 交互逻辑和界面体验
  • 协助实现卡牌相关逻辑,比如洗牌和发牌规则校验
  • 做了一些性能优化,比如优化卡牌对象管理,减少 GC 开销
  • 参与资源加载流程优化,提升场景切换流畅度

5.为什么客户端的工作这么少,或者是前端的这个需求的话,是谁来承接的

像我们这个项目是一个比较成熟的产品,核心框架已经搭建好了,所以我实习阶段更多参与的是:

  • 功能迭代
  • Bug 修复
  • 性能优化

而不是从 0 到 1 的开发。

6.介绍一下具体的工作流程,比如从最开始的需求到最后完成的闭环全流程

  1. 需求阶段
    策划输出需求文档(功能说明、规则等)
  2. 评审阶段
    客户端、服务端一起评估实现方案和工作量
  3. 开发阶段
  • 客户端实现功能逻辑和表现
  • 美术提供资源
  • 服务端提供接口(如果有)
  1. 联调阶段
    各模块对接,确保功能正常
  2. 测试阶段
    测试人员提 Bug,开发进行修复
  3. 上线阶段
    版本发布

7.分享一下在3个月实习期内,觉得自己做的比较好的成绩或者是亮眼的地方

8.整个公司大概有多少人呢

公司整体规模我没有特别精确的数据,但我所在的项目组规模大概在十几人左右,是一个中小型团队,沟通效率比较高。

9.评价一下整个公司和团队

整体体验还是比较好的:

  • 团队氛围比较轻松,沟通成本低
  • 开发流程比较规范,有明确的版本迭代节奏
  • 对新人也比较友好,会有一定的指导

同时因为团队规模不大,我也有机会接触到比较完整的开发流程,对成长帮助挺大的。