网易互娱游戏研发工程师一二面面经
一面 90min
1.30min编程题
给定数组输出第k小子序列和
2.自我介绍
3.讲一下编程题思路
#include<bits/stdc++.h>
using namespace std;
int check(vector<int> & nums,int x){
int l=0,num=0,ls=0;
for(int i=0;i<nums.size();i++){
ls=ls+nums[i];
while(ls>x){
ls-=nums[l];
l++;
}
num+=i-l+1;
}
return num;
}
int fun(vector<int> nums,int k){
int l=1,r=1e9,mid,ans;
while(l<=r){
mid=l+r>>1;
if(check(nums,mid)>=k){
ans=mid;
r=mid-1;
}else{
l=mid+1;
}
}
return ans;
}
signed main()
{
vector<int> nums;
int n,k,x;
cin >> n >> k;
for(int i = 1; i <= n; i++)
{
cin >> x;
nums.push_back(x);
}
cout << fun(nums,k);
}
答:二分答案,时间n*logm
4.这个还不够快,可以再优化一下吗
答:不知道
C++
5.重载和覆盖的区别
6.面向对象的特性
7.static和const修饰类成员函数
8.static和const可以同时修饰类成员函数吗?
答:可以(这个错了,后来查了一下不可以)
算法和数据结构
9堆排讲一下原理
10.实现了解吗?
11.其他排序算法
12.哈希冲突
13.A*算法了解吗?讲一下
14.网络流会吗
答:不会
计网
15.4次挥手
16.time_wait状态为什么要等待2msl
17.如果服务器断开连接会怎么样
18.在2msl之后一定会结束吗?
19.DNS协议讲一下
20.select和epoll的区别
21.底层实现了解吗
操作系统
22.CPU调度算法
23.虚拟内存讲一下
24.物理地址到逻辑地址之间是怎么转换的
这个答错了,我回答的是多个逻辑地址可以映射同一个一个物理地址,然后通过页表去查询。后面才反应过来是想问TLB和MMU那些。
25.分页和分段的区别
26.进程间通信
27.命名管道和匿名管道的区别
不了解匿名管道QAQ
28.台阶问题求所有路径,要求必须用dp的方式解,不能用搜索
这个到现在也没想明白dp怎么输出所有路径,求大佬解答
反问:
1.有哪些地方做的不足
只是简单的把书过了一遍,没有去深究底层原理
2.游戏研发主要是做什么的
什么都做
3.反馈时间
5-7个工作日
二面 50min
1.自我介绍
2.服务器是怎么实现的
3.你epoll是直接调用吗?套接字状态是阻塞的?
4.你这个套接字是阻塞的吗?
答:应该先用fcntl修改套接字属性
5.哈希表的实现原理
6.能实现一个吗
7.100M数据,10M内存,key和value分别是id和string,id只有1.5M,怎么读取,怎么存
8给定三个函数和一个接口,.手写一个定时器
int AddTimer(int delay,std::function<void()> &cb)//添加一个定时器,结束时调用cb
{
}
void Remove(int id)//给定定时器ID移除指定定时器
{
}
Update(int ts)//外面有一个while循环一直调用,去检查定时器状态
{
} 没搞明白需求,问了两次面试官有点不耐烦了,然后就结束了 没有给反问机会
可能面试官面了一天了,加上自己太菜了,没什么工程经验
查看2道真题和解析
三奇智元机器人科技有限公司公司福利 70人发布