2026年IT技术面试题及备考指南.docxVIP

  • 0
  • 0
  • 约8.71千字
  • 约 26页
  • 2026-01-15 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年IT技术面试题及备考指南

一、编程语言与数据结构(共5题,总分20分)

1.题目1(Java,4分):

编写一个Java方法,实现将一个字符串中的所有空格替换为“%20”。假设字符串的长度足够容纳替换后的结果。

答案:

java

publicclassReplaceSpaces{

publicstaticStringreplaceSpaces(Strings){

if(s==null)returnnull;

StringBuildersb=newStringBuilder();

for(charc:s.toCharArray()){

if(c==){

sb.append(%20);

}else{

sb.append(c);

}

}

returnsb.toString();

}

publicstaticvoidmain(String[]args){

System.out.println(replaceSpaces(HelloWorld));//输出:Hello%20World

}

}

解析:

使用`StringBuilder`提高字符串拼接效率,通过遍历字符逐个替换空格。时间复杂度O(n),空间复杂度O(n)。

2.题目2(Python,4分):

给定一个数组,返回其中所有和为target的三元组。例如,输入`[2,7,11,15]`,`target=9`,输出`[[2,7],[7,2]]`(允许重复三元组)。

答案:

python

defthree_sum(nums,target):

nums.sort()

res=[]

foriinrange(len(nums)-2):

ifi0andnums[i]==nums[i-1]:

continue

left,right=i+1,len(nums)-1

whileleftright:

total=nums[i]+nums[left]+nums[right]

iftotal==target:

res.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

returnres

示例

print(three_sum([2,7,11,15],9))#输出:[[2,7,0]]

解析:

先排序,然后使用双指针法。时间复杂度O(n2),空间复杂度O(1)。

3.题目3(C++,5分):

实现一个函数,检查二叉树是否是平衡的(左右子树高度差不超过1)。

答案:

cpp

includealgorithm

usingnamespacestd;

structTreeNode{

intval;

TreeNodeleft,right;

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

};

intgetHeight(TreeNoderoot){

if(!root)return0;

intleftHeight=getHeight(root-left);

intrightHeight=getHeight(root-right);

if(leftHeight==-1||rightHeight==-1||abs(leftHeight-rightHeight)1)

return-1;

returnmax(leftHeight,rightHeight)+1;

}

boolisBalanced(TreeNoderoot){

returngetHeight(root)!=-1;

}

解析:

递归计算子树高度,若发现不平衡(高度差1或子树为-1),则提前返回。时间复杂度O(n),空间复杂度O(h)(h为树高)。

4.题目4(JavaScript,5分):

编写一个函数,实现二分查找的变体:在排序数组中查找第一个大于等于target的元素。

答案:

javascript

functionfindFirstGreaterEqu

文档评论(0)

1亿VIP精品文档

相关文档