- 1
- 0
- 约4.66千字
- 约 7页
- 2026-08-15 发布于河北
- 举报
程序员新视界面试题(含详细接地气答案)
一、计算机基础核心(必考基础)
1、进程和线程的区别?开发中怎么选择使用?
详细答案:
进程是操作系统资源分配的最小单位,线程是CPU调度的最小单位。一个进程可以包含多个线程,线程共享进程的内存、文件句柄等资源,线程之间切换开销极小,进程切换开销很大。
实际开发落地区别:
1)稳定性:进程相互独立,一个进程崩溃不影响其他进程;单进程内一个线程异常,大概率会挂掉整个进程。
2)开销:新建进程需要分配独立内存空间,耗时耗资源;新建线程几乎只需要创建栈空间,成本极低。
3)通信:进程间通信复杂(管道、socket、共享内存);线程直接共享全局变量、堆内存,通信简单但要处理线程安全问题。
使用场景:
多任务隔离、高稳定性场景用多进程,比如服务主从架构、独立任务分片;高频并发、轻量任务处理用多线程,比如接口请求处理、异步任务回调。
2、什么是死锁?开发中如何快速规避?
详细答案:
死锁就是多个线程互相持有对方需要的锁,又不释放自己的锁,导致所有线程永久阻塞,程序卡死。死锁必须同时满足四个条件:互斥、占有且等待、不可抢占、循环等待。
日常开发不用死磕理论,重点是规避手段:
1)统一加锁顺序:所有线程必须按固定顺序获取多把锁,从根源杜绝循环等待,这是最常用、最高效的方式。
2)设置锁超时:不用永久等待锁,使用tryLock设置超时时间,获取失败直接放弃或
原创力文档

文档评论(0)