56.假设事务程序 A 中的表达式 x/y,若 y 取值为 0,则计算该表达式时,会产生故障。该故障属于()。
A. 系统故障
B. 事务故障
C. 介质故障
D. 死机
1、并非系统层面问题,如整个系统硬件故障,操作系统错误导致整个系统崩溃,需要重启,突然整体停电,排除A
2、并非存储介质问题,如存储数据的介质(如硬盘)出现故障,如磁盘损坏、磁头碰撞和瞬时强磁干扰,几率最小,破坏性最大,导致数据丢失,或者无法访问,排除C
3、并非系统停止响应,操作页面冻结的问题,通常指计算机病毒导致的,/0不会导致这种现象,排除D
其他类似的还有运算溢出,并发 事务死锁
除数为零是否属于事务故障?
属于事务故障中的“事务内部错误”类型,原因如下:
- 逻辑错误:除数为零是事务代码中的编程错误,属于事务自身的逻辑问题。
- 导致事务失败:此类错误会直接中断事务的执行,破坏事务的原子性(无法完成所有操作)和一致性(产生无效数据)。
- 需主动回滚:数据库检测到此类错误后,会终止事务并回滚已执行的操作,确保数据恢复到事务开始前的状态。
49.在 Python3 中,表达式 list(range(11) [10:0:-2]的值为()。
A. [10,8, 6, 4, 2, 0]
B. [10, 8, 6, 4,2]
C. [0,2,4,6,8,10]
D. [0, 2, 4,6,8)
1、range()是生成一个序列,
range(11),起始值默认为0,11是结束值,不包括结束值本身,步长默认为1
但是它只会按需生成,不会一次性在内存中创建所有数字
通常会用list()转换为列表,所以其实可以忽略list()
总之集合就是[0,1,2,3,4,5,6,7,8,9,10]
2、 [10:0:-2],表示对列表进行截取,-2就是截取后列表倒序排列,步长为2,也就是从大到小,排除C,D
(其实从10,到0,这个顺序就已经表明了是倒序)
0表示结束值,同样不包括结束值本身,排除A
选B
20.当函数调用执行时,在栈顶创建项目用来支持被调用函数执行的一段存储空间称为活动记录或栈帧,栈帧中不包括()。
A. 形参变量
B. 全局变量
C. 返回地址
D. 局部变量
是不包括
1、形参变量会在栈帧中被创建和存储,用于函数内部对传入值的使用。所以形参变量是栈帧的一部分,排除A
2、当函数执行结束时,程序可以根据这个返回地址回到调用函数的正确位置继续执行。所以返回地址是栈帧的一部分,排除C
3、当函数被调用时,为了存储这些仅在函数内部使用的变量,会在栈帧中为它们分配空间。排除D
选B
全局变量的作用域是整个程序,它不依赖于某个具体函数的调用与否,在内存中有专门的存储区域(通常不在栈上),无论哪个函数调用,全局变量都在这个固定的存储区域中,并不在为支持特定函数执行而在栈顶创建的栈帧中。
栈帧(Stack Frame) 是程序在调用函数时,在栈内存中分配的一块连续区域,用于存储该函数执行所需的上下文信息。每个函数调用都会创建一个独立的栈帧,函数结束时自动释放
栈帧的核心组成
栈帧通常包含以下内容(以典型的C语言函数调用为例):
- 返回地址:函数执行完毕后需要返回的指令地址。
- 存储方式:函数调用指令(如
call
)自动将返回地址压入栈顶。- 形参变量:调用函数时传入的参数。
- 存储位置:由调用者压入栈中,位于被调用函数栈帧的顶部。
- 传递方式:
- 值传递(如C语言):形参是实参的副本,修改形参不影响实参。
- 引用传递(如C++的引用):形参是实参的地址,修改形参会影响实参。
- 局部变量:函数内部定义的变量。
- 存储位置:在栈帧中紧邻形参的下方分配内存。
- 生命周期:随函数调用开始而创建,函数返回时自动释放。
- 调用者的栈帧指针:保存调用函数的栈帧基址,便于恢复调用者环境。
- 临时数据:运算过程中的中间结果或寄存器备份。
全局变量:
- 存储位置:全局变量存储在静态数据区(或全局数据区),与栈帧无关。
- 生命周期:整个程序运行期间存在,与函数调用无关。
- 访问方式:直接通过固定地址访问,无需依赖栈帧。
- 栈帧是函数调用的基石:管理参数、返回地址和局部变量,支持嵌套和递归调用。
- 与全局变量的本质区别:栈帧数据随函数调用动态创建和销毁,全局变量静态存在。
● 59.若无向图 G 有 n 个顶点 e 条边,则 G 采用邻接矩阵存储时,矩阵的大小为()。
A. n*e
B. n^2
C. n2+e2
D. (n+e)^2
1、邻接矩阵,有n个顶点,那么邻接矩阵就是一个n * n的矩阵
那么邻接矩阵的大小就是
n 2 n^2 n2
这里矩阵的大小其实指的是矩阵元素的个数
2、
无向图的概念: - 无向图是一种图结构,由顶点集合和边集合组成。
其中边没有方向,比如顶点(A)和顶点(B)之间有一条边,那么从(A)到(B)和从(B)到(A)是同一条边。
例如生活中的社交网络,如果只考虑人与人之间的关系连接,不区分谁主动联系谁,就可以用无向图表示,两个人有联系就相当于两个顶点之间有一条无向边。
- 仅说邻接矩阵,它自身不一定有对称性。这取决于它所表示的图的类型。
- 正如前面所讲,无向图边无方向,导致无向图的邻接矩阵有对称性。
3个顶点无向图边数变化情况:
最少边数情况:3个顶点的无向图最少可以有0条边,此时3个顶点相互孤立,没有任何连接。
最多边数情况:对于(n)个顶点的无向图,边数最多为
KaTeX parse error: Can't use function '\(' in math mode at position 2: \̲(̲\frac{n(n - 1)}…对于(n = 3),最多边数为3\条边。
比如3个顶点分别为(a)、(b)、(c),边可以是((a,b))、((a,c))、((b,c)) 。
随着边数在(0)到(3)之间变化,图的结构会不断改变。比如有1条边时,只有两个顶点相连,另一个顶点孤立;
有2条边时,可能有一个顶点与另外两个顶点相连,这两个顶点之间不相连等多种情况。
邻接矩阵大小与顶点数关系: - 邻接矩阵是用来表示图的一种方式。
对于有(n)个顶点的无向图,其邻接矩阵是 n * n的矩阵。
以刚才3个顶点的无向图为例,不管它有(0)条边、(1)条边、(2)条边还是(3)条边,它的邻接矩阵始终是 n * n的矩阵。
因为邻接矩阵是根据顶点的数量来确定行数和列数的,每一行和每一列都对应一个顶点。
如果顶点(i)和顶点(j)之间有边,矩阵中(A[i][j])和(A[j][i])位置元素为(1)(无向图的对称性),
没有边则为(0) 。
边数的变化只是改变矩阵中(0)和(1)的分布情况,而不会改变矩阵的大小,矩阵大小只取决于顶点的数量。
邻接矩阵主要用于表示图的结构,专注于描述顶点之间的连接关系。比如在分析社交网络中人与人的直接联系、电路中节点的连接等场景使用。
在一个城市交通连接图中,城市是顶点,道路是边,邻接矩阵能清晰展示哪些城市(顶点)是直接通过道路(边)邻接的。
单位矩阵,它主要用于线性变换中的恒等变换,在解线性方程组时,单位矩阵可作为一种基础的参考矩阵。单位矩阵主对角线元素全为1,其余元素全为0,结构非常规则。
对角矩阵在很多数学计算和物理问题中有特殊用途,比如在相似对角化中,可将一些矩阵转化为对角矩阵形式来简化计算,
对角矩阵主对角线以外元素为0,
57.设栈初始时为空,对于入栈序列 1,2,3…n 这些元素经过栈之后得到出栈序列P1,P2,P3,.…Pn,若 P3=4,则 P1,P2 不可能的值为()。
A. 6,5
B.2,3
C.3,1
D. 3,5
是不可能为
1、先判断4出栈之前,哪些元素已经入栈
栈是后进先出的数据结构。
任何一个元素出栈前,必然要先入栈,不然怎么出呢
所以元素4,作为第三个出栈的之前,必然元素4已经入栈了
而入栈顺序是1,2,3,…n,没看到4
也就是说,元素4出栈前,必然,1,2,3已经入栈了
所以第三个出栈的4出栈之前,1,2,3,4肯定都已经入栈了
这个输入,得到的输出其实是,1,2,3,4都在栈中时,第一个P1的值从哪一层截断的问题
1、入栈序列 1,2,3…n
2、最先出来的,肯定是n,n-1,n-2,…,3,2,1
P3就是n-2,n-2=4
n=6
3、入栈序列1,2,3(4,5)6
最先出来6,第二个,第三个(4),3,2,1
2、有可能的操作太多,不要一一去试,直接找逻辑悖论
看选项C,P1是3,P2是1
第一个出栈的是3,3要第一个出,必然要在3一入,就出掉
那么操作就是,1入,2入,3入,3出
接着第二个出的是1,必然要在1一入,就出掉
此时,2挡在1的前面,必然不能第二个出1
所以关键就是看P1,第一个出的是从哪里截断的,截断后,前面的只有一个相邻的,比如2能出
后面的无所谓,都能出
3、A,从6截断,5是6出去后的第一个,完全可以第二个出,排除
4、B,从2截断,3是后面的了,完全能出,排除
5、D,从3截断,5是后面的了,完全能出,排除
2022年下半年综合知识真题
章节已分类