昨晚做网易互娱的笔试,比较尴尬的是只能用C/C++/Java,而本人对C/C++的了解仅限于大一的课程设计(而且一年多没用过C写代码了),Java差不多看得懂代码但是没有系统的学过。无奈最后只能用python写了两道题,再用C照着python的语法写了一遍(然而提交没通过,基本上是凉凉了)

第二题:

题目其实就是模拟一个文件系统的简单实现,对文件系统机制有过了解的话还是很容易看懂题目的。

首先定义一个列表 file[] 模拟文件流,定义一个列表hui_shou[]记录被回收的文件描述符 ,定义一个全局变量cj表示下一个文件描述符

open操作,相当于往文件流中增加一个文件描述符,可以用一个字典来表示{"文件描述符" : "文件名(文件地址)"},返回值为新增字典的文件描述符。注意,如果暂无文件描述符被回收(即当前无文件关闭,hui_shou=[]),那么增加的文件描述符为cj,否则先将已被回收的文件描述符重新利用

(用字典表示是因为字典的key唯一而value不唯一,方便后续dup、dup2操作)

dup操作,相当于有一个新用户打开一个已经被打开且尚未关闭的文件,还是向文件中添加一个字典,返回值为新字典的文件描述符

dup2操作,操作基本同上,只是强制设定了新字典的文件描述符,不用系统自动分配

query操作,通过文件描述符返回对应的文件名(文件地址)

close操作,关闭文件,将对应的字典从文件流中移除,并将被移除的文件描述符添加至hui_shou[]

python代码如下:

t = int(input())
data = []
for hahaha in range(t):                             c_j = []n = int(input())for i in range(n):c_j.append(list(input().split(" ",1)))      #只切割一次,方便后续eval函数调用data.append(c_j)def open(filename):global cj                                       #待加入的文件描述符global file                                     #文件流global hui_shou                                 #回收流if hui_shou:n = hui_shou.pop()                          #弹出最近被回收的文件描述符file['{}'.format(n)] = filename             #加入文件流print(n)else:file['{}'.format(cj)] = filename            cj += 1print(cj-1)def dup(num):global fileglobal cjglobal hui_shouif hui_shou:n = hui_shou.pop()file['{}'.format(n)] = file['{}'.format(int(num[0]))]print(n)else:file['{}'.format(cj)] = file['{}'.format(int(num[0]))]cj += 1print(cj - 1)def dup2(num):n = num[0].split(" ")                           #由于有两个参数,故还需进行一次切割global filefile["{}".format(int(n[1]))] =file["{}".format(int(n[0]))]  def close(num):global fileglobal hui_shoudel file["{}".format(int(num[0]))]hui_shou.append(int(num[0]))def query(num):global fileprint(file["{}".format(int(num[0]))][0])for j in range(t):cj = 0hui_shou = []file = {}for i in range(len(data[j])):eval("{}".format(data[j][i][0]))(data[j][i][1:])  #通过字符串来调用函数#以下是测试样例
# 2
# 10
# open libc.so
# open libm.so
# open libdl.so
# dup 2
# dup2 0 2
# close 0
# query 1
# query 2
# query 3
# open log.txt
# 10
# open output.txt
# dup2 0 1000000
# close 0
# open output2.txt
# dup2 0 100000
# close 0
# open 1.txt
# dup 100000
# query 1
# query 0

由于博主是拿python实现的,用C语言重写时又没写出来,故没能进入系统测评,只能拿题目中给出的样例进行测评(样例通过无误),故有两个地方无法确定写法:

1. 需不需要实现文件描述符自动回收重用机制【题中样例并不涉及自动重用被回收的文件描述符,dup2是手动重用】(本人代码中已实现自动重用)

2. 回收流是采用的队列还是栈【先进先出还是后进先出】(本人代码中是利用栈实现,如需队列实现可以考虑 “出入栈”)

第三、四题太长了没来得及截图,第四题也没来得及写。

第三题是关于神经网络的,第四题好像与地球有关(经纬度?!公转自转?!)

如果哪位老哥有后面三题(有第2、3、4题的测试用例更好)且不吝分享的话可以私我一下,谢谢啦~

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

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

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

  2. 2020.3网易互娱游戏客户端开发面试

    2020.3网易互娱游戏客户端开发面试 视频面试 视频面试 首先先问了项目的情况,主要做了哪方面功能,面试之前一定要回忆清楚,会问的比较仔细. 问了UI框架,MVC原理,事件消息机制怎么实现.(回答的 ...

  3. 20190822网易互娱游戏研发

    2019.8.22 网易互娱游戏研发工程师 一面,45分钟 代码测试:size_t strlcpy(const char* src, char* dest, size_t size); size表示目 ...

  4. 三七互娱2019秋季校园招聘

    三七互娱2019秋季校园招聘QQ群

  5. 欢聚时代java面试面经_欢聚时代(YY)校园招聘一面面经-java开发工程师

    欢聚时代(YY)校园招聘一面面经-java开发工程师 发布于 2014-10-20 00:01:59 | 398 次阅读 | 评论: 0 | 来源: 网友投递 欢聚时代欢聚时代成立于2005年4月,于 ...

  6. [面经]网易互娱 游戏研发 offer√

    拿到字节的意向书后闲来无事,多面几个看看自己到底什么水平.结果一不小心拿到了网易互娱的offer,薪水真是香,比字节还高了几千,没想到会这么高,看到薪资时惊呆我了.但是慎重考虑后还是拒了,选了字节.纯 ...

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

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

  8. 网易互娱游戏研发岗准备

    历史经验 Python大类 Python 都用了哪些模块?用的是 Python 2 还是 Python 3?2 和 3 有什么区别? range() 函数返回什么? import 是如何加载的?如果想 ...

  9. 2022暑期实习网易互娱游戏研发

    笔试三题,150分钟 足球比赛,多属性排序 六个位置,每个位置一堆选项,选择暴击率大于等于100且伤害值最高的排列,dfs 迷宫,一次最多K步,M位不停留,W位是障碍,求最少回合数 一面 手撕代码(多 ...

最新文章

  1. 马云再谈996,又一次被网友怒骂:马老师,求求你闭嘴吧!
  2. Mac终端 bash和zsh切换方法
  3. 判断一棵二叉树是否为平衡二叉树
  4. JavaScript实现strongly Connected Components 强连通分量算法(附完整源码)
  5. [JLOI2014]聪明的燕姿(搜索)
  6. 网上农大计算机应用基础在线作业1答案,东北农业大学网络教育学院计算机应用基础网上作业题及答案.doc...
  7. sql 按时间二段排序
  8. EMLOG仿微信主题模板V3.11
  9. 理解$watch ,$apply 和 $digest --- 理解数据绑定过程
  10. ZOJ 3985 2017CCPC秦皇岛 E:String of CCPC
  11. 本人正式入驻博客园~
  12. 在用户控件中动态添加控件及事件
  13. ofo这事吧,其实也挺好的
  14. Django下载安装及创建项目
  15. 移动侦测/周界入侵检测智能分析摄像头采集的智能分析数据如何通过国标GB28181平台进行接入与分发
  16. 产品经理的职责有哪些?到底该做什么?
  17. 海思开发板上添加ftp功能
  18. 青岛地铁不能让你的房子升值
  19. Android移动开发问题 AAPT: error: resource xml/11 (aka com.example.myapplication:xml/11) not found.
  20. 山狮系统_苹果操作系统OSX10.8山狮/美洲狮Mountain Lion怎么安装

热门文章

  1. python求和1到100_python求1到100的和的几种方法
  2. 基于STM32F103C8T6的充电桩计费系统(程序+原理图+PCB+论文)
  3. 访问服务器显示无法访问目标主机,ip无法访问目标主机
  4. 微软编程规范(文档)
  5. 威联通服务器无限重启,威联通NAS,时不时的读盘,无法休眠的问题
  6. 意大利西西里百年历史Asaro家族橄榄油
  7. 用手机APP来养一盆绿植,这个黑科技智能花盆实在是太炫酷 | 钛空舱
  8. 用手机访问计算机共享资源,怎么进入共享文件夹?手机访问电脑局域网共享文件夹的方法...
  9. MTK平台双击Power打开Camera的简单流程
  10. 涉密计算机打印机共享案例分析,案例教程|兼收并蓄,有线打印机无线共享实战...