- 1
- 0
- 约6.07千字
- 约 18页
- 2026-02-11 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年信息技术行业软件工程师面试题及答案
一、编程语言基础(5题,每题10分,共50分)
1.题目:
请用Java编写一个方法,实现判断一个整数是否为完全平方数。例如,输入9,返回true;输入10,返回false。要求不使用任何第三方库。
答案:
java
publicbooleanisPerfectSquare(intnum){
if(num0)returnfalse;
longleft=0,right=num;
while(left=right){
longmid=left+(right-left)/2;
longsquare=midmid;
if(square==num)returntrue;
if(squarenum)left=mid+1;
elseright=mid-1;
}
returnfalse;
}
解析:
采用二分查找法,时间复杂度为O(logn),避免了暴力计算的高时间消耗。左边界从0开始,右边界为num,通过不断缩小范围判断平方值是否等于目标数。
2.题目:
请用Python实现一个函数,统计一个字符串中所有元音字母(a,e,i,o,u)出现的次数。大小写不敏感。
答案:
python
defcount_vowels(s):
vowels=aeiouAEIOU
return{char:s.lower().count(char)forcharinvowels}
解析:
将字符串统一转换为小写,然后遍历元音字母集合,使用`count`方法统计每个元音的出现次数,返回字典形式的结果。
3.题目:
请用C++实现一个函数,反转一个单链表。假设链表节点定义如下:
cpp
structListNode{
intval;
ListNodenext;
ListNode(intx):val(x),next(nullptr){}
};
答案:
cpp
ListNodereverseList(ListNodehead){
ListNodeprev=nullptr;
ListNodecurr=head;
while(curr){
ListNodenext=curr-next;
curr-next=prev;
prev=curr;
curr=next;
}
returnprev;
}
解析:
采用迭代法反转链表,通过三个指针`prev`、`curr`和`next`逐步调整节点指向,最终实现反转。
4.题目:
请用JavaScript实现一个函数,检查一个数组是否为严格递增序列。例如,[1,2,3,4]返回true,[1,2,2,3]返回false。
答案:
javascript
functionisStrictlyIncreasing(arr){
for(leti=1;iarr.length;i++){
if(arr[i]=arr[i-1])returnfalse;
}
returntrue;
}
解析:
从头到尾遍历数组,比较相邻元素,若当前元素不大于前一个,则不是严格递增。
5.题目:
请用Go语言实现一个函数,计算两个非负整数的最大公约数(GCD)。要求不使用第三方库。
答案:
go
funcgcd(a,bint)int{
forb!=0{
a,b=b,a%b
}
returna
}
解析:
采用欧几里得算法,通过循环不断用较小数替换较大数,直到余数为0,此时较大数即为GCD。
二、算法与数据结构(5题,每题10分,共50分)
1.题目:
给定一个数组,请找出其中重复次数最多的元素及其出现次数。例如,输入[1,3,2,1,4,1],返回(1,3)。
答案:
python
fromcollectionsimportCounter
defmost_frequent(nums):
count=Counter(nums)
max_count=max(count.values())
fornum,cntincount.items():
ifcnt==max_count:
return(num,cnt)
解析:
使用`Counter`统计数组中每个元素的出现次数,然后找到最大出现次数的元素并返回。
2.题目:
请用Java实现一个方法,将一个字符串中的所有单词按字典序排序。例如,输入helloworldappleorange,输出applehello
原创力文档

文档评论(0)