- 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)