- 2
- 0
- 约4.44千字
- 约 12页
- 2026-02-11 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年网易游戏开发顾问面试题参考
一、编程能力测试(共3题,每题20分)
1.题目(20分):
编写一个函数,实现将任意长度的二进制字符串(例如1010101)转换为十进制整数。要求:
(1)不使用内置的`int()`或`bin()`等转换函数;
(2)处理输入为空字符串或非二进制字符的情况时,返回`0`;
(3)考虑边界条件,如输入为0000时仍返回`0`。
答案与解析:
python
defbin_to_decimal(binary_str):
ifnotbinary_strornotall(cin01forcinbinary_str):
return0
decimal=0
forcharinbinary_str:
decimal=decimal2+int(char)
returndecimal
解析:
-判断输入是否为空或包含非二进制字符,若不满足条件则直接返回`0`;
-使用循环遍历每个字符,通过位运算实现转换:当前位的值是前一位的`2倍加当前位的数值`;
-边界测试:`0000`会逐位计算为`0`,符合预期。
2.题目(20分):
实现一个LRU(最近最少使用)缓存,支持`get(key)`和`put(key,value)`操作。要求:
(1)缓存容量固定为`3`,超出时需淘汰最久未使用的元素;
(2)`get()`操作若命中则返回值并更新使用顺序,未命中返回`-1`;
(3)`put()`操作若已存在则覆盖值并更新顺序,否则插入并淘汰最久未使用元素。
答案与解析:
python
classLRUCache:
def__init__(self,capacity=3):
self.cache={}
self.capacity=capacity
self.order=[]
defget(self,key):
ifkeynotinself.cache:
return-1
self.order.remove(key)
self.order.append(key)
returnself.cache[key]
defput(self,key,value):
ifkeyinself.cache:
self.order.remove(key)
eliflen(self.cache)=self.capacity:
oldest_key=self.order.pop(0)
delself.cache[oldest_key]
self.cache[key]=value
self.order.append(key)
解析:
-使用字典`cache`存储键值对,列表`order`记录使用顺序;
-`get()`操作通过`order`列表维护最近使用顺序,命中则移动至末尾;
-`put()`操作先判断是否覆盖,若容量满则删除最久未使用的元素(`order[0]`)。
3.题目(20分):
给定一个包含`n`个整数的数组,找出所有和为`target`的三个整数,且这三个整数不能重复使用。要求:
(1)返回所有不重复的三元组;
(2)三元组按升序排列,且结果集不能有重复的三元组(如`[-1,0,1]`和`[0,-1,1]`视为相同)。
答案与解析:
python
defthree_sum(nums,target):
nums.sort()
n=len(nums)
result=[]
foriinrange(n):
ifi0andnums[i]==nums[i-1]:
continue
left,right=i+1,n-1
whileleftright:
total=nums[i]+nums[left]+nums[right]
iftotal==target:
result.append([nums[i],nums[left],nums[right]])
whileleftrightandnums[left]==nums[left+1]:
left+=1
whileleftrightandnums[right]==nums[right-1]:
right-=1
left+=1
right-=1
eliftotaltarget:
left+=1
else:
right-=1
returnresult
解析:
-首先对数组排序,便于跳过重复元素;
-双指针法:固定一个数,然后用`left`和`right`分别向中间移动,寻找和为`tar
原创力文档

文档评论(0)