- 1
- 0
- 约6.86千字
- 约 22页
- 2026-01-05 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年程序员的求职攻略:经典面试题详解
一、编程语言基础(共5题,每题10分)
1.题目:
请解释Java中的`volatile`关键字的作用,并说明它与`synchronized`的区别。
答案:
`volatile`关键字用于确保变量的可见性和有序性,但不保证原子性。
-可见性:当一个线程修改了volatile变量的值,其他线程能够立即看到这个变化。
-有序性:禁止指令重排序,保证volatile变量在代码中的执行顺序与编写顺序一致。
`synchronized`关键字用于实现线程同步,具有以下特点:
-原子性:保证被synchronized修饰的代码块在同一时间只能被一个线程执行。
-可见性:与volatile类似,但范围更广,会同步线程的状态。
-有序性:也会禁止指令重排序。
区别:
-`volatile`适用于变量共享场景,轻量级;
-`synchronized`适用于复杂同步场景,开销较大。
解析:
Java内存模型(JMM)中,volatile通过内存屏障实现可见性和有序性,而synchronized通过锁机制实现。实际应用中,volatile更高效,但只能保证单个变量的同步。
2.题目:
在Python中,解释`global`和`nonlocal`的区别。
答案:
-`global`:用于在函数内部声明全局变量,修改会影响外部作用域。
-`nonlocal`:用于在嵌套函数中声明外部(非全局)变量,修改会影响外部作用域。
示例:
python
x=10
defouter():
x=20
definner():
nonlocalx
x=30
inner()
print(x)#输出30
print(x)#输出10
解析:
`global`影响全局变量,`nonlocal`影响外部函数的局部变量。未声明时,赋值会创建新的局部变量。
3.题目:
C++中,`const`关键字可以用于哪些地方?
答案:
-变量:`constintx=5;`
-函数参数:`voidfunc(constinta);`(禁止修改参数)
-成员函数:`classA{public:constvoidfunc();};`(函数内禁止修改成员变量)
-类:`classA:publicconstB{};`(派生类禁止修改基类成员)
解析:
`const`用于修饰不可变对象或操作,提高代码安全性。
4.题目:
Go语言中,`defer`语句的执行时机和作用是什么?
答案:
`defer`用于延迟执行函数,通常用于资源释放(如文件关闭、数据库连接)。执行时机:
-函数返回前,按`defer`声明的顺序从后往前执行。
-即使发生panic,`defer`也会执行。
示例:
go
funcmain(){
deferfmt.Println(defer1)
deferfmt.Println(defer2)
panic(error)
}//输出:defer2,defer1,panic
解析:
`defer`用于保证资源被正确释放,常见于数据库操作、文件处理等场景。
5.题目:
JavaScript中,`Promise`的`race`方法和`all`方法的区别是什么?
答案:
-`Promise.race`:第一个解决(fulfilled或rejected)的promise决定最终结果。
-`Promise.all`:所有promise都解决后返回数组,任一失败则立即拒绝。
示例:
javascript
letp1=Promise.resolve(1);
letp2=newPromise((resolve,reject)=setTimeout(()=reject(2),100));
Promise.race([p1,p2]).then(console.log);//输出1
Promise.all([p1,p2]).then(console.log).catch(console.error);//抛出2
解析:
`race`适合抢答场景,`all`适合并行任务依赖。
二、数据结构与算法(共7题,每题15分)
1.题目:
请实现快速排序算法,并说明其时间复杂度。
答案:
python
defquick_sort(arr):
iflen(arr)=1:
returnarr
pivot=arr[len(arr)//2]
left=[xforxinarrifxpivot]
middle=[xforxin
原创力文档

文档评论(0)