网易互娱游戏研发工程师一二面面经
一面 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循环一直调用,去检查定时器状态 { }没搞明白需求,问了两次面试官有点不耐烦了,然后就结束了
没有给反问机会
可能面试官面了一天了,加上自己太菜了,没什么工程经验