- 0
- 0
- 约7.49千字
- 约 23页
- 2026-02-09 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年软件公司开发岗位求职者常见面试题
一、编程语言基础(共5题,每题10分,总分50分)
1.题目:请用Java编写一个方法,实现将一个整数反转。例如,输入123,输出321。要求考虑输入为负数和输入为0的情况。
答案:
java
publicclassReverseNumber{
publicstaticintreverse(intx){
intrev=0;
while(x!=0){
intpop=x%10;
x/=10;
if(revInteger.MAX_VALUE/10||(rev==Integer.MAX_VALUE/10pop7))return0;
if(revInteger.MIN_VALUE/10||(rev==Integer.MIN_VALUE/10pop-8))return0;
rev=rev10+pop;
}
returnrev;
}
publicstaticvoidmain(String[]args){
System.out.println(reverse(123));//输出321
System.out.println(reverse(-123));//输出-321
System.out.println(reverse(0));//输出0
}
}
解析:
-方法通过循环取模和除法操作,逐位反转整数。
-考虑了整数溢出问题,通过判断边界值防止溢出。
-处理了负数和0的情况,确保正确输出。
2.题目:请用Python编写一个函数,判断一个字符串是否是回文(正读反读相同)。例如,输入racecar,输出True;输入hello,输出False。
答案:
python
defis_palindrome(s:str)-bool:
left,right=0,len(s)-1
whileleftright:
ifs[left]!=s[right]:
returnFalse
left+=1
right-=1
returnTrue
print(is_palindrome(racecar))#输出True
print(is_palindrome(hello))#输出False
解析:
-使用双指针法,从字符串两端向中间遍历。
-忽略大小写和空格(可扩展),这里仅考虑纯字母。
-时间复杂度O(n),空间复杂度O(1)。
3.题目:请用C++编写一个函数,找出数组中第三大的数。例如,输入[1,2,2,5,3,5],输出2。
答案:
cpp
includevector
includealgorithm
usingnamespacestd;
intthirdMax(vectorintnums){
longa=LONG_MIN,b=LONG_MIN,c=LONG_MIN;
for(autonum:nums){
if(numa){
c=b;
b=a;
a=num;
}
elseif(numbnuma){
c=b;
b=num;
}
elseif(numcnumb){
c=num;
}
}
returnc==LONG_MIN?a:c;
}
intmain(){
vectorintnums={1,2,2,5,3,5};
coutthirdMax(nums);//输出2
return0;
}
解析:
-使用三个变量记录前三大的数。
-遍历数组时动态更新,避免使用排序(时间复杂度O(n))。
-处理重复值,确保第三大数唯一。
4.题目:请用JavaScript编写一个函数,实现深拷贝一个对象。例如,输入`{a:1,b:{c:2}}`,输出`{a:1,b:{c:2}}`(独立于原对象)。
答案:
javascript
functiondeepCopy(obj){
if(obj===null||typeofobj!==object){
returnobj;
}
letcopy=Array.isArray(obj)?[]:{};
for(letkeyinobj){
if(obj.hasOwnProperty(key)){
copy[key]=deepCopy(obj[key]);
}
}
returncopy;
}
constoriginal={a:1
原创力文档

文档评论(0)