操作系统常见面试题整理

(一)请分别简单说一说进程和线程以及它们的区别。

  • 进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度和分配的一个独立单位。
  • 线程是进程的实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
  • 一个进程可以有多个线程,多个线程也可以并发执行

如果你对进程或者线程不太熟悉,建议阅读:进程与线程的一个简单解释

(二)线程同步的方式有哪些?

 

  • 互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问。
  • 信号量:它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。
  • 事件(信号):通过通知操作的方式来保持多线程同步,还可以方便的实现多线程优先级的比较操作。

经两位大大的指正,现已删除临界区。感谢:@真姬酱@安阳

如果你对线程同步的方式不太熟悉,建议阅读:线程同步的几种方式

(三)进程的通信方式有哪些?

主要分为:管道、系统IPC(包括消息队列、信号量、共享存储)、SOCKET

管道主要分为:普通管道PIPE 、流管道(s_pipe)、命名管道(name_pipe

  • 管道是一种半双工的通信方式,数据只能单项流动,并且只能在具有亲缘关系的进程间流动,进程的亲缘关系通常是父子进程
  • 命名管道也是半双工的通信方式,它允许无亲缘关系的进程间进行通信
  • 信号量是一个计数器,用来控制多个进程对资源的访问,它通常作为一种锁机制。
  • 消息队列是消息的链表,存放在内核中并由消息队列标识符标识。
  • 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
  • 共享内存就是映射一段能被其它进程访问的内存,这段共享内存由一个进程创建,但是多个进程可以访问。

如果你对进程的通信方式不太熟悉,建议阅读: 进程间的几种通信方式

(四)什么是缓冲区溢出?有什么危害?其原因是什么?

缓冲区溢出是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。

危害有以下两点:

  • 程序崩溃,导致拒绝额服务
  • 跳转并且执行一段恶意代码

造成缓冲区溢出的主要原因是程序中没有仔细检查用户输入。 

如果你想深入了解缓冲区溢出,推荐阅读:缓冲区溢出攻击

(五)什么是死锁?死锁产生的条件?

在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗的讲就是两个或多个进程无限期的阻塞、相互等待的一种状态。

死锁产生的四个条件(有一个条件不成立,则不会产生死锁)

  • 互斥条件:一个资源一次只能被一个进程使用
  • 请求与保持条件:一个进程因请求资源而阻塞时,对已获得资源保持不放
  • 不剥夺条件:进程获得的资源,在未完全使用完之前,不能强行剥夺
  • 循环等待条件:若干进程之间形成一种头尾相接的环形等待资源关系 

如果对死锁还不是太熟悉,建议阅读:死锁产生的原因和解锁的方法

(六)进程有哪几种状态?

  • 就绪状态:进程已获得除处理机以外的所需资源,等待分配处理机资源
  • 运行状态:占用处理机资源运行,处于此状态的进程数小于等于CPU数
  • 阻塞状态: 进程等待某种条件,在条件满足之前无法执行 

如果你对进程的几种状态以及中间的装换不太了解,建议阅读:进程的三种状态及转换

(七)分页和分段有什么区别?

 

  • 段是信息的逻辑单位,它是根据用户的需要划分的,因此段对用户是可见的 ;页是信息的物理单位,是为了管理主存的方便而划分的,对用户是透明的。
  • 段的大小不固定,有它所完成的功能决定;页大大小固定,由系统决定
  • 段向用户提供二维地址空间;页向用户提供的是一维地址空间
  • 段是信息的逻辑单位,便于存储保护和信息的共享,页的保护和共享受到限制。

如果你对分页和分段还不太了解,建议阅读:分段和分页

(八) 操作系统中进程调度策略有哪几种?

FCFS(先来先服务),优先级,时间片轮转,多级反馈

如果你想深入的了解这几种调度策略,推荐阅读:几个常用的操作系统进程调度算法 

(九)说一说进程同步有哪几种机制。

原子操作、信号量机制、自旋锁管程、会合、分布式系统

如果你想深入的了解这几种机制,推荐阅读: 进程同步的几种机制

(十)说一说死锁的处理基本策略和常用方法。

解决死锁的基本方法如下: 

预防死锁、避免死锁、检测死锁、解除死锁 

解决四多的常用策略如下: 

鸵鸟策略、预防策略、避免策略、检测与解除死锁 

如果你对死锁的处理策略不是太熟悉,推荐阅读:产生死锁的原因和必要条件+解决死锁的基本方法 

本文参考文献和文章:

 

「1」操作系统常见面试题总结 - youngchang的开发博客

「2」 操作系统面试题 - iWan

「3」进程间的几种通信方式

「4」操作系统各大公司笔试题汇总

「5」解决死锁的基本方法

<think>嗯,用户想要了解Oracle常见面试题整理。我需要先回想一下Oracle面试通常涉及哪些方面。可能包括SQL基础、PL/SQL、数据库设计、性能优化、备份恢复、高可用性等。 首先,用户可能是在准备面试,所以需要全面覆盖各个知识点。要分门别类,结构清晰,方便他们系统复习。常见面试题通常分为基础、进阶和高级部分,这样逐步深入。 基础部分应该包括SQL语句编写,比如基本查询、连接查询、子查询。还有聚合函数、分组过滤,比如GROUP BY和HAVING的区别。数据类型和约束也是基础,比如VARCHAR2和CHAR的区别,主键、外键的作用。 PL/SQL部分可能会问到存储过程、函数、触发器的区别和应用场景。异常处理机制,比如预定义异常和自定义异常的使用。游标类型,显式游标和隐式游标的不同。 数据库设计方面,范式理论是必问的,比如第三范式的定义和应用。索引的类型和优化,B树索引和位图索引的区别,索引失效的情况。分区表的作用和类型,比如范围分区和列表分区。 性能优化方面,执行计划的查看和分析方法,比如使用EXPLAIN PLAN。SQL优化技巧,避免全表扫描的方法,绑定变量的优势。统计信息的作用和更新方式,DBMS_STATS包的使用。 备份恢复需要知道RMAN的基本用法,完全备份和增量备份的区别。归档模式和非归档模式的影响,比如恢复点不同。闪回技术的应用场景,如表误删恢复。 高可用性方面,Data Guard的架构和模式,物理备库和逻辑备库的区别。RAC集群的工作原理,缓存融合机制。故障转移和负载均衡的实现方式。 权限管理部分,角色和系统权限的区别,如何控制用户访问。审计功能的使用,比如启用审计跟踪登录失败。 新特性可能包括12c以后的多租户架构,PDB和CDB的概念。JSON支持,In-Memory列存储的优势。 另外,要提醒用户注意结合项目经验准备,比如优化案例、设计案例。概念题需要理解原理,而不仅仅是记忆。最好给出示例答案,但建议用户根据自己的理解总结。 需要检查是否有遗漏的重要知识点,比如锁机制、事务隔离级别,或者等待事件分析。确保每个部分都有典型问题,覆盖全面。语言要简洁明了,避免冗长,方便用户快速查阅和记忆。</think>以下整理了Oracle数据库常见面试题及核心知识点,分为基础、进阶、高级三部分,建议结合项目经验准备: --- ### **一、基础篇** 1. **SQL基础** - 编写查询:多表连接(JOIN)、子查询(Subquery)、集合操作(UNION/INTERSECT) - 聚合函数:`GROUP BY`与`HAVING`的区别?如何计算部门平均工资高于5000的部门? - 数据类型:`VARCHAR2`与`CHAR`的区别?`DATE`和`TIMESTAMP`的区别? 2. **约束与对象** - 主键(Primary Key)与唯一约束(Unique)的区别? - 外键(Foreign Key)的作用?删除父表记录时如何处理子表数据(ON DELETE CASCADE/SET NULL)? 3. **事务控制** - 解释ACID特性,Oracle默认的事务隔离级别是什么? - `COMMIT`和`ROLLBACK`的作用?`SAVEPOINT`如何使用? --- ### **二、进阶篇** 1. **PL/SQL编程** - 存储过程 vs 函数 vs 触发器:应用场景差异? - 如何处理异常?举例说明`NO_DATA_FOUND`和`TOO_MANY_ROWS`异常。 - 显式游标与隐式游标的区别?如何用`%ROWTYPE`声明记录类型? 2. **性能优化** - 如何查看SQL执行计划?`EXPLAIN PLAN`的使用步骤? - 索引失效的常见场景(如对列使用函数、隐式类型转换)?何时该建索引? - 统计信息的作用?如何用`DBMS_STATS`收集? 3. **分区与分片** - 分区表的作用?范围分区(Range)和列表分区(List)的区别? - 什么是分区剪裁(Partition Pruning)?如何提升查询性能? --- ### **三、高级篇** 1. **备份与恢复** - RMAN的作用?完全备份与增量备份的区别? - 归档模式(ARCHIVELOG)与非归档模式(NOARCHIVELOG)对恢复的影响? - 如何用闪回技术恢复误删除的表?`FLASHBACK TABLE`的语法? 2. **高可用架构** - Data Guard的工作原理?物理备库与逻辑备库的区别? - RAC集群如何实现负载均衡?什么是"Cache Fusion"? - 解释GoldenGate的实时数据复制机制。 3. **安全与监控** - 如何通过角色(Role)管理权限?`GRANT`和`REVOKE`的使用? - 如何监控锁冲突?`V$LOCK`视图包含哪些关键信息? - 使用AWR报告分析性能瓶颈的步骤? --- ### **高频考点扩展** - **索引类型**:B树索引 vs 位图索引 vs 函数索引 - **等待事件**:如何分析`enq: TX - row lock contention`? - **新特性**:12c多租户架构(CDB/PDB)、19c自动索引(Auto Indexing) - **设计题**:如何设计一个支持高并发的订单系统表结构? --- **建议准备方向**: 1. 结合项目经验:准备1-2个SQL优化案例或数据库设计案例 2. 概念题:重点理解原理(如索引工作原理、事务隔离实现机制) 3. 实操题:练习编写复杂SQL、PL/SQL块(如分页查询、数据清洗) > 示例答案片段: > **Q: 如何优化全表扫描的SQL?** > A: ① 检查WHERE条件是否可利用索引 ② 避免在索引列使用函数或运算 ③ 考虑分区表 ④ 评估统计信息准确性 ⑤ 使用绑定变量减少硬解析 建议根据自身经验调整答案侧重点,避免死记硬背。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值