技术研发部面试题集.docxVIP

  • 0
  • 0
  • 约7.73千字
  • 约 23页
  • 2026-01-31 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年技术研发部面试题集

一、编程基础(共5题,每题10分,总分50分)

题目1(10分)

请用Python语言实现一个函数,该函数接收一个整数列表作为输入,返回一个新列表,其中包含原列表中所有奇数的平方。要求:1)不使用任何内置库;2)考虑输入可能包含负数;3)给出代码及简要测试用例。

答案:

python

defsquare_odds(nums):

result=[]

fornuminnums:

ifnum%2!=0:

result.append(num2)

returnresult

测试用例

print(square_odds([1,2,3,4,5]))#[1,9,25]

print(square_odds([-1,-2,3,0]))#[1,9]

print(square_odds([4,6,8]))#[]

print(square_odds([-3,-2,-1]))#[9,1]

解析:

1.函数通过遍历输入列表,判断每个元素是否为奇数(num%2!=0)

2.对于奇数,计算其平方并添加到结果列表

3.考虑了负数情况,如-1仍为奇数,其平方为1

4.测试用例覆盖了正数、负数、偶数和空列表情况

题目2(10分)

请解释什么是闭包(Closure),并给出一个JavaScript示例说明闭包如何记住并访问其词法作用域中的变量,即使在函数外部创建时已经不在作用域内。

答案:

javascript

functioncreateCounter(){

letcount=0;//词法作用域变量

returnfunction(){

count+=1;

returncount;

};

}

constcounter=createCounter();

console.log(counter());//1

console.log(counter());//2

console.log(counter());//3

解析:

1.闭包是指在一个函数内部创建的函数可以访问并记住其外部函数的作用域

2.示例中createCounter返回的函数可以访问并修改count变量

3.即使多次调用counter(),count值会被持续保留

4.这是因为内部函数记住了createCounter作用域中的count变量

题目3(10分)

请简述递归函数的概念,并实现一个用递归方式计算阶乘的函数(要求:输入必须为非负整数,若输入非法则抛出异常)。

答案:

python

deffactorial(n):

ifnotisinstance(n,int)orn0:

raiseValueError(Inputmustbeanon-negativeinteger)

ifn==0orn==1:

return1

returnnfactorial(n-1)

测试用例

print(factorial(5))#120

print(factorial(0))#1

print(factorial(-1))#抛出异常

解析:

1.递归函数是调用自身的函数

2.实现阶乘时,n!=n(n-1)!

3.设置基本情况:0!=1,1!=1

4.对于非法输入抛出异常,保证函数健壮性

题目4(10分)

请解释什么是事件循环(EventLoop),并用你熟悉的语言描述其工作原理。

答案:

javascript

//JavaScript事件循环示例

console.log(Start);

setTimeout(()={

console.log(Timeoutcallback);

},0);

Promise.resolve().then(()={

console.log(Promiseresolve);

});

console.log(End);

解析:

1.事件循环是JavaScript的执行模型,处理异步操作

2.核心组件包括调用栈、任务队列(宏任务和微任务)

3.示例中:

-Start最先输出

-End接着输出

-setTimeout(0)虽指定0毫秒,但放在宏任务队列末尾

-Promise.then放在微任务队列

-微任务先于宏任务执行

4.输出顺序:Start-End-Promiseresolve-Timeoutcallback

题目5(10分)

请解释什么是RESTfulAPI设计原则,并列举其中至少3个关键原则。

答案:

1.无状态

文档评论(0)

1亿VIP精品文档

相关文档