- 0
- 0
- 约7.19千字
- 约 21页
- 2026-03-16 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年软件工程师面试宝典:常见问题及答案指南
一、编程语言基础(5题,每题6分,共30分)
考察方向:Java/Python/Go语言核心特性,适合国内互联网及国企场景
1.题目:请解释Java中的`volatile`关键字的作用及其与`synchronized`的区别。
答案:
-`volatile`关键字确保变量的可见性和有序性,但不保证原子性。
-具体作用:
1.可见性:线程A修改`volatile`变量后,其他线程B立即可见最新值。
2.有序性:禁止指令重排,保证`volatile`变量前后的操作顺序执行。
-与`synchronized`区别:
-`volatile`仅作用于变量,开销小;`synchronized`作用于方法或代码块,可控制锁状态。
-`volatile`不保证原子性(如`volatileinta=1;a++;`仍需加锁),`synchronized`保证原子性。
2.题目:Python中装饰器的使用场景及实现原理是什么?
答案:
-使用场景:日志记录、权限校验、缓存结果、函数监控等。
-实现原理:装饰器本质是高阶函数,接受函数作为参数并返回新函数(如:
python
defdecorator(func):
defwrapper(args,kwargs):
print(Beforecall)
result=func(args,kwargs)
print(Aftercall)
returnresult
returnwrapper
调用时:`@decorator`相当于`my_func=decorator(my_func)`)。
3.题目:Go语言中的`defer`语句的执行时机及典型应用场景。
答案:
-执行时机:函数返回前,按`defer`声明的逆序执行(如`deferf1();deferf2()`先执行`f2`)。
-典型场景:资源释放(文件关闭、数据库连接关闭)。
-示例:
go
funcopenFile():os.File{
file,_:=os.Open(example.txt)
deferfile.Close()
returnfile
}
4.题目:Java中`HashMap`与`ConcurrentHashMap`的核心区别及适用场景。
答案:
-`HashMap`:非线程安全,效率高但需手动加锁。
-`ConcurrentHashMap`:线程安全(分段锁),支持高并发读写。
-适用场景:
-`HashMap`:单线程或同步块包裹。
-`ConcurrentHashMap`:多线程场景(如缓存、分布式锁)。
5.题目:Python中`__slots__`的作用及与普通类的性能对比。
答案:
-`__slots__`:限制实例属性,减少内存开销。
-作用:
1.避免动态创建`__dict__`,节省内存。
2.提高属性访问速度。
-性能对比:
-`__slots__`类比普通类更轻量,但无法动态添加属性。
-示例:
python
classStudent:
__slots__=[name,age]
def__init__(self,name,age):
=name
self.age=age
二、数据结构与算法(6题,每题5分,共30分)
考察方向:链表、树、动态规划,适合国内大型企业及算法岗
1.题目:实现单链表反转,并说明时间与空间复杂度。
答案:
-代码:
python
classListNode:
def__init__(self,val=0,next=None):
self.val=val
self.next=next
defreverseList(head:ListNode)-ListNode:
prev,curr=None,head
whilecurr:
next_node=curr.next
curr.next=prev
prev=curr
curr=next_node
returnprev
-复杂度:时间O(n),空间O(1)。
2.题目:二叉搜索树(BST)的中序遍历非递归实现。
答案:
-栈实现:
python
definorderTraversal(root:TreeNode):
stack,result=[],[]
node=root
whilestackornode:
whilenode:
stack.append(node)
node=node.left
node=stack.pop
原创力文档

文档评论(0)