2026年华为软件工程师面试题及答案详解.docxVIP

  • 0
  • 0
  • 约5.05千字
  • 约 14页
  • 2026-01-15 发布于福建
  • 举报

2026年华为软件工程师面试题及答案详解.docx

第PAGE页共NUMPAGES页

2026年华为软件工程师面试题及答案详解

一、编程题(共5题,每题20分,总分100分)

题目1(Java基础):

编写一个Java方法,实现判断一个字符串是否为“回文串”(正读和反读相同)。例如,输入madam返回true,输入hello返回false。要求不使用现成的字符串反转方法,时间复杂度尽可能低。

答案1:

java

publicclassPalindromeChecker{

publicstaticbooleanisPalindrome(Strings){

if(s==null)returnfalse;

intleft=0,right=s.length()-1;

while(leftright){

if(s.charAt(left)!=s.charAt(right)){

returnfalse;

}

left++;

right--;

}

returntrue;

}

publicstaticvoidmain(String[]args){

System.out.println(isPalindrome(madam));//true

System.out.println(isPalindrome(hello));//false

}

}

解析1:

该方法通过双指针遍历字符串,从首尾同时向中间移动,比较对应字符是否相同。若存在不匹配,立即返回false;全部匹配则返回true。时间复杂度为O(n),空间复杂度为O(1),优于使用StringBuffer.reverse()等反转方法。注意忽略大小写和空格时需进一步优化。

题目2(C++面向对象):

设计一个圆形类`Circle`,包含半径属性、计算面积和周长的方法。要求使用构造函数初始化,并提供一个静态方法比较两个圆的大小。

答案2:

cpp

includeiostream

includecmath

classCircle{

private:

doubleradius;

public:

Circle(doubler):radius(r){}

doublearea()const{

returnM_PIradiusradius;

}

doublecircumference()const{

return2M_PIradius;

}

staticintcompare(Circlec1,Circlec2){

if(c1.radiusc2.radius)return1;

elseif(c1.radiusc2.radius)return-1;

elsereturn0;

}

};

intmain(){

Circlec1(5),c2(7);

std::coutCircle1area:c1.area()std::endl;

std::coutCircle2circumference:c2.circumference()std::endl;

intresult=Circle::compare(c1,c2);

if(result0)std::coutCircle1islargerstd::endl;

elseif(result0)std::coutCircle2islargerstd::endl;

elsestd::coutBothcirclesareequalstd::endl;

return0;

}

解析2:

通过构造函数初始化半径,使用`const`修饰符保证方法不修改对象状态。静态方法`compare`通过比较半径值实现功能,返回1/0/-1分别表示c1更大/相等/更小。注意C++中静态成员函数不能访问非静态成员变量。

题目3(Python算法):

给定一个包含重复数字的列表,实现一个函数返回所有不重复的全排列。例如,输入[1,1,2],返回[[1,1,2],[1,2,1],[2,1,1]]。

答案3:

python

defpermute_unique(nums):

defbacktrack(path,used,res):

iflen(path)==len(nums):

res.append(path.copy())

return

foriinrange(len(nums)):

ifused[i]:

continue

ifi0andnums[i]==nums[i-1]andnotused[i-1]:

continue

u

文档评论(0)

1亿VIP精品文档

相关文档