一、选择题(共19道)

1. 问你第一志愿
2. 问你第二志愿

3.1、一个经常通过书名查询书籍信息的图书管理系统,哪种数据结构存储书数据(A)
     A. 树
     B. 链表
     C.
     D.

3.2、Linux目前大规模网络并发程序开发的首选IO模型是(C)                                       
     A. select
     B. poll
     C. epoll
     D. blocking IO
解析:
        采用了IO多路复用epoll模型,epoll是Linux目前大规模网络并发程序开发的首选模型。在绝大多数情况下性能远超select和poll。epoll的底层实现为红黑树。
参考链接

3.3、问abcdef进栈后不可能的出栈顺序()                                      
     A. 
     B. 
     C. 
     D.

3.6、玩家t表有play_id、item_id两个字段,现查询每个玩家各自拥有的物品数量(select play_id, count(*) from t groud by play_id)                                      
     A. 
     B. 
     C. 
     D.

3.7、下面哪项关于主键的选项是错的(A)
      A. 一个主键只能包含一个字段
      B. 一个表只能有一个主键
      C.
      D.
解析:
        有将两个字段当成一个主键的情况

3.8、下面哪项关于线程的选项是错的(A)
      A. 一个线程死循环导致另一个线程无法运行
      B. 进程是分配资源最小单位
      C. 一个进程包含多个线程
      D. 线程是程序最小单位
解析:
        对于D:线程是操作系统能够进行运算调度的最小单位,分配算力、执行调度以线程为单位。
        对于B:进程是正在运行的程序的实例,是线程集合的载体,同时也是操作系统分配资源的基本单位。
        对于C:进程可以有多个线程,但至少有一个主线程。
参考链接

3.9、下面哪项是错误的(C)
      A. 智能指针可以创建对象
      B. 智能指针可以删除对象
      C. 智能指针可以避免内存泄漏(还是“可避免内存泄漏”具体忘记了)
      D. 智能指针在引用计数为0时删除对象
解析:
        当两个对象使用一个shared_prt成员变量指向对方,会造成循环引用,使引用计数失效,从而导致内存泄漏。不知道对不对
参考:牛客上的C++面试题
          四个智能指针:auto_ptr(被弃用)、shared_ptr、weak_ptr、unique_ptr(替换auto_ptr)
          智能指针可以很大程度上的避免内存泄漏问题!
          unique_ptr保证同一时间内只能由一个智能指针可以指向改对象。
          shared_ptr实现了多个智能指针可以指向相同对象,当计数为0时,资源会被释放掉。
          weak_ptr指向一个shared_ptr管理的对象,其构造和析构不会引起引用计数的增加或减少。

3.11、下面代码是什么排序(A)
        void func(int arr[], int n){
               int i;
               for (int j = 1; j<n; j++){
                     i = j - 1;
                     key = arr[j];
                     while (i>=0 && key < arr[i]){
                              arr[i+1] = a[i];
                              i--;
                     }
                     a[i+1] = key;
               }
        }
      A. 插入排序
      B.
      C.
      D. 归并排序

3.12、二分查找长度为1000的序列,最坏情况下需要查找(10)次。(选项忘了)

3.13、下面程序在两个线程中执行,不可能输出(D)结果。
       int count = 0;
       for (int i = 0; i < 100; i++) {
            count++;
       }
       cout<< count << endl;

A. 10
       B. 100
       C. 199
       D. 201

3.18、现有1000瓶药水,其中有一瓶是毒药水,小白鼠喝了后在24小时后立即死亡,至少需要多少只小白鼠才能知道哪一瓶是毒药水(A)。
       A. 10
       B. 100
       C. 200
       D. 500
解析:
        10只小白鼠,则每只喝100瓶药水,死一只,剩9只小白鼠和100药水要区分;9只小白鼠,每只喝11瓶,剩1瓶未区分,有下面两种情况:
           1. 死一只,剩下8只小白鼠和11瓶要区分的药水,因为只有1瓶毒药水,已经有小白鼠死亡,说明剩下一瓶药水不是毒药水。之后每只喝1瓶,剩3瓶未区分,有下面两种情况:
              1.1 死一只,剩下7只小白鼠并确定毒药水。
              1.2 没有小白鼠死亡,剩下8只小白鼠和3瓶药水要区分。之后找3只小白鼠各喝一瓶即可区分。
           2. 没有小白鼠死亡,剩下9只小白鼠和1瓶毒药水

3.19、老王30元买回来的玩具,40元卖。顾客用100元买,老王没钱找给顾客,向邻居借100元,找给顾客,后邻居发现100元是假钞,老王赔给邻居,问老王亏了多少钱()。 
       A.
       B.
       C.
       D.
解析:
        1、100元假币当作0元                                        
        2、将玩具给了顾客后,损失30元【这里也有人理解为损失40元(售价)】                                  
        3、向邻居借100元相当于以0元换100元                                 
        4、​​​​给顾客找了60元,损失60元   
        5、赔给邻居100元【40元(找剩的)+60元(老王自己垫的)】,损失60元
        理解一:30(40) + 60 + 60 = 150(160)元,所以老王亏了150(160)元【从上述分析上看】
        理解二:-30 + 100 - 60 -100 = 90元,所以老王亏了90元【从现金流动上看】
        不知道对不对

二、编程题(共3道)
1、排序题
        输入:
                [9,7,8,5]
        输出:
                [5,7,8,9]

分析:实现并不难,给出的代码是:
                vector<int> sortFunc(vector<int>& source){

return source;

}
           直接使用algorithm中的sort对source中元素排序即可。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;vector<int> sortFunc(vector<int>& source) {sort(source.begin(), source.end());return source;}int main() {vector<int>vBefore;vBefore.push_back(9);vBefore.push_back(7);vBefore.push_back(8);vBefore.push_back(5);vector<int>vAfter;vAfter = sortFunc(vBefore);for (int i = 0; i < vAfter.size(); i++) {cout << vAfter[i] << endl;}return 0;}

2、求矩阵的转置
        输入:
                3
                1  2  3
                4  5  6
                7  8  9
        输出:
                1  4  7
                2  5  8
                3  6  9

分析:
        这道题的实现并不难,主要是我自己不会创建动态的二维数组,而且不懂vector容器嵌套vector容器还硬着使用。
        这里有学过矩阵转置都很容易实现,主要是动态二维数组的创建可能会有点难。

 //动态二维数组的建立int size;cin >> size;int** arr = new int* [size];for (int i = 0; i < size; i++) {arr[i] = new int[size];}

完整代码:

#include<iostream>
using namespace std;int main() {//动态二维数组的建立int size;cin >> size;int** arr = new int* [size];for (int i = 0; i < size; i++) {arr[i] = new int[size];}//接收数组数据int temp1, temp2;int i = 0, j = 0;while (cin >> temp1) {arr[i][j] = temp1;j++;if (cin.get() == '\n') {i += 1;j = 0;}// 转置并输出结果if (i == size) {i = 0, j = 0;for (int i = 0; i < size; i++) {for (int j = i; j < size; j++) {if (i != j) {temp2 = arr[i][j];arr[i][j] = arr[j][i];arr[j][i] = temp2;}}}for (int i = 0; i < size; i++) {for (int j = 0; j < size; j++) {cout << arr[i][j] << " ";}cout << endl;}}}return 0;
}

3、求矩阵的转置
        输入:
                [[1,2,3],[4,5,6]]
        输出:
                [[1,4],[2,5],[3,6]]

分析:第三题仍然是求矩阵的转置,只不过这里多了个[]作为干扰。
思路:
        读取有四种情况:
                 当读到'['时,入栈
                 当读到'数字'时,入队
                 当读到']'时,匹配'['
                 当读到','时,跳过

#include<iostream>
#include<string>
#include<stack>
#include<queue>
using namespace std;int main() {stack<char> s;//用于统计有行数queue<int> q;int row = 0, cow;string str;cin >> str;string::iterator it = str.begin();while (it != str.end()) {//注意这里是it != str.end()//四种情况://       当读到'['时,入栈//       当读到'数字'时,入队//      当读到']'时,匹配'['//      当读到','时,跳过if (*it == '[') {s.push(*it);}else if (*it == ']') {if (s.top() == '[') {row++;s.pop();}}else if (*it == ',') {it++;continue;}else {    q.push((int)(*it - '0'));// 转成整形}it++;}//创建转置后的二维数组row--;//因为加多一行,所以要减去1cow = q.size() / row;int** arr = new int* [cow];for (int i = 0; i < cow; i++) {//注意这里是cow不是rowarr[i] = new int[row];}//求矩阵的转置for (int i = 0; i < row; i++) {//注意这里不要反了是row,下面是cowfor (int j = 0; j < cow; j++) {arr[j][i] = q.front();q.pop();}}// 输出结果cout << '[';for (int i = 0; i < cow; i++) {cout << '[';for (int j = 0; j < row; j++) {cout << arr[i][j];if (j != row - 1)cout << ',';}cout << ']';if (i != cow - 1)cout << ',';}cout << ']' << endl;return 0;
}

结尾处说说自己的感受吧。将发题目出来不是为了什么,只是希望那些跟我有同样梦想的(做游戏)伙伴感受一下游戏公司的笔试题目难度如何,希望你们能顺利通过笔试,拿到自己期望的office。上面的解题思路有的是其他人的想法,有的是博主自己的想法。如果有比较厉害的伙伴想到更好的方法可以留下您的解题思路,大家一起交流交流。另外,博主有打算自己做游戏的想法,目前是想做一款avg类型的游戏(要上架的),剧情ing,志同道合的伙伴可以了解一下。

广州乐享元游-校招-C++服务端开发工程师笔试相关推荐

  1. 广州库洛科技有限公司-校招-游戏服务端开发岗位笔试

    共7道题,时间1小时,大概有下面题目(如有遇到过相同题目的小伙伴,欢迎来纠错和交谈) 题目一: 说出下面代码执行后的结果,并分析这段代码的目的. 传入int arr[] = { 9,-10,5,-3, ...

  2. 送给即将春秋招的同学--一名服务端开发工程师的校招面经总结

    前言:作为一名21年大学毕业的Java服务端开发工程师,从19年10月份(大三上)开始进行日常实习面试,期间获得小米.快手.领英.Tencent等offer,因疫情爆发无法准时入职,20年3月份春招成 ...

  3. 拼多多服务端研发工程师笔试

    拼多多服务端研发工程师笔试(2021年7月25日下午三点场) 前言+说明 一.算法编程题 题目描述 输入描述 输出描述 示例1 示例2 参考代码: 二.算法编程题 题目描述 输入描述 输出描述 示例1 ...

  4. 速游面经(游戏服务端开发工程师)

    一面:9.15,线下面 一面更像HR面,是一个女面试官,应该是HR,不是技术官,问的专业知识也很浅,没有深挖 我们这个这个岗位是需要转语言的,可以接受吗?(转Erlang) 你的GPA挺高的,平时是怎 ...

  5. 【面试题】网易互娱(游戏)2021校园招聘在线笔试 - 服务端开发工程师[螺旋矩阵]

    昨晚做网易互娱的笔试,比较尴尬的是只能用C/C++/Java,而本人对C/C++的了解仅限于大一的课程设计(而且一年多没用过C写代码了),Java差不多看得懂代码但是没有系统的学过.无奈最后只能用py ...

  6. 【面试题】网易互娱(游戏)2021校园招聘在线笔试 - 服务端开发工程师[文件系统]

    昨晚做网易互娱的笔试,比较尴尬的是只能用C/C++/Java,而本人对C/C++的了解仅限于大一的课程设计(而且一年多没用过C写代码了),Java差不多看得懂代码但是没有系统的学过.无奈最后只能用py ...

  7. (4道全A)拼多多2021届提前批-服务端研发工程师笔试

    目录 一.分割矩阵(1-8)(A100%) 代码一: 二.移动士兵(A) 代码: 三.背包(A了80%) 四.显著特征(X可以被Y整除)(A100%) 一.分割矩阵(1-8)(A100%) 代码一: ...

  8. B站(BiliBili)一面面经(服务端开发工程师,主站技术中心)

    9.11号面试的,没做题,简单问了点项目,但基础知识问的特别细特别广,下面分享一些印象较为深刻的问题: redis的缓存删除策略了解吗? 使用LRU时,如果短时间内会出现大量只会使用一次的数据,可能导 ...

  9. 百万在线:大型游戏服务端开发

    进入手游时代,服务端技术也在向前演进.现代游戏服务端既要承载数以万计的在线玩家,又要适应快速变化的市场需求,因此,如何设计合适的架构就成了重中之重.服务端技术并不简单,作为服务端新人,全面掌握服务端技 ...

最新文章

  1. 属性 visibility
  2. Codeforces 724C Ray Tracing 扩展欧几里得
  3. Windows消息机制详解-6
  4. Qt学习笔记-OpenGL做正方体并旋转
  5. 报表打印问题整体解决方案
  6. PAT乙级(1018 锤子剪刀布)
  7. 亚马逊新专利:Alexa可根据用户的语音识别疾病或抑郁
  8. js判断undefined nan等
  9. Appfuse实践(一)——配置安装 转自http://www.donews.net/skyhero/archive/2004/12/17/205662.aspx...
  10. 在线证件照一键美化换底色,制作所属自己的证件照
  11. 短信系统通道路由的设计和思路-移讯云短信系统
  12. 基于工程量的智能动态计划管控
  13. db2 windows linux,Migrate DB2 v9 on windows to DB2 v10.5 on linux
  14. 第一次进入Eclipse MARS2界面后的一些基本设置
  15. python学习之初窥门径
  16. PageHelper分页永远返回第一页数据
  17. K8S 数据卷volumes之ConfigMap
  18. pyautogui自动化控制鼠标和键盘操作
  19. java 传感器_JAVA串口采集传感器数据
  20. 处理iphone 微信中.play()方法不能播放的问题

热门文章

  1. 无线自组网技术衍生:北峰MESH无线自组网系统
  2. docker 入门 —— docker容器常用的操作命令
  3. Java--通过JDBC元数据获取表结构(ResultSetMetaData元数据的使用)
  4. Portable.mIRC.6.31.zip
  5. 国产手机持续涨价的恶果显现,国内市场手机销量或跌穿3亿部
  6. java天翼空间_艾媒咨询张毅:天翼空间最大特点在于宽容
  7. 少年黑客对自由软件的自由漫谈
  8. 雷达传感器感应模块,人体存在感控方案,助力产品智能化触发联动
  9. javafx一个stage窗口弹出,主窗口跟随弹出(聚焦二级窗口时,在二级窗口后面显示主窗口)
  10. VBA编辑器输入中文乱码解决