南光集团工程师面试问题集.docxVIP

  • 0
  • 0
  • 约5.96千字
  • 约 17页
  • 2026-02-03 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年南光集团工程师面试问题集

一、编程语言与基础算法(共5题,每题6分,总分30分)

1.题目:

请用Python编写一个函数,实现快速排序算法,并对列表`[34,7,23,32,5,62]`进行排序,输出排序后的结果。

答案与解析:

python

defquick_sort(arr):

iflen(arr)=1:

returnarr

pivot=arr[len(arr)//2]

left=[xforxinarrifxpivot]

middle=[xforxinarrifx==pivot]

right=[xforxinarrifxpivot]

returnquick_sort(left)+middle+quick_sort(right)

result=quick_sort([34,7,23,32,5,62])

print(result)#输出:[5,7,23,32,34,62]

解析:快速排序通过分治思想实现,选择基准值(pivot)将数组分为小于、等于、大于三部分,递归排序左右子数组。时间复杂度平均为O(nlogn),最坏情况O(n2)。

2.题目:

给定一个字符串`s=南光集团2026`,请编写Java代码,统计其中数字字符的数量,并输出结果。

答案与解析:

java

publicclassMain{

publicstaticvoidmain(String[]args){

Strings=南光集团2026;

intcount=0;

for(charc:s.toCharArray()){

if(Character.isDigit(c)){

count++;

}

}

System.out.println(count);//输出:4

}

}

解析:通过遍历字符串的每个字符,使用`Character.isDigit()`判断是否为数字,统计数量。

3.题目:

请解释什么是“递归”,并给出一个使用递归计算阶乘的C++实现。

答案与解析:

递归是函数调用自身的编程技巧,适用于有明确终止条件和子问题规模缩小的场景。

cpp

includeiostream

usingnamespacestd;

intfactorial(intn){

if(n==0||n==1)return1;

returnnfactorial(n-1);

}

intmain(){

coutfactorial(5)endl;//输出:120

return0;

}

解析:阶乘`n!=n(n-1)!`,递归终止条件为`n=0`或`n=1`。

4.题目:

用JavaScript实现一个函数,检查一个正整数是否为素数,如果是返回`true`,否则返回`false`。

答案与解析:

javascript

functionisPrime(num){

if(num=1)returnfalse;

if(num=3)returntrue;

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

for(leti=5;ii=num;i+=6){

if(num%i===0||num%(i+2)===0)returnfalse;

}

returntrue;

}

console.log(isPrime(29));//输出:true

解析:素数定义大于1且仅能被1和自身整除。优化方法:跳过偶数和3的倍数,检查到√n即可。

5.题目:

请用C#编写代码,实现一个自定义异常类`InsufficientBalanceException`,并在余额不足时抛出该异常。

答案与解析:

csharp

usingSystem;

publicclassInsufficientBalanceException:Exception{

publicInsufficientBalanceException(stringmessage):base(message){}

}

publicclassBankAccount{

publicdecimalBalance{get;privateset;}

publicBankAccount(decimalinitialBalance){

Balance=initi

文档评论(0)

1亿VIP精品文档

相关文档