2026年研发部门面试题集.docxVIP

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

第PAGE页共NUMPAGES页

2026年研发部门面试题集

一、编程语言基础(3题,每题10分,共30分)

题目1(10分)

请用Python实现一个函数,输入一个整数列表,返回列表中所有奇数的平方和。要求:1)不能使用任何外部库;2)不能使用列表推导式;3)需要考虑大数据输入时的性能问题。

答案:

python

defsum_of_odd_squares(nums):

total=0

fornuminnums:

ifnum%2!=0:

total+=num2

returntotal

解析:

1.使用普通for循环遍历列表,避免列表推导式

2.每次计算奇数平方后累加到total变量

3.对于大数据输入,这种实现比列表推导式更节省内存

4.时间复杂度为O(n),空间复杂度为O(1)

5.可以进一步优化为:

python

defoptimized_sum_of_odd_squares(nums):

total=0

num=0

whilenumlen(nums):

ifnums[num]%2!=0:

total+=nums[num]2

num+=1

returntotal

题目2(10分)

请用Java实现一个方法,输入一个字符串,返回该字符串中所有唯一字符的集合。要求:1)字符集限制为ASCII字符;2)不能使用HashSet等集合类;3)需要考虑空字符串的情况。

答案:

java

publicclassUniqueCharacters{

publicstaticStringfindUniqueChars(Stringinput){

if(input==null||input.isEmpty()){

return;

}

boolean[]seen=newboolean[128];//ASCII字符集大小

StringBuilderresult=newStringBuilder();

for(inti=0;iinput.length();i++){

charc=input.charAt(i);

if(!seen[c]){

seen[c]=true;

result.append(c);

}

}

returnresult.toString();

}

}

解析:

1.使用布尔数组作为标记,ASCII字符集只需128个位置

2.遍历字符串,记录每个字符是否出现过

3.仅在字符第一次出现时添加到结果中

4.时间复杂度为O(n),空间复杂度为O(1)

5.处理了空字符串情况

6.可以扩展为Unicode支持:

java

publicstaticStringfindUniqueCharsUnicode(Stringinput){

if(input==null||input.isEmpty()){

return;

}

//使用位向量存储Unicode码点

int[]seen=newint[116];//覆盖基本多文种平面

StringBuilderresult=newStringBuilder();

for(inti=0;iinput.length();i++){

charc=input.charAt(i);

if((seen[c5](1(c0x1F)))==0){

seen[c5]|=(1(c0x1F));

result.append(c);

}

}

returnresult.toString();

}

题目3(10分)

请用C++实现一个函数,输入一个整数n,判断它是否为素数。要求:1)不能使用标准库中的数学函数;2)需要考虑n=1和n=0的情况;3)需要考虑大素数的判断效率。

答案:

cpp

boolisPrime(intn){

if(n=1)returnfalse;

if(n=3)returntrue;

if(n%2==0||n%3==0)returnfalse;

//只检查到sqrt(n)即可

for(inti=5;ii=n;i+=6){

if(n%i==0||n%(i+2)==0){

returnfalse;

}

}

returntrue;

}

解析:

1.首先处理小于等于1的特殊情况

2.对于2和3直接返回true

3.排除能被2和3整除的数

4.只需要检查到sqrt(n)即可,因为如果n有大于

文档评论(0)

1亿VIP精品文档

相关文档