2026年软件开发工程师面试题库.docxVIP

  • 0
  • 0
  • 约9.03千字
  • 约 26页
  • 2026-02-25 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年软件开发工程师面试题库

一、编程语言基础(5题,每题10分,共50分)

题目1(Java)

编写一个Java方法,实现将一个字符串中的所有空格替换为%20。要求不使用内置的String替换方法,并分析时间复杂度和空间复杂度。

答案:

java

publicclassReplaceSpaces{

publicstaticStringreplaceSpaces(Strings){

if(s==null)returnnull;

//先计算空格数量

intspaceCount=0;

for(inti=0;is.length();i++){

if(s.charAt(i)==){

spaceCount++;

}

}

//创建新字符串

StringBuildersb=newStringBuilder(s.length()+spaceCount2);

for(inti=0;is.length();i++){

charc=s.charAt(i);

if(c==){

sb.append(%20);

}else{

sb.append(c);

}

}

returnsb.toString();

}

publicstaticvoidmain(String[]args){

System.out.println(replaceSpaces(HelloWorld));

}

}

解析:

-时间复杂度:O(n),需要遍历两次字符串(一次计算空格,一次替换)

-空间复杂度:O(n),需要创建新的字符串存储结果

-优化思路:可以预先计算空格数量,然后从后向前替换,避免多次扩容

题目2(C++)

实现一个函数,检查一个二叉树是否是平衡二叉树。平衡二叉树定义:对于任意节点,其左右子树的高度差不超过1。

答案:

cpp

includealgorithm

usingnamespacestd;

structTreeNode{

intval;

TreeNodeleft;

TreeNoderight;

TreeNode(intx):val(x),left(NULL),right(NULL){}

};

classSolution{

public:

boolisBalanced(TreeNoderoot){

returncheckHeight(root)!=-1;

}

private:

//返回二叉树的高度,如果不平衡则返回-1

intcheckHeight(TreeNodenode){

if(node==NULL)return0;

intleftHeight=checkHeight(node-left);

if(leftHeight==-1)return-1;

intrightHeight=checkHeight(node-right);

if(rightHeight==-1)return-1;

if(abs(leftHeight-rightHeight)1){

return-1;

}

returnmax(leftHeight,rightHeight)+1;

}

};

解析:

-采用后序遍历的方式,先检查左右子树是否平衡,再检查当前节点

-时间复杂度:O(n),每个节点只访问一次

-空间复杂度:O(h),递归栈的深度等于二叉树的高度

题目3(Python)

实现一个LRU(LeastRecentlyUsed)缓存机制,使用Python字典和双向链表。要求:

1.支持get(key)操作,返回key对应的value,并将该key标记为最近使用

2.支持put(key,value)操作,如果key已存在则更新value,并将该key标记为最近使用;如果缓存已满,则删除最久未使用的key

答案:

python

classListNode:

def__init__(self,key=None,value=None):

self.key=key

self.value=value

self.prev=None

self.next=None

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

创建伪头部和伪尾部

self.head=ListNode()

self.tail=ListNode()

self.head.

文档评论(0)

1亿VIP精品文档

相关文档