笔试基础归纳-8.21

  • T1.在32位小端的机器上,如下代码输出是什么:
char array[12] = {0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08};     
short *pshort = (short *)array;     
int *pint = (int *)array;     
int64 *pint64 = (int64 *)array;     
printf("0x%x , 0x%x , 0x%llx , 0x%llx", *pshort , *(pshort+2) , *pint64 , *(pint+2));
A 0x2010x4030x8070605040302010x0
B 0x2010x6050x8070605040302010x0
C 0x2010x6050x40302010x8070605
D 0x1020x5060x1020304050607080x0

答案选B
小端机器的数据高位字节放在高地址,低位字节放在低地址。
char array[12] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
1,char一字节,直观呈现的结果为:0x08-07-06-05-04-03-02-01(从后到前下标为0-7);
2,short两字节,直观呈现 的结果 为: 0x0807-0605-0403-0201 (从后到前 下标 为0-3) :
*pshort从0开始,所以0x201;
*(pshort+2)从2开始,所以0x605;
3,int64八字节,直观呈现 的结果 为 0x0807060504030201 (从后到前 下标 为0) :
*pint64从0开始,所以0x807060504030201;
4,int四字节,直观呈现为0x08070605-04030201(从后到前 下标 为0-1) :
*(pint+2))从2开始,但是最多只到下标1,后面位置默认为0。

  • T2.网络地址为172.16.0.0,采用子网掩码255.255.224.0 .以下说法正确的是()
A 其中一个子网的广播地址为:172.16.32.255
B 其中一个子网的广播地址为:172.16.128.255
C 划分了8个有效子网
D 划分了6个有效子网

答案只有D,划分了6个有效子网。
子网掩码: 255,255,11100000,0
这是一个C类地址,第三段前三位也作为子网的划分。所以可以划分的子网为:
00100000
01000000
01100000
10000000
10100000
11000000
这6个有效子网(其中00000000 和 111000000不能使用)

广播地址是 网络号后面接全是1。
A B答案的广播地址显然不对。
172 16 00011111 11111111 = 172.16. 31.255
172 16 00111111 11111111 = 172.16 .63.255
172 16 01011111 11111111 = 172.16. 95.255
172 16 01111111 11111111 = 172.16. 127.255
172 16 10011111 11111111 = 172.16. 159.255
172 16 10111111 11111111 = 172.16. 191.255
172 16 11011111 11111111 = 172.16. 223.255
172 16 11111111 11111111 = 172.16. 255.255

  • T3.对下列常见的各种网络术语描述正确的是()
A ADNS是一种用于TCP/IP应用程序的分布式数据库,因此它在TCP/IP体系中处于应用层
B TFTP是一种文件传递应用程序,它使用的传输层协议是TCP
C Ping是对两个TCP/IP系统连通性进行测试的基本工具,它利用ICMP进行基本的请求的应答
D Telnet 是标准的提供远程登录功能的应用,可以在不同OS系统的主机之间运行

A 错误,ADNS 是硬件防火墙。PDNS支持 mysql 数据库的 dns 服务器。
B错误,TFTP使用的传输协议是UDP
C D正确。

  • T3为了提高数据的查询效率,需要在数据库中建立索引,则下列设计索引的原则描述正确的是()
A 在频繁进行排序或分组(即进行group byorder by操作)的列上建立索引
B 考虑列中指的分布,列的基数越大,索引的效果越好
C 在select关键字后选择列表的列上,建立索引
D 在表中,索引越多越好

答案选 A B
表的某个字段值得离散度越高,该字段越适合选作索引的关键字。主键字段以及唯一性约束字段适合选作索引的关键字,原因就是这些字段的值非常离散。尤其是在主键字段创建索引时, cardinality (基数,集的势)的值就等于该表的行数。 MySQL 在处理主键约束以及唯一性约束时,考虑周全。数据库用户创建主键约束的同时, MySQL 自动创建主索引( primary index ),且索引名称为 Primary ;数据库用户创建唯一性索引时, MySQL 自动创建唯一性索引( unique index ),默认情况下,索引名为唯一性索引的字段名。
Where 子句中经常使用的字段应该创建索引,分组字段或者排序字段应该创建索引,两个表的连接字段应该创建索引。

  • T4.在MySQL中,下列关于触发机器的描述正确的是()
A MySQL的触发器只支持行级出发,不支持语句级触发
B 触发器可以调用将数据返回客户端的存储程序
C 在MySQL中,使用new和old引用触发器中发生的记录内容
D 在触发器中可以使用显示或者隐式方式开始或结束事务的语句

答案 A C

DROP TRIGGER IF EXISTS t_afterinsert_on_tab1;
CREATE TRIGGER t_afterinsert_on_tab1 
AFTER INSERT ON tab1
FOR EACH ROW
BEGIN
     insert into tab2(tab2_id) values(new.tab1_id);
END;

设置触发器的代码。
可以看出,mysql是each row是行级触发器,当每一行的数据进行更新的时候都会执行触发器的操作。触发器不可以调用将数据返回客户端的存储程序。
使用OLD和NEW关键字,能够访问受触发程序影响的行中的列(OLD和NEW不区分大小写)。
在INSERT触发程序中,仅能使用NEW.col_name,没有旧行。在DELETE触发程序中,仅能使用
OLD.col_name,没有新行。在UPDATE触发程序中,可以使用OLD.col_name来引用更新前的某一
行的列,也能使用NEW.col_name来引用更新后的行中的列。

  • T5.
void func(char *p)
{
    p=p+1;
}
int main()
{
    char s[]={'1','2','3','4'};
    func(s);
    printf("%c",*s);
    return 0;
}

以下程序执行后的输出结果为()

A 2
B 编译错误
C 1
D 无法确定

答案C
在执行 func(s)时,实际上是这样的过程
func(int *p = s){}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值