- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第PAGE页共NUMPAGES页
2026年IT公司软件工程师面试问题解答
一、编程语言基础(共3题,每题10分)
题目1:
请用Python编写一个函数,实现将输入的十进制数转换为二进制字符串。如果输入不是正整数,函数应抛出`ValueError`异常。
答案:
python
defdec_to_bin(n):
ifnotisinstance(n,int)orn0:
raiseValueError(输入必须是正整数)
returnbin(n)[2:]
解析:
-`isinstance(n,int)`检查输入是否为整数类型。
-`n0`确保输入为正整数。
-`bin(n)`将十进制转为二进制,`[2:]`切片去掉前缀`0b`。
-抛出`ValueError`符合异常处理规范,提高代码健壮性。
题目2:
用Java实现一个方法,统计字符串中所有子字符串的长度之和。例如,输入`abc`,输出应为`6`(`a+b+c+ab+bc+abc`)。
答案:
java
publicstaticintsubstringLengthSum(Strings){
intsum=0;
for(inti=0;is.length();i++){
for(intj=i+1;j=s.length();j++){
sum+=j-i;
}
}
returnsum;
}
解析:
-双层循环遍历所有子字符串(`i`为起始,`j`为结束)。
-`j-i`为当前子字符串长度,累加至`sum`。
-时间复杂度O(n2),适合小规模输入。
题目3:
用C++实现快速排序算法,要求使用递归方式。输入一个整数数组,返回排序后的数组。
答案:
cpp
includevector
usingnamespacestd;
voidquickSort(vectorintarr,intleft,intright){
if(left=right)return;
intpivot=arr[(left+right)/2];
inti=left,j=right;
while(i=j){
while(arr[i]pivot)i++;
while(arr[j]pivot)j--;
if(i=j)swap(arr[i++],arr[j--]);
}
quickSort(arr,left,j);
quickSort(arr,i,right);
}
vectorintsortArray(vectorintnums){
quickSort(nums,0,nums.size()-1);
returnnums;
}
解析:
-选择中位数作为基准(pivot),分区操作(`i=j`交换)。
-递归排序左右子数组。
-时间复杂度平均O(nlogn),不稳定排序需注意场景。
二、数据结构与算法(共4题,每题12分)
题目4:
用JavaScript实现一个LRU(最近最少使用)缓存,支持`get(key)`和`put(key,value)`操作。缓存容量为3,超出时淘汰最久未使用项。
答案:
javascript
classLRUCache{
constructor(capacity){
this.capacity=capacity;
this.map=newMap();
}
get(key){
if(!this.map.has(key))return-1;
const[value,next]=this.map.get(key);
this.map.delete(key);
this.map.set(key,[value,this.map.get(next)||null]);
returnvalue;
}
put(key,value){
if(this.map.has(key)){
this.map.delete(key);
}elseif(this.map.size===this.capacity){
const[_,tail]=this.map.entries().next().value;
this.map.delete(tail);
}
lettail=null;
for(const[k,[v,next]]ofthis.map){
tail=k;
if(next===null)break;
}
this.map.set(key,[value,
原创力文档


文档评论(0)