广州乐享元游-校招-C++服务端开发工程师笔试
一、选择题(共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++服务端开发工程师笔试相关推荐
- 广州库洛科技有限公司-校招-游戏服务端开发岗位笔试
共7道题,时间1小时,大概有下面题目(如有遇到过相同题目的小伙伴,欢迎来纠错和交谈) 题目一: 说出下面代码执行后的结果,并分析这段代码的目的. 传入int arr[] = { 9,-10,5,-3, ...
- 送给即将春秋招的同学--一名服务端开发工程师的校招面经总结
前言:作为一名21年大学毕业的Java服务端开发工程师,从19年10月份(大三上)开始进行日常实习面试,期间获得小米.快手.领英.Tencent等offer,因疫情爆发无法准时入职,20年3月份春招成 ...
- 拼多多服务端研发工程师笔试
拼多多服务端研发工程师笔试(2021年7月25日下午三点场) 前言+说明 一.算法编程题 题目描述 输入描述 输出描述 示例1 示例2 参考代码: 二.算法编程题 题目描述 输入描述 输出描述 示例1 ...
- 速游面经(游戏服务端开发工程师)
一面:9.15,线下面 一面更像HR面,是一个女面试官,应该是HR,不是技术官,问的专业知识也很浅,没有深挖 我们这个这个岗位是需要转语言的,可以接受吗?(转Erlang) 你的GPA挺高的,平时是怎 ...
- 【面试题】网易互娱(游戏)2021校园招聘在线笔试 - 服务端开发工程师[螺旋矩阵]
昨晚做网易互娱的笔试,比较尴尬的是只能用C/C++/Java,而本人对C/C++的了解仅限于大一的课程设计(而且一年多没用过C写代码了),Java差不多看得懂代码但是没有系统的学过.无奈最后只能用py ...
- 【面试题】网易互娱(游戏)2021校园招聘在线笔试 - 服务端开发工程师[文件系统]
昨晚做网易互娱的笔试,比较尴尬的是只能用C/C++/Java,而本人对C/C++的了解仅限于大一的课程设计(而且一年多没用过C写代码了),Java差不多看得懂代码但是没有系统的学过.无奈最后只能用py ...
- (4道全A)拼多多2021届提前批-服务端研发工程师笔试
目录 一.分割矩阵(1-8)(A100%) 代码一: 二.移动士兵(A) 代码: 三.背包(A了80%) 四.显著特征(X可以被Y整除)(A100%) 一.分割矩阵(1-8)(A100%) 代码一: ...
- B站(BiliBili)一面面经(服务端开发工程师,主站技术中心)
9.11号面试的,没做题,简单问了点项目,但基础知识问的特别细特别广,下面分享一些印象较为深刻的问题: redis的缓存删除策略了解吗? 使用LRU时,如果短时间内会出现大量只会使用一次的数据,可能导 ...
- 百万在线:大型游戏服务端开发
进入手游时代,服务端技术也在向前演进.现代游戏服务端既要承载数以万计的在线玩家,又要适应快速变化的市场需求,因此,如何设计合适的架构就成了重中之重.服务端技术并不简单,作为服务端新人,全面掌握服务端技 ...
最新文章
- 属性 visibility
- Codeforces 724C Ray Tracing 扩展欧几里得
- Windows消息机制详解-6
- Qt学习笔记-OpenGL做正方体并旋转
- 报表打印问题整体解决方案
- PAT乙级(1018 锤子剪刀布)
- 亚马逊新专利:Alexa可根据用户的语音识别疾病或抑郁
- js判断undefined nan等
- Appfuse实践(一)——配置安装 转自http://www.donews.net/skyhero/archive/2004/12/17/205662.aspx...
- 在线证件照一键美化换底色,制作所属自己的证件照
- 短信系统通道路由的设计和思路-移讯云短信系统
- 基于工程量的智能动态计划管控
- db2 windows linux,Migrate DB2 v9 on windows to DB2 v10.5 on linux
- 第一次进入Eclipse MARS2界面后的一些基本设置
- python学习之初窥门径
- PageHelper分页永远返回第一页数据
- K8S 数据卷volumes之ConfigMap
- pyautogui自动化控制鼠标和键盘操作
- java 传感器_JAVA串口采集传感器数据
- 处理iphone 微信中.play()方法不能播放的问题
热门文章
- 无线自组网技术衍生:北峰MESH无线自组网系统
- docker 入门 —— docker容器常用的操作命令
- Java--通过JDBC元数据获取表结构(ResultSetMetaData元数据的使用)
- Portable.mIRC.6.31.zip
- 国产手机持续涨价的恶果显现,国内市场手机销量或跌穿3亿部
- java天翼空间_艾媒咨询张毅:天翼空间最大特点在于宽容
- 少年黑客对自由软件的自由漫谈
- 雷达传感器感应模块,人体存在感控方案,助力产品智能化触发联动
- javafx一个stage窗口弹出,主窗口跟随弹出(聚焦二级窗口时,在二级窗口后面显示主窗口)
- VBA编辑器输入中文乱码解决