游族网络服务器Java开发笔试
- 轮次
- 笔试
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 选择题覆盖哪些方向?(数学、Linux、C++、数据库索引、C++ 代码纠错)
- 编程题:三元数组排序。
- 编程题:动态规划。
- 编程题:盛水最多的容器。
《参考解析》
选择题的复习面
原帖对选择题只留了考点方向、没留选项,但方向本身有参考价值:数学题通常是排列组合、概率或简单的数论推断;Linux 多考文件权限、常用命令与进程信号;C++ 集中在指针与引用、构造析构、虚函数和内存布局;数据库索引考 B+ 树结构与最左前缀;代码纠错一般是找越界、未初始化、拷贝构造缺失这类细节。服务器开发岗用 Java 出卷却夹 C++ 题,是因为底层网络库和引擎侧代码多为 C++,属于常规做法。
盛水最多的容器
双指针,左右各放一个指针,每次计算当前两块板围成的面积(较矮的一边高度乘以两指针间距),然后移动较矮的那一侧。移动较矮侧的理由是:面积由矮板决定,若移动高板,间距变小而高度不可能变大,结果只会更差。指针相向而行,一趟扫完,时间复杂度 O(n)、空间 O(1)。
动态规划那题的应对方式
原帖没记下具体题面,只能按笔试里最常见的一类准备:先写出状态定义(dp[i] 表示什么),再写转移方程与初始化,最后确定遍历顺序和答案位置。字符串类多为最长公共子序列、编辑距离;数组类多为最长递增子序列、最大子数组和;背包类要能区分 0-1 背包与完全背包在一维数组下的遍历方向差异。
三元数组排序的题意边界
原帖只留了题名。按常见笔试题面,它可能指三数排序(把三个数按大小输出)、按三元组的第一维排序,也可能指三色排序(荷兰国旗问题:只含三类取值的数组一趟原地分三段)。三色排序最值得单独写一遍:维护 low、mid、high 三个指针,mid 遇到最小值与 low 交换、遇到最大值与 high 交换,O(n) 时间、O(1) 空间。真正的答案要以试卷题面为准。