2026年软件开发工程师招聘笔试预测题及答案.docxVIP

  • 0
  • 0
  • 约1.36万字
  • 约 32页
  • 2026-03-20 发布于未知
  • 举报

2026年软件开发工程师招聘笔试预测题及答案.docx

2026年软件开发工程师招聘笔试预测题及答案

一、基础理论题(每题10分,共50分)

1.编程语言与并发

Java中`ThreadLocal`的内存泄漏问题是如何产生的?实际开发中应如何避免?Go语言的`goroutine`调度与Java的线程调度有何本质区别?

答案:

Java的`ThreadLocal`内存泄漏源于其内部`Entry`的设计:`Entry`继承自`WeakReferenceThreadLocal?`,即`ThreadLocal`实例作为弱引用的key,而value是强引用。当外部对`ThreadLocal`的强引用被回收后,key会被GC回收,但value仍被`Entry`强引用,若当前线程未结束(如线程池中的线程),value无法被回收,导致内存泄漏。

避免方法:

-显式调用`ThreadLocal.remove()`释放value;

-尽量使用`static`修饰`ThreadLocal`,延长其生命周期与线程绑定;

-在线程池场景中,确保任务执行前后清理`ThreadLocal`。

Go的`goroutine`调度基于GMP模型(Goroutine-Machine-Processor),与Java线程调度的本质区别:

-调度层级:Java线程是内核级线程(KLT),由OS内核调度,上下文切换涉及用户态与内

文档评论(0)

1亿VIP精品文档

相关文档