2026年软件工程师面试题库及答案解析.docxVIP

  • 0
  • 0
  • 约8.29千字
  • 约 24页
  • 2026-02-08 发布于福建
  • 举报

2026年软件工程师面试题库及答案解析.docx

第PAGE页共NUMPAGES页

2026年软件工程师面试题库及答案解析

一、编程语言基础(3题,每题10分)

题目1:

请用Java实现一个方法,输入一个整数数组,返回数组中所有奇数元素的和。要求不使用任何外部库。

答案解析:

java

publicstaticintsumOfOdds(int[]arr){

intsum=0;

for(intnum:arr){

if(num%2!=0){

sum+=num;

}

}

returnsum;

}

解析:遍历数组,判断每个元素是否为奇数(`num%2!=0`),若是则累加到`sum`中。时间复杂度O(n),空间复杂度O(1)。

题目2:

用Python编写一个函数,接收一个字符串,返回该字符串中所有连续重复字符的起始和结束索引。例如,输入`abccba`,输出`[(0,1),(2,3),(4,5)]`。

答案解析:

python

deffind_repeats(s):

result=[]

i=0

whileilen(s)-1:

ifs[i]==s[i+1]:

start=i

whileilen(s)-1ands[i]==s[i+1]:

i+=1

end=i

result.append((start,end))

i+=1

returnresult

解析:使用双指针遍历字符串,当发现连续重复字符时,记录起始和结束索引。时间复杂度O(n),空间复杂度O(1)。

题目3:

用C++实现一个函数,将一个字符串中的所有空格替换为`%20`。假设字符串有足够的空间存储结果。

答案解析:

cpp

includestring

usingnamespacestd;

voidreplaceSpaces(strings){

intcount=0;

for(charc:s){

if(c==)count++;

}

intnew_length=s.length()+2count;

s.resize(new_length);

inti=s.length()-1;

for(intj=s.length()-1;j=0;j--){

if(s[j]==){

s[i--]=0;

s[i--]=2;

s[i--]=%;

}else{

s[i--]=s[j];

}

}

}

解析:先统计空格数量,扩展字符串长度,然后从后往前替换空格为`%20`。时间复杂度O(n),空间复杂度O(1)。

二、数据结构与算法(5题,每题10分)

题目4:

用链表实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作。要求`get`操作返回值为缓存中键对应的值,`put`操作将键值对插入缓存中,如果缓存已满则删除最久未使用的元素。

答案解析:

python

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

self.head=Node(0,0)

self.tail=Node(0,0)

self.head.next=self.tail

self.tail.prev=self.head

classNode:

def__init__(self,key,value):

self.key=key

self.value=value

self.prev=None

self.next=None

defget(self,key:int)-int:

ifkeyinself.cache:

node=self.cache[key]

self._remove(node)

self._add(node)

returnnode.value

return-1

defput(self,key:int,value:int)-None:

ifkeyinself.cache:

self._remove(self.cache[key])

node=Node(key,value)

self.cache[key]=node

self._add(node)

iflen(self.cache)self.capacity:

lru=self.tail.prev

self._remove(lru)

delself.cache[lru.key]

def_remove(self,node):

d

文档评论(0)

1亿VIP精品文档

相关文档