200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 【面试题】网易互娱(游戏)校园招聘笔试 - 服务端开发工程师[文件系统]

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

时间:2019-02-01 18:20:15

相关推荐

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

昨晚做网易互娱的笔试,比较尴尬的是只能用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题的测试用例更好)且不吝分享的话可以私我一下,谢谢啦~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。