2026年IT工程师面试题问答大全.docxVIP

  • 0
  • 0
  • 约8.02千字
  • 约 27页
  • 2026-01-11 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年IT工程师面试题问答大全

一、编程语言基础(5题,每题8分)

题目1(Python)

题目:请编写一个Python函数,实现判断一个字符串是否为回文字符串。例如,level、madam是回文字符串,而hello不是。要求不使用Python内置的回文判断方法,并说明时间复杂度。

答案:

python

defis_palindrome(s):

left,right=0,len(s)-1

whileleftright:

ifs[left].lower()!=s[right].lower():

returnFalse

left+=1

right-=1

returnTrue

时间复杂度:O(n),其中n为字符串长度

解析:

通过双指针法从两端向中间遍历,比较对应字符是否相同。忽略大小写问题,时间复杂度为O(n),空间复杂度为O(1)。

题目2(Java)

题目:请实现一个Java方法,找出数组中第三大的数。如果数组元素不足三个或存在重复第三大的数,返回-1。假设数组中没有null元素。

答案:

java

publicintthirdMax(int[]nums){

Integerfirst=null,second=null,third=null;

for(intnum:nums){

if(num==first||num==second||num==third)continue;

if(first==null||numfirst){

third=second;

second=first;

first=num;

}elseif(second==null||numsecond){

third=second;

second=num;

}elseif(third==null||numthird){

third=num;

}

}

returnthird!=null?third:-1;

}

解析:

使用三个变量记录当前前三大的数。遍历数组时,不断更新这三个变量。时间复杂度为O(n),空间复杂度为O(1)。

题目3(JavaScript)

题目:请编写一个JavaScript函数,实现数组去重,要求保持原始数组的顺序。例如,输入[1,2,2,3,4,4,4,5],输出[1,2,3,4,5]。

答案:

javascript

functionunique(arr){

constresult=[];

constseen=newSet();

for(constitemofarr){

if(!seen.has(item)){

seen.add(item);

result.push(item);

}

}

returnresult;

}

解析:

使用Set记录已见过的元素,遍历数组时只添加未出现过的元素。时间复杂度为O(n),空间复杂度为O(n)。

题目4(C++)

题目:请实现一个C++函数,计算二叉树的最大深度。假设二叉树节点定义如下:

cpp

structTreeNode{

intval;

TreeNodeleft;

TreeNoderight;

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

};

答案:

cpp

intmaxDepth(TreeNoderoot){

if(root==NULL)return0;

return1+max(maxDepth(root-left),maxDepth(root-right));

}

解析:

采用递归方法,每个节点深度为1加上左右子树的最大深度。时间复杂度为O(n),空间复杂度为O(h)(h为树的高度)。

题目5(C#)

题目:请编写一个C#方法,找出字符串中不重复的最长子串的长度。例如,输入abcabcbb,输出abc的长度3。

答案:

csharp

publicintLengthOfLongestSubstring(strings){

intleft=0,right=0,maxLen=0;

Dictionarychar,intcharIndex=newDictionarychar,int();

while(rights.Length){

if(charIndex.ContainsKey(s[right])){

left=Math.Max(left,charIndex[s[right]]+1

文档评论(0)

1亿VIP精品文档

相关文档