2026年研发工程师招聘面试题集.docxVIP

  • 0
  • 0
  • 约4.67千字
  • 约 16页
  • 2026-01-17 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年研发工程师招聘面试题集

一、编程能力测试(共5题,每题10分,总分50分)

1.编程语言基础(10分)

题目:请用Python编写一个函数,实现将一个列表中的所有奇数移动到前面,偶数移动到后面,并保持奇数和偶数内部的原有顺序。例如,输入`[1,2,3,4,5,6]`,输出`[1,3,5,2,4,6]`。

答案:

python

defreorder_list(nums):

odd=[xforxinnumsifx%2!=0]

even=[xforxinnumsifx%2==0]

returnodd+even

解析:

-列表推导式分别提取奇数和偶数,保持原有顺序。

-最后将奇数列表和偶数列表拼接,满足题目要求。

2.数据结构与算法(10分)

题目:请用Java实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作。缓存容量为3,当超出容量时,淘汰最久未使用的元素。

答案:

java

importjava.util.HashMap;

importjava.util.Map;

classLRUCacheK,V{

privatefinalintcapacity;

privatefinalMapK,Nodemap;

privateNodehead,tail;

classNode{

Kkey;

Vvalue;

Nodeprev,next;

}

publicLRUCache(intcapacity){

this.capacity=capacity;

map=newHashMap();

}

publicVget(Kkey){

Nodenode=map.get(key);

if(node==null)returnnull;

moveToHead(node);

returnnode.value;

}

publicvoidput(Kkey,Vvalue){

Nodenode=map.get(key);

if(node!=null){

node.value=value;

moveToHead(node);

}else{

if(map.size()==capacity){

map.remove(tail.key);

removeNode(tail);

}

NodenewNode=newNode();

newNode.key=key;

newNode.value=value;

addToHead(newNode);

map.put(key,newNode);

}

}

privatevoidaddToHead(Nodenode){

node.prev=head;

node.next=head.next;

head.next.prev=node;

head.next=node;

}

privatevoidremoveNode(Nodenode){

node.prev.next=node.next;

node.next.prev=node.prev;

}

privatevoidmoveToHead(Nodenode){

removeNode(node);

addToHead(node);

}

}

解析:

-使用双向链表+哈希表实现LRU。

-`get`操作将节点移动到头部,`put`操作先检查是否已存在,若超出容量则删除尾部节点。

3.剑指Offer算法题(10分)

题目:给定一个排序数组,请原地删除重复的元素,使得每个元素只出现一次,并返回新的长度。例如,输入`[0,0,1,1,1,2,2,3,3,4]`,返回`[0,1,2,3,4]`,新长度为5。

答案:

java

publicintremoveDuplicates(int[]nums){

if(nums.length==0)return0;

intslow=0;

for(intfast=1;fastnums.length;fast++){

if(nums[fast]!=nums[slow]){

slow++;

nums[slow]=nums[fast];

}

}

returnslow+1;

}

解析:

-双指针法,`slow`指向当前不重复的最后一个位置,`fast`遍历数组。

-当`fast`发现新元素时,更新`slow`并赋值。

4.面向对象编程(10分)

题目:请用C++实现一个`Singl

文档评论(0)

1亿VIP精品文档

相关文档