运维错题总结(二)

1、数据库磁盘存储关于RAID推荐的选择是(RAID10

2、如果C类子网的掩码为255.255.255.240,则包含的子网位数、子网数目、每个子网中的主机数目正确的是(4 14 14

解释:

首先C类地址掩码为255.255.255.000 。可知子网号为240(1111 0000) 。所以子网位数为4,对于分类的IPv4地址进行子网划分时,子网号不能使用全1和全0(CIDR却可以),所以子网数为16-2=14。又因为主机号全0表该网络地址,全1表广播地址,所以去掉这两种,子网中的主机数为16-2=14 。

3、下面程序的功能是输出数组的全排列,选择正确的选项,完成其功能。(k==m 和 perm(list,k+1,m)

void perm(int list[], int k, int m)
{
if ( )
{
copy(list,list+m,ostream_iterator(cout," "));
cout< return;
}
for (int i=k; i<=m; i++)
{
swap(&list[k],&list[i]);
( );
swap(&list[k],&list[i]);
}
}
4、对一个含有20个元素的有序数组A做二分查找,数组起始下标为1,则查找A[2]的比较序列的下标为(10 5 2

解释:
折半查找的基本思想是:首先以整个查找表作为查找范围,用查找条件中给定值k与中间位置结点的关键字比较,若相等,则查找成功;否则,根据比较结果缩小查找范围,如果k的值小于关键字的值,根据查找表的有序性可知查找的数据元素只有可能在表的前半部分,即在左半部分子表中,所以继续对左子表进行折半查找;若k的值大于中间结点的关键字值,则可以判定查找的数据元素只有可能在表的后半部分,即在右半部分子表中,所以应该继续对右子表进行折半查找。每进行一次折半查找,要么查找成功,结束查找,要么将查找范围缩小一半,如此重复,直到查找成功或查找范围缩小为空即查找失败为止。

5、将当前命令sh test.sh 任务在后台执行,下列最优雅的做法是(nohup sh test.sh &
解释:
使用&后台运行程序:
结果会输出到终端
使用Ctrl + C发送SIGINT信号,程序免疫
关闭session发送SIGHUP信号,程序关闭
使用nohup运行程序:
结果默认会输出到nohup.out
使用Ctrl + C发送SIGINT信号,程序关闭
关闭session发送SIGHUP信号,程序免疫
平日线上经常使用nohup和&配合来启动程序:
同时免疫SIGINT和SIGHUP信号

6、MySQL和其他关系型数据库最显著的不同点是(插件式存储引擎

7、如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。
小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列

输入描述:
输入包括两行,第一行包含整数n(2 ≤ n ≤ 50),即数列的长度。
第二行n个元素x[i](0 ≤ x[i] ≤ 1000),即数列中的每个整数。
输出描述:
如果可以变成等差数列输出"Possible",否则输出"Impossible"。
输入例子1:
3
3 1 2
输出例子1:
Possible
思路
有两种方法,

方法1:利用等差数列的求和公式的变形,找出数列的和sum (Sn)和首项min (a1) ,判断计算的差值d是否能够是整数,也就是整除。

方法2: 先对数组排序,再遍历数组判断相邻两项的差值是否都为d。
package wangyiSpring_2017;

import java.util.Arrays;
import java.util.Scanner;

/**

  • @author xiaohao

  • @date 创建时间:Aug 13, 2017 3:31:26 PM

  • @version 1.0
    */
    public class moveToArithmeticSequence {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(System.in);
    int n=sc.nextInt();
    int seq[]= new int[n];
    for(int i=0;i {
    seq[i]=sc.nextInt();
    }

      if(isArithmeticSequence(seq,n))
      	System.out.println("Possible");
      else
      	System.out.println("Impossible");
    

    }

    //方法1 利用等差数列求和公式计算
    public static boolean isArithmeticSequence(int[] seq, int n) {
    // TODO Auto-generated method stub
    int sum=0;
    int min=Integer.MAX_VALUE;
    for(int i=0;i {
    sum+=seq[i];
    min=Math.min(min, seq[i]);
    }
    if( (2*(sum-nmin)) % (n(n-1))==0)
    return true;
    else
    return false;
    }
    //方法2 先排序,在遍历数组,看是否等差
    public static boolean isArithmeticSequence2(int[] seq, int n) {
    Arrays.sort(seq);
    int d=seq[1]-seq[0];
    for(int i=2;i {
    if(d!=seq[i]-seq[i-1])
    return false;
    }
    return true;
    }

}
8、易将n个棋子摆放在一张无限大的棋盘上。第i个棋子放在第x[i]行y[i]列。同一个格子允许放置多个棋子。每一次操作小易可以把一个棋子拿起并将其移动到原格子的上、下、左、右的任意一个格子中。小易想知道要让棋盘上出现有一个格子中至少有i(1 ≤ i ≤ n)个棋子所需要的最少操作次数.

输入描述:
输入包括三行,第一行一个整数n(1 ≤ n ≤ 50),表示棋子的个数
第二行为n个棋子的横坐标x[i](1 ≤ x[i] ≤ 10^9)
第三行为n个棋子的纵坐标y[i](1 ≤ y[i] ≤ 10^9)

输出描述:
输出n个整数,第i个表示棋盘上有一个格子至少有i个棋子所需要的操作数,以空格分割。行末无空格

如样例所示:
对于1个棋子: 不需要操作
对于2个棋子: 将前两个棋子放在(1, 1)中
对于3个棋子: 将前三个棋子放在(2, 1)中
对于4个棋子: 将所有棋子都放在(3, 1)中

输入例子1:
4
1 2 4 9
1 1 1 1

输出例子1:
0 1 3 10

采用暴力的方法,首先计算出集合到每一个格子的各个代价,然后和当前结果作比较,更新结果数组,最后遍历输出数组即可。
空格的地方是个坑,注意一下就可以。
#include
#include

using namespace std;

int n , x[55] , y[55] , ans[55];
void helper();

int main(){
cin>>n;

for(int i=0;i>x[i];
for(int i=0;i>y[i];
for(int i=0;i helper();
for(int i=0;i cout< if(i cout<<" ";
}
}
return 0;

}

void helper(){
for(int i=0;i for(int j=0;j int dis[n],tmp=0;
for(int k=0;k sort(dis,dis+n);
for(int k=0;k tmp+=dis[k];
ans[k] = ans[k]>tmp ? tmp : ans[k];
}
}
}
}
9、关于端口的描述正确的是(ftp使用tcp 20 端口,ftp使用tcp 21端口,dns使用tcp 53端口,dns使用udp 53端口

解释:
DNS udp/53 :DNS服务监听的端口,用来给用户提供DNS解析服务的,tcp 53主从服务间同步DNS记录的

10、关于python类的继承说法正确的是(可以有多个父类

解释:
类可以继承一个或多个父类

11、下列哪些算法在排序过程中需要一个记录的辅助空间(直接插入排序,直接选择排序,冒泡排序

12、属于数据库优化技巧的是(分离数据、日志、索引到不同的高性能I/O设备;用or的字句可以分解成多个查询,并且通过union链接多个查询;将数据的处理工作放在服务器,例如多使用存储过程)

13、

vim的退出编辑命令:
:q     不保存退出
:q!     不保存强制退出
:wq     写入文件并退出
:wq!     强制写入并退出(只有当操作者是文件所有者才可行)
:x     文件有变动时等同于 :wq,文件无变动时等同与 :q
ZZ    等同于:x

14、进程A,C处于目态,进程B,D处于管态,描述正确的是(进程A可以通过trap指令对进程D进行调用。进程B可以通过mov指令对进程D进行调用;进程C调用进程D执行后,不一定返回中断断点。进程B调用进程D径直返回中断断点。

15、分析以下消费者进程,并将临界区②补充完整,合理的是: ( )
process producer i(i=1,2,…n)
p(a) ;
p(b) ;
② ;
v(b) ;
v© ;

take a product from [y] ;
y=(y+1)mod12;
take a product from [y] ;
y=(y+1)mod10;

16、使用堆排序方法排序(45,78,57,25,41,89),初始堆为( 89,78,57,25,41,45

17、6个圆盘的汉塔诺,总的移动次数是(63) 【2^n -1】

18、有关希尔排序算法叙述正确的是( 最后一次的步长增量一定为1; 分割后子序列内部的排序算法是直接插入排序

19、在一个空的5阶B-树中依次插入关键字序列{6,8,15,16,22,10,18,32,20},插入完成后,关键字6所在结点包含的关键字个数为( 3


n阶B-树,除根节点/叶子节点外的节点,最多有n个子树,最少ceil(n/2)(n/2的上界)个子树。
所以,最少3个关键字,根节点至少两个子树,还剩下5个

20、在求两个集合并集的过程中,可能需用到的操作是( 取元素; 插入元素;比较操作;求表长

需求:求两个集合的并集
1. 取元素,至少得知道集合存的是啥元素
2. 插入元素,并集可能存在集合 A 中有而集合 B 中无的元素,需要插入到新的集合中
3. 比较操作,判断是否相等
4. 求表长,完整遍历

21、下列关于zabbix的说法正确的是(zabbix_server用来接受其他进程提交的数据

22、邮件服务器为每个用户限制磁盘存储空间上限,执行checkquota -cug /var/mail指令后, 在/var/mail目录自动创建的配置文件是( aquota.group与aqouta.user

aquota.group与aqouta.user分别是组以及用户磁盘配额需要的配置文件,而且权限还是600

23、某页式虚拟存储系统,针对作业A按照10个字地址序列进行访问。若采用FIFO调度算法会产生5次缺页中断,若采用LRU算法会产生6次缺页中断,则以下推断合理的是(分配给作业A的存储块M=3,作业A的第0页在调度之前已放入内存块中,
系统可以按照作业A的页号进行调度,若采用FIFO调度算法,中断率为50%,若采用LRU算法,中断率为60%。

24、某磁盘格式化后每个盘面10个扇区,现有记录1~11存放于同一磁道,若要顺序处理这些记录,则以下说法正确的是(若磁盘转速为20ms,每条记录的平均处理时间为4ms,则处理完10条记录的时间为204ms。若磁盘转速为20ms,每条记录的平均处理时间为4ms,则处理第一条记录的时间为6ms。
若随机处理这10条记录,则所消耗的系统时间可以低至60ms。

25、广义表即我们通常所说的列表(lists)。它放松了对表元素的原子性限制,允许他们有自身结构。那么广义表E((a,(a,b),((a,b),c)))的长度和深度分别为:(1,4

26、索引是对数据库表中一个或多个列的值进行排序的数据结构,以协助快速查询、更新数据库表中数据。以下对索引的特点描述错误的是:(在使用分组和排序子句进行数据检索时,并不会减少查询中分组和排序的时间

分组和排序是查询到结果后的操作,此时索引不生效

27、重复的数据,会增加磁盘空间的占有率,延长操作数据的时间。可以使用规范化处理数据冗余,以下对符合第一范式的表述正确的是:(表中不应该有重复组。列重复拆成另外一张表;行重复拆成多行

第一范式:满足第一范式的关系中每个属性都不可再分

第二范式:非主键都依赖主键,比如多主键时不能只依赖其中一个

第三范式:除主键外其他字段都依赖主键

28、在 python中,数据类型分为可变和不可变数据类型。string int float tuple boolen 不可变 list dict 和set为可变数据类型

29、关于http协议,说法正确的是(GET请求的参数一般位于URL中
POST请求的数据位于消息的主体

30、Objective-C中实现多线程都有哪几种方法:
采用NSOperationQueue,采用GCD

31、$$脚本运行的当前进程ID号

32、以下不合法的shell头是(不合法指运行会报错):(!#/bin/bas

33、it的使用是程序员不可缺少的一项技能。以下对git的描述正确的是(git可以利用快照签名回溯历史版本;去中心化;git属于分布式版本控制工具
git可以采用公钥认证进行安全管理
)

34、shc 加密软件

-e:指定过期时间 ,格式“日/月/年”;-m:指定过期后执行此shell程序的提示信息。

35、有关线性链表叙述正确的是(线性链表中的各元素在存储空间中的位置不一定连续,且各元素的存储顺序也是任意的

36、用于文本加密(RSA,MD5,DES

RSA 非对称加密
RC4、DES 对称加密
MD5  单向散列函数

37、已知int占4个字节,bool占1个字节。

unsigned int
value = 1024;
bool condition =
*((bool *)(&value));
if (condition)
value += 1; condition = *((bool *)(&value));
if (condition)
value += 1; condition = *((bool *)(&value));
问value, condition 的值为__(1024,0)__。

value是无符号32位,而condition取了32位中的低8位,当value是1024时,对应的低8位全是0,因此condition的值是0.
因为condition的值是0,因此不会走下边的if语句,导致value的值没变,从而导致condition的值也不会变,代码执行完毕。

38、关于python中的复数,下列说法正确的是(表是复数的语法是real + image j;实部虚部都是浮点数;方法conjugate 返回复数的共轭复数

虚数不能单独存在,它们总是和一个值为0.0的实数部分一起构成一个复数
表示虚数的语法:real+imagj
实数部分和虚数部分都是浮点数
虚数部分必须有j或J

你可能感兴趣的:(运维错题总结(二))