面试时我提的一些问题

技术方面:

1.堆和栈有何区别?

2.static变量放在内存哪个地方?

3.volatile的用法?为什么要用?

4.虚拟函数的作用?虚拟函数是如何起作用的?有什么优缺点?

5.结构和类的区别?

6.跟工作结合使用的数据结构和算法?为什么这么使用?

7.tasklet和wor queue什么时候会使用?有什么区别?

8.虚拟内存的优缺点?

9.软链接和硬链接是什么?有何区别?

10.socket编程方面的知识

11. tcp/ip方面的基本知识

12. STL方面的基本知识

13. 多媒体标准如MPEG2/4, H.264

 

 

其他方面:

1.为何离职?

2.职业规划

3.企业文化和工作氛围

4.有何问题需要问我们

5.介绍公司和我们的工作

<think>嗯,用户需要了解操作系统面试的常见问题。根据系统指令,我需要整理结构化内容并使用正确的中文和LaTeX格式。 用户供的引用材料很有价值,引用[1]列出了32个操作系统面试问题,引用[2]补充了进程状态转换和系统调用等细节。我需要整合这些内容,同补充典型考点。 考虑将问题分为六个核心模块:基础概念(中断、并发等)、进程线程管理(状态转换、通信等)、内存管理(分页、虚拟内存等)、文件系统、死锁、综合问题。每个模块需要包含基础知识和进阶考点,比如在进程调度部分要覆盖基本算法(FCFS、RR)和优化场景。 特别注意技术术语的准确性:比如"僵尸进程"需要明确定义为$终止但未回收资源的进程$,页面置换算法要区分$FIFO$和$LRU$的差异。对于复杂概念如虚拟内存,准备用独立公式说明地址转换过程:$$逻辑地址 \xrightarrow{页表} 物理地址$$ 在回答末尾考虑设计三个层次的问题:基础题验证概念理解(如进程线程区别),应用题考察知识运用(如银行家算法模拟),开放题评估系统思维(如何设计调度器)。这样能帮助用户逐步深入。 需要验证所有技术细节的可靠性:比如引用[2]到的"运行态→阻塞态"转换条件,确认与标准操作系统理论一致。对于易混淆点如"阻塞/挂起状态",考虑用表格对比说明。</think>以下是操作系统面试常见问题的系统整理,结合核心考点和面试高频题型分为六大模块: --- ### **一、基础概念** 1. **操作系统的核心功能** - 资源管理(CPU、内存、I/O设备)、进程调度、文件系统、用户接口等 2. **中断 vs 系统调用** - 中断:由硬件触发(如钟中断),强制暂停当前进程 - 系统调用:**用户态程序主动请求内核服务**(如文件读写),通过软中断实现[^2] 3. **并发 vs 并行** - 并发:$宏观上同运行$(单核CPU分执行) - 并行:$微观上同运行$(多核CPU真正同步执行) --- ### **二、进程与线程** 4. **进程与线程的区别** | **维度** | 进程 | 线程 | |----------------|--------------------------|--------------------------| | 资源分配 | 独立内存空间 | 共享进程内存 | | 切换开销 | 高(需切换页表) | 低(仅寄存器/栈) | | 通信方式 | 管道、消息队列、共享内存 | 直接读写进程内存 | 5. **进程状态转换** $$ \text{新建} \to \text{就绪} \xleftrightarrow{\text{调度}} \text{运行} \to \begin{cases} \text{阻塞} \to \text{就绪} \\ \text{终止} \end{cases} $$ - **运行→阻塞**:等待资源(如I/O操作)[^2] 6. **进程间通信(IPC)** - 管道、信号、消息队列、共享内存、Socket --- ### **三、内存管理** 7. **分页 vs 分段** | **机制** | 分页 | 分段 | |----------|---------------------------------------|---------------------------------------| | 单位 | 固定大小(页框) | 逻辑模块(代码段、数据段) | | 碎片 | 内部碎片 | 外部碎片 | 8. **虚拟内存** - 实现原理:$$ \text{逻辑地址} \xrightarrow{\text{页表}} \text{物理地址} $$ - 页面置换算法:FIFO、LRU(最近最少使用)、OPT(理想算法) 9. **缓冲区溢出危害** - 覆盖返回地址 → 执行恶意代码 → 系统崩溃 --- ### **四、死锁与调度** 10. **死锁的必要条件** - 互斥、持有等待、不可抢占、循环等待 11. **解决方案** - 预防:破坏任一条件(如资源一次性分配) - 避免:**银行家算法**(安全状态检测) - 恢复:终止进程或资源剥夺 12. **进程调度算法** - **实系统**:最短截止间优先(EDF) - **通用系统**: - 先来先服务(FCFS)、短作业优先(SJF) - 间片轮转(RR)、多级反馈队列 --- ### **五、文件与I/O** 13. **文件系统结构** - 目录项、inode(存储元数据)、数据块 14. **磁盘调度算法** - 寻道优化:SCAN(电梯算法)、C-SCAN(单向扫描) --- ### **六、综合问题** 15. **用户态与内核态切换** - 触发方式:系统调用、中断、异常 16. **程序启动完整流程** ```mermaid graph LR A[加载可执行文件] --> B[创建进程] --> C[分配内存] --> D[初始化堆栈] --> E[跳转到入口地址] ``` 17. **僵尸进程 vs 孤儿进程** - 僵尸:子进程终止但父进程未回收资源 - 孤儿:父进程终止,子进程由init接管 --- ### **高频进阶问题** 1. 为什么线程切换开销低于进程?(无需切换地址空间) 2. 哲学家就餐问题如何避免死锁?(限制同拿筷子人数) 3. 段页式管理如何结合分段和分页优势?(先分段再分页) 4. 共享内存如何同步?(需配合信号量) > 参考资料: > [^1]: 操作系统面试题总结(进程/线程/死锁等) > [^2]: 进程状态转换与系统调用机制详解 --- ### **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值