选择部分

数据结构、计网、数据库事务、

1、若系统中有五个并发进程涉及某个相同的变量A,则变量A的相关临界区是由( )临界区构成。
5个(每个进程都需要有相关的临界区)

2、关于TCP状态
LISTEN:侦听来自远方的TCPport的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有不论什么连接状态

3、求一个简单算法的时间复杂度
4、求一个2进制数转换为16进制数,包括小数部分的转换
5、先序、中序给出一个树,求树的深度
先序遍历:根左右
中序遍历:左根右
后序遍历:左右根

6、概率题
有2个五分硬币 3个二分硬币 5个一分硬币 从中任取五个使得面值大于一角的概率是多少?
考虑三种情况:
A:取1个5分,2个2分,2个1分
B:取2个5分,其他随意
C:取1个5分,3个2分,1个1分
P=(C(1,2)*C(2,3)C(2,5)+(C2,2C(3,8)+C(1,2)*C(3,3)*C(1,5))/C(5,10)=0.5

7、如果5台机器用了5分钟来生产5个零件,那么99台机器生产99个零件要多少分钟?
5分钟
以5分钟为一个单位考虑,每台机器5分钟生产5个零件

8、120g盐,一个天平两个砝码,2g和7ge,求称出50g和70g的盐,最少需要多少次
3次
首先120g不用砝码直接对半称,称出两份60g
再从60g里面称出5g与2g砝码,与7g砝码,得出5g的盐
之后再称出5g的盐,然后混合两份5g的盐到60g的盐里面即可

9、DBMS的并发控制子系统,保证了事务()的实现
隔离性
数据库事务ACID四大特性:原子性、一致性, 隔离性, 持久性
原子性:事务中的多个数据库操作是一个不可分割的原子单元整体,只有所有的操作执行成功,整个事务才提交。
一致性:事务操作成功后,保证数据不会被破坏。
隔离性:并发控制
持久性:一旦事务提交成功后,事务中所有的数据操作都必须被持久化到数据库中。可恢复

10、数据库的聚合函数不能用在where语句中
聚合函数如果出现在where子句中,它就要受到整个语句的限制,因为这条语句最终是需要对数据进行筛选的,也就是说整条sql语句产生的结果将会是所有数据中的部分数据,而不是全部的完整数据。这与聚合函数实现的前提——完整的所有数据是相悖的,因此,聚合函数不能出现在where子句中。彼此相悖了!

11、关于运行态、就绪态和阻塞态的状态的转换
不能直接由阻塞态变为运行态,运行态的前一个状态一定是就绪态,下面是三态转换图

12、还有一道是啥记不清楚了。

编程部分

1.1、判断一个数是否为丑数,丑数即为只有质因数2、3、5的正整数
示例:
25
true

def ungly(a):
    while a%2==0:
        a=a/2
    while a%3==0:
        a=a/3
    while a%5==0:
        a=a/5
    if a==1:
        print('true')
    else:print('flase')

 

1.2、求一个整数数组的中位数

 

 

1.3、10进制数转换为16进制数

 

2.1、注意数是long long int类型,输入格式  1,2,3,4;输入有逗号,我就是没看到这点,牛客网编译器一直说我段错误,我真的奇怪了,浪费我好长时间。除此之外,我想不通为啥没有100%通过,可能很多细节。

2.2:相当于读入文件的内容,并进行整理,用Python一些函数可以写好,我直接看了第三题,这个题就没来得及做。

2.3:按照“位数多的放在前面,位数少的放在后面,相同位数,则小的排在前面,大的排在后面”。这个100%ac,我没用结构体(用结构体也可以的),我用两个数组,一个存放输入数,一个存放数的位数,然后使用冒泡排序思路去排序(其他排序方法也可以,我选择最熟悉的排序了)。除此之外,还要注意输入数据格式是[1,2,3]  python的列表形式,我用c++处理很久,python会简单一些。还要注意空列表[]以及输出的格式要求(1位数、空的)。

 

3.1、比较版本号。给两个版本号 a 和 b ,用逗号和一个空格分隔开,判断大小。假设两个版本的版本段是一致的.

  • a<b 输出 -1
  • a=b 输出 0
  • a>b 输出 1

样例输入
1.10.2, 1.2.10
样例输出
1

3.2、输入一个有序 int 数组,去重规则:数字 x 的出现次数不超过 x,问去重后数组的最大长度

样例输入
1 1 1 2 2 2 3 3 3
样例输出
6

3.3、经典动态规划题,给定 m 和 n 表示矩阵的长宽,小明从左上角走到右下角一共有多少条路,只等向右走或者向下走。注意数字溢出问题。 m n 的值都不超过 50.

样例输入
3 2
样例输出
3

 

4.1   场景描述:

对于一个程序的登陆测试案例,有三位测试工程师根据程序所处的不同阶段,写出的测试案例如下:
主要问题:
1、这三类案例的不同特色是什么?
2、这三类案例大概率分别属于哪个阶段的测试? 为什么?
3、对于A工程师的案例,第四步之后的大概描述推测应该描述什么逻辑?

4、对于C工程师的第7步操作,你认为测试会有哪几种结果输出?

A工程师的测试案例:

1、创建一个新用户user1.
2、用user1用户登陆
3、user1登陆成功
4、。。。。。


B工程师的测试案例:

1、创建一个新用户user1,密码为:<密码变量>。
2、用user1用户用第一类密码组合登陆
3、user1登陆成功
4、user修改密码为第二类密码组合,
5、user1退出,重新登陆
6、重复2-5部,验证所有密码组合。


密码变量表:

纯数字、纯字母、字母加数字、特殊字符加数字、
特殊字符加字母、各类自由组合


C工程师的测试案例:

1、创建一个新用户user1.
2、用user1用户登陆
3、user1登陆成功
4、注销用户user1
5、退出系统
6、重新用user1登陆系统
7、重新注册user1。。。

5.1、求一个区间素数的个数

5.2、最少可以带多少张零钱可以凑够一个区间所有的数值。

 

第一个是数手指游戏ABCDEDCBA,输入数字输出字母
第二个好像是判断一年中的哪一天,反正就是闭眼写的
第三题忘了,不难,可能要处理一下输入输出