网易互娱客户端&服务端开发2面凉经
网易游戏二面面经
-
自我介绍,并挑一个做得比较好或有成就感的项目,介绍你负责的工作、遇到的问题及解决方法。
-
项目相关
-
epoll的触发模式有了解过吗?
-
协程了解吗?
-
如果让你自己实现一套协程方案,需要关注什么问题?核心是什么?上下文怎么维护?
关注点 说明 1. 上下文保存与恢复 需要保存寄存器(栈指针、程序计数器、通用寄存器)、信号掩码、浮点状态等,以便恢复执行。 2. 栈内存管理 每个协程需要有独立的栈空间。如何分配?大小固定还是动态增长?如何避免栈溢出或内存浪费? 3. 调度器设计 协程何时主动让出(yield)?调度器如何选择下一个运行的协程(FIFO、优先级、轮询)?是否支持跨线程调度? 4. 切换时机 显式 yield 还是自动 yield(如等待 I/O)?是否提供钩子来拦截系统调用? 5. 并发安全 多个线程同时调度协程时,如何保护共享数据?协程是否要绑定到固定线程? 6. 栈溢出检测 如何检测栈溢出?可以用 guard page 或在栈底填充魔数。 7. 异常处理 协程内抛出的异常如何传播给调用者?C++ 中需要注意异常与协程栈的兼容性。 -
你实际项目中用协程多吗?
-
UDP和TCP有什么区别?
-
为什么TFTP要用UDP而不是TCP?
-
UDP丢包通常是什么原因导致的?还有没有其他原因?
网络波动
接收方缓冲区不足
-
UDP有没有粘包的问题?为什么没有?
-
TCP有没有粘包的问题?怎么解决?
-
报表查询慢的问题具体是什么业务?你怎么解决的?
-
数据量大概到什么级别会出现慢查询?
-
写一个C++单例?
单例设计模式是一种确保一个类在运行期间只有一个实例,提供一个全局访问点来访问该实例的创建型模式。核心特点如下:
- 私有化构造方法,防止外部通过new关键字直接实例化对象。
- 类内部自行创建一个私有的静态变量,保存该类的唯一实例。
- 提供公共静态方法,给使用者提供调用方法,返回唯一实例。
单例模式适用于资源独占、全局统一管理的场景,可以避免一个全局使用的类被频繁创建与销毁,耗费系统资源。
class Singleton { private: Singleton() = default; ~Singleton() = default; Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete; public: static Singleton& getInstance() { static Singleton instance; // C++11 保证线程安全 return instance; } }; -
设计一个红包系统:玩家A发总金额M的红包,拆成N份,每人只能抢一份,金额不小于0且期望相等。你会考虑什么问题?怎么实现?
-
如何防止一个人多次抢红包?
-
如果要求红包金额不能为0,怎么调整算法?
-
你平时开发用AI辅助吗?用的什么模型?怎么解决AI长文输出的幻觉或不稳定问题?
-
你用AI做过的最大量级项目代码量多大?怎么保证AI生成代码的质量?
-
你平时玩什么类型的游戏?有没有尝试拆解过游戏系统?
-
你有什么想问面试官的?
