牛客错题集(1)

专业课

计算机网络

Q: 题目来源于王道论坛

某网络的IP地址空间为192.168.5.0/24,采用定长子网划分,子网掩码为255.255.255.248,则该网络中的最大子网个数、每个子网内的最大可分配地址个数分别是()。
A: 32,6

在这里插入图片描述

Q: 用户使用电子邮件只能传送文字信息。
A: 错误

SMTP 简单邮件传输协议提供可靠且有效的电子邮件传输协议,采用TCP连接,端口号为25
但SMTP只能传输7位ASCII码,许多其他非英语国家的文字就无法传送,且无法传送可执行文件和其他二进制对象
MIME 多用途网络邮件扩充可以弥补SMTP的一些缺点和不足。在原来邮件的基础上,使用同为RFC 822格式的MIME,它标明了邮件主体结构,定义了传送非ASCII码的编码规则。客户在向服务器发送邮件时,先根据邮件头部的MIME规则,将非ASCII转化为ASCII,然后再使用SMTP进行传输

Q: 下列设备中( )不是工作在数据链路层。
网桥
集线器
路由器
交换机

A: 集线器
路由器

网络层:

  • 路由器

数据链路层:

  • 交换机
  • 网桥:网桥是一种对帧进行转发的技术,根据MAC分区块,可隔离碰撞。网桥将网络的同一网段在数据链路层连接起来,只能连接同构网络(同一网段),不能连接异构网络(不同网段)

物理层:

  • 集线器:对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上
  • 中继器:适用于完全相同的两个网络的互连,主要功能是通过对数据信号的重新发送或者转发,来扩大网络传输的距离。 中继器是对信号进行再生和还原的网络设备:OSI模型的物理层设备
Q: SNMP协议利用( )协议实现管理者与SNMP代理之间的信息交互
A: UDP

简单网络管理协议 SNMP297
SNMP的网络管理由三个部分组成:SNMP协议本身、管理信息结构 SMI 和 管理信息库 MIB
SNMP 使用无连接的UDP,因此在网络上传送SNMP报文的开销较小
在运行代理程序的服务器端熟知端口 161 接受报文 和响应报文
运行管理程序的客服端则使用熟知端口 162 来接受各自代理的trap报文

Q: 在应用层的各协议中( )协议提供文件传输服务。
FTP
TELNET
WWW
TFTP // 不知道为啥这个不是

A: FTP

FTP 文件传送协议260
使用TCP可靠传输,采取客户服务器方式
常用端口号20(数据连接)、21(控制连接)

TFTP 简单文件传输协议262
使用UDP数据报,只支持传输、不支持交互
端口号69

TELNET 远程终端协议263
端口号23

WWW 万维网 264
分布式的超媒体系统,并非协议

Q: 下列地址中哪些是私有地址
172.32.0.1
172.0.0.1
172.16.0.255
172.15.255.255

A: 172.16.0.255

ip地址只有32位
由于ip地址资源稀缺,一个机构能够申请到的全球唯一的ip地址数可能少于机构内的主机数。
由于互联网的不安全性,该机构也不是所有主机都需要接入互联网
在机构内部的网络里,对于这些主机,机构可以自行分配主机的ip地址,
但随着计算机的发展,有些主机可能也有接入互职网的需求,即主机的ip不能和互联网上的全球唯一的ip地址冲突,所以机构也不是想怎么分配就怎么分配的
这个时候专用地址诞生了:
10.0.0.0-10.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255
使用专用地址的网络叫做专用网
对于目的地址是专用地址的数据报, 互联网上的所有路由器都不进行转发

机构也可能拥有许多个专用网
专用网内的主机想要与外网的主机,数据报将会经过以下的步骤:
主机将含有目的地址的数据报发到网络边界的路由器上,
路由器把数据报加密打包,并在外部在写上新的目的地址:目的主机所在的网络边界上的路由器在互联网上的ip地址

对方路由器收到后会进行解码,解析出真正的目的地址,然后发给真正的目的主机

Q: 下列关于广播信道多址访问协议的论述,正确的是___________
CDMA和FDM都是将信道划分为N个频段,给每个节点分配一个频段
时隙ALHOA协议允许节点在任何时刻传输帧
所有CSMA节点在传输前都进行载波侦听,所以不会发生碰撞
令牌传递协议可以消除困扰随机访问协议的碰撞和空时隙

A: 令牌传递协议可以消除困扰随机访问协议的碰撞和空时隙

时分复用 TDM 53
频分复用 FDM 53
码多分址 CDMA 57
载波监听多点接入/碰撞检测 CSMA/CD 86
在这里插入图片描述

Q: 数据链路层主要功能包括()
A: 差错控制、提供对物理层的控制、流量控制

在这里插入图片描述

Q: 下列关于pop3,dns,dhcp,smtp,windows远程等协议或服务描述 错误 的是?
   POP3 默认的端口是110,工作在7层模型的网络层
   SMTP默认的端口是25,工作在7层模型的传输层
   DNS的默认端口是53,工作在7层模型的应用层
   windows提供远程服务的Telnet的默认端口是23,工作在7层模型的应用层

A: POP3 默认的端口是110,工作在7层模型的网络层
   SMTP默认的端口是25,工作在7层模型的传输层

更多相关知识点
在这里插入图片描述

Q: 在OSI参考模型中,自下而上第一个提供端到端服务的层次是()。
   数据链路层
   传输层
   会话层
   应用层

A: 传输层

在这里插入图片描述

Q: HTTP定义了与服务器交互的不同方法,最基本的方法有4种 ()
A: GET,POST, PUT, DELETE

总共有9种方法:HTTP 请求方法

Q: 某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址可以是()
A: 180.80.79.255

广·播·分·组

十进制二进制十进制二进制
1281000 00002481111 1000
1921100 00002521111 1100
2241110 00002541111 1110
2401111 00002551111 1111
Q: ARP 协议数据单元封存在( )中发送。
A: 以太帧

ARP协议详解
网络工程师(3):详解ARP协议
在这里插入图片描述

Q: 下面哪种协议在数据链路层?
A: VPN

ARP 地址解析协议网络层 124
ICMP 网际控制报文协议网络层 147
FTP 文本传输协议应用层260
UDP 用户数据报协议运输层 208
HTTP 超文本传输协议应用层 267
在这里插入图片描述在这里插入图片描述

Q: 浏览器和服务器在基于https进行请求链接到数据传输过程中,用到了如下哪些技术?
A: 非对称加密技术
   对称加密技术
   散列(哈希)算法
   数字证书

HTTPS那些事 用java实现HTTPS工作原理
在这里插入图片描述

Q: 若某一帧出错,后面送来的正确的帧虽然不能立即送主机,但接收方仍可收下来,放在一个缓冲区中,同时只要求发送方重新传送出错的那一帧,一旦收到重传的帧后,就可与原先正确接收但暂存在缓冲区中的其余的帧一起按正确的顺序送主机。这种方法称:
A: 选择重传协议

停等协议213 :发一个确认一个

滑动窗口协议 :发送一组确认一个(ack该组末尾的后一个)
后退N帧协议(GBN) 和 选择重传协议(SR)都属于滑动窗口协议

后退N帧协议:按序发送多个,给每个帧都设置时限,接收方按序确认,超时重传从该帧开始一直到末尾的重新发送(but 如果该帧超时却收到了后面的帧的确认,说明该帧接收方收到了,就不需要重传了)
理解GBN协议
流水线机制、滑动窗口协议、GBN、SR

选择重传协议:发送多组,超时重传丢失的那一组
白中英p221: TCP可靠窗口的实现,TCP通常对不按序到达的数据先是临时存放在接受窗口的缓存中,等到字节流缺少的字节收到后,再按序交给上层的应用程序

管道协议~~

Q:以下关于计算机网络的讨论中,哪个观点是正确的?
组建计算机网络的目的是实现局域网的互联
联入网络的所有计算机都必须使用同样的操作系统
网络必须采用一个具有全局资源调度能力的分布操作系统
互联的计算机是分布在不同地理位置的多台独立的自治计算机系统

A:互联的计算机是分布在不同地理位置的多台独立的自治计算机系统

在这里插入图片描述
局域网 LAN
以太网的IEEE 802.3是迄今为止最常见的一种有线局域网
无线局域网 WLAN
无线局域网的一个标准称为IEEE 802.11,俗称WIFI,已经非常广泛地使用
虚拟局域网VLAN

计算机组成原理

Q: 下列寻址方式中,操作数有效地址 E=(Rb)+A(A为形式地址)的是()。
A: 基址寻址

计算机组成原理 · 白中英 p131
图4.2可以看到寻址方式属于 偏移寻址
相对寻址、基址寻址、变址寻址 都叫 偏移寻址
相对寻址和程序计数器PC有关
基址寻址与变址寻址的区别

操作系统

Q: 题目来源于王道论坛
下列选项中,会导致进程从执行态变为就绪态的事件是
执行P(wait)操作
申请内存失败 
启动I/O设备
被高优先级进程抢占

A: 被高优先级进程抢占
被分配了CPU
归还内存 删除PCB
申请内存 分配PCB
I/O请求
I/O到来
时间片到 or 被抢占
就绪
运行
终止
新建
阻塞

在这里插入图片描述

Q: 基于i 节点的文件共享有可能出现链接失效的情况,所以删除文件时需小心确认,这种说法正确吗?
A: 错误 

文件共享有两种方式:

  1. 基于索引节点的共享方式(硬链接)
    多个指针指向一个索引节点,保证只要还有一个指针指向索引节点,索引节点就不能删除
  2. 利用符号链实现文件共享(软链接)
    把到达共享文件的路径记录下来,当要访问文件时,根据路径寻找文件
Q: 下列操作系统中年代最久远的是 ( )
Windows
CP/M
MS-DOS
Longhorn
A: 

在这里插入图片描述

Q: 设系统中有n个进程并发,共享竞争资源X;且每个进程都需要m个资源x,为使该系统不会发生死锁,资源X最少要(  )个
A: n*(m-1)+1

在这里插入图片描述

Q: 多个进程怎样共享一个监听端口?(    )
A: 使用fork共享

Linux中fork()函数详解
在这里插入图片描述

Q: 多批道处理的发展是建立在( )硬件的基础上的。
A: 通道和中断机构

在这里插入图片描述

Q: 在这里插入计算机的工作是通过CPU一条一条地执行_________来完成片
A: 机器指令

cpu只能处理由01构成的编码(即机器语言)

Q: 以下有关 CPU 响应外部中断请求的叙述中,错误的是()
每条指令结束后,CPU都会转到“中断响应”周期进行中断响应处理
在”中断响应”周期,CPU先将中断允许触发器清0,以使CPU关中断
在”中断响应”周期,CPU把后继指令地址作为返回地址保存在固定地方
在”中断响应”周期,CPU把取得的中断服务程序的入口地址送PC

A: 每条指令结束后,CPU都会转到“中断响应”周期进行中断响应处理

能使外设通知cpu的硬件机制叫做中断

中断响应周期是指当CPU采用中断方式实现主机与I/O交换信息时,CPU在每条指令执行阶段结束前,都要发中断查询信号,以检测是否有某个I/O提出中断请求。如果有请求,CPU则要进入中断响应阶段,又称中断周期

暂时还没找到其他选项的相关资料… 这超出课本知识了…

Q: 在以下存储管理方案中,使用于多道程序设计系统的是()。
A: 固定式分区分配
   可变式分区分配
   页式存储管理
Q: 以下关于进程、线程、协程的的说法正确的是?()
进程是操作系统能够进行运算调度的最小单位
线程是堆共享,栈私有
线程是堆私有,栈共享
现代操作系统中,协程是资源管理的最小单元
一般而言,执行开销进程 > 线程 > 协程

A: 线程是堆共享,栈私有
一般而言,执行开销进程 > 线程 > 协程

漫画:什么是协程?

线程拥有自己的栈空间
在这里插入图片描述

Q: 假设一个系统包括A到G七个进程,R到W六中资源。资源间的所有权关系,如下:
   1、进程A占有资源R,请求资源S
   2、进程B不占有任何资源,请求资源T
   3、进程C不占任何资源,请求资源S
   4、D占有资源U,请求资源S和T
   5、E有资源T,请求资源V
   6、F有资源W,请求资源S
   7、G有资源V,需要资源U
下列说法中正确的是( )

A: 进程D、E、G被死锁
进程A、C、F没有被死锁

在这里插入图片描述

Q: 进程调度算法各种各样,如果选择不当,就会造成死锁。
A: 错

在这里插入图片描述

Q: 下列关于文件索引结构的叙述中,哪些是正确的?
A: 系统为每个文件建立一张索引表
采用索引结构会引入存储开销
从文件控制块中可以找到索引表或索引表的地址
Q: 进程同步是进程与进程间的间接制约问题,进程互斥是进程与进程间的直接制约问题
A: 错误

在这里插入图片描述

Q: 下列有关在一个处理器(processor)上跑两个线程(thread)的说法中,正确的是?
一个线程可以改变另一个线程的程序计数器(program counter)
一个线程既不能读也不能写另一个线程的栈(stack)
一个线程可以读写另一个线程的寄存器(register)
以上都不对

A: 一个线程既不能读也不能写另一个线程的栈(stack)

每个线程都有各自私有的程序计数器、寄存器和栈。
同一个进程中的两个线程,全局数据区和堆是相互可见的,栈并不是相互可见的。
程序计数器是用于存放下一条指令的地址的寄存器。

Q: 机票订购系统处理来自各个终端的服务请求,处理后通过终端回答客户,所以它是一个( )。
分时系统
多道批处理系统
计算机网络
实时信息处理系统

A: 实时信息处理系统

在这里插入图片描述

Q: X86体系结构在保护模式下中有三种地址,请问一下那种说法是正确的?
虚拟地址先经过分段机制映射到线性地址,然后线性地址通过分页机制映射到物理地址
线性地址先经过分段机制映射到虚拟地址,然后虚拟地址通过分页机制映射到物理地址
虚拟地址先经过分页机制映射到线性地址,然后线性地址通过分段机制映射到物理地址
线性地址先经过分页机制映射到虚拟地址,然后虚拟地址通过分段机制映射到物理地址

A: 虚拟地址先经过分段机制映射到线性地址,然后线性地址通过分页机制映射到物理地址

知识盲区 - x86架构中的保护模式
采用的是 虚拟管理中的段页式机制
在这里插入图片描述

Q: 需要周期刷新的存储器是( )
SRAM
DRAM
ROM
双稳态存储器

A:DRAM 

在这里插入图片描述

在这里插入图片描述

Q: 线程是比进程更小的能独立运行的基本单位,这样的说法正确吗?
A: 不正确 // 这题有点点问题 不是很严谨

王道上说:
在传统的操作系统中,拥有资源和独立调度的基本单位都是进程
在引入线程的操作系统中,线程是独立运行或调度的基本单位,进程是拥有资源的基本单位

补充:
引入进程的目的:更好地使多道程序并发执行,提高资源利用率和系统吞吐量
引入线程的目的:减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能
线程不拥有系统资源,只需要很小的时空开销
同一个进程内的多个线程共享进程的地址空间,进程之间的同步与通信非常容易实现

Q: 本地用户通过键盘登 录 系统 时 , 首先 获得键盘输入信息的程序 是 () 
   命令解释程序 
   中断处理程序
   系统调用服务程序
   用户登录程序

A: 中断处理程序

在这里插入图片描述

Q: 资源静态分配法破坏了死锁产生的( )条件来预防死锁的发生。
A: 保持和等待

在这里插入图片描述
在这里插入图片描述

Q: 磁盘设备的I/O 控制主要采取______方式。
A: DMA

在这里插入图片描述

Q: I/O通道控制方式不需要任何CPU干预。
A: 错

在这里插入图片描述

Q: 应用程序在()系统上,相同的数据的条件下多次执行,所需要的时间是可能不同的。
多用户分时
多道批处理
单道批处理
单用户单任务

A:多用户分时

单用户单任务操作系统
是指一台计算机同时只能有一个用户在使用,该用户一次只能提交一个作业,一个用户独自享用系统的全部硬件和软件资源。
批处理系统
批处理是指用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行。这种采用批量处理作业技术的操作系统称为批处理操作系统;批处理操作系统不具有交互性,它是为了提高CPU的利用率而提出的一种操作系统
操作系统考研单道批处理系统是什么
单道批处理
用户一次提交多个作业,作业按顺序进行,一个完成后下一个作业才能接着做
多道批处理
用户一次提交多个作业,这个作业做不完先做其他的

数据库

Q: 关系数据库中的关键字是指( )
A: 能惟一标识元组的属性或属性集合

关键字是指PK FK,PK只能有一个,FK可以有多个

Q: 一个表的候选码一定是主码。  请问这句话的说法是正确的吗?
A: 错误

在这里插入图片描述

Q: 数据库的外模式/模式映像,保证了数据与程序的逻辑独立性。请问这句话的说法是正确的吗?
A: 正确

在这里插入图片描述
在这里插入图片描述

Q: 某打车公司将驾驶里程(drivedistanced)超过5000里的司机信息转移到一张称为seniordrivers 的表中,他们的详细情况被记录在表drivers 中,正确的sql为()
A: select * into seniordrivers from drivers where drivedistanced >=5000

mysql不支持 SELECT INTO 替换方法 - SQL INSERT INTO SELECT 语句
在这里插入图片描述

Q: 淘宝网上的信息处理系统属于()
A: 分布式模型

在这里插入图片描述
在这里插入图片描述

Q: 关于数据完整性,以下说法正确的是?
引用完整性通过主键和外键之间的引用关系实现 // √
引用完整性通过限制数据类型、检查约束等实现 // × 应该是 区域完整性
数据完整性是通过数据操纵者自身对数据的控制来实现的 // × 应该是 用户自定义完整性
如果两个表中存储的信息相互关联,那么只要修改了一个表,另外一个表也要做出相应的修改,则称该这两个表中的数据具备完整性 // √

A: 略

在这里插入图片描述

Q: 设计数据库概念结构时,常用的数据抽象方法是 概括 和(  )。
A: 分类
   聚集 

百度百科 - 数据抽象

Q: 如下语句:
SELECT i.id_number,m.id_number FROM inventory i,manufacturer m WHERE 
i.manufacturer_id = m.id_number order by inventory.description
执行时是错误的,请问以下措施哪个能够改正这个错误?

A: 在order by的子句中使用表的别名

https://msdn.microsoft.com/zh-cn/library/ms187455.aspx
在这里插入图片描述
在这里插入图片描述

Q: 数据库系统可分为三种类型( )
A: 层次、网状和关系

在这里插入图片描述

Q: 遵守两段锁协议的事务一定不会死锁。( )
A: 错误

知识盲区 · 两段锁协议

Q: 下列哪一个Transact-SQL语句能够实现收回user2查询基本表T的权限( )。
A: REVOKE SELECT ON T FROM user2

REVOKE UPDATE ON T
GRANT SELECT ON T TO user2
DENY SELECT ON T TO user2
在这里插入图片描述

Q: 在SQL中语法规范中,having子句的使用下面描述 正确 的是:(       )
   having子句即可包含聚合函数作用的字段也可包括普通的标量字段
   使用having的同时不能使用where子句
   having子句必须于group by 子句同时使用,不能单独使用
   使用having子句的作用是限定分组条件
   Having子句和where子句是等同的
   如果select语句中没有聚合函数的使用,就不能使用having子句

A: having子句即可包含聚合函数作用的字段也可包括普通的标量字段
   having子句必须于group by 子句同时使用,不能单独使用

在这里插入图片描述
group by 子句是限定分组条件的,having是过滤分组的

C/C++

Q: 比较x和y的大小:
#include <iostream>
using namespace std;
int main()
{
    int x = -1;
    unsigned int y = 2;

    if(x > y) {
        cout << "x is greater";
    } else {
        cout << "y is greater";
    }
}

A:  x is greater

在这里插入图片描述

Q: 题目来源于王道论坛
有如下C语言程序段:
for(k=0; k<1000; k++)
	a[k] = a[k]+32;
若数组a及变量k均为int型,int型数据占4B,数据Cache采用直接映射方式,数据区大小为1KB、块大小为16B,该程序段执行前Cache为空,则该程序段执行过程中访问数组a的Cache缺失率约为 。
A: 12.5%

在这里插入图片描述

Q: 下列程序编译时会产生错误,请根据行号选择错误的位置()
#include <iostream>
using namespace std;
class Point {
public:
    Point(int xx, int yy);
    Point(Point &p);
    Point();
private:
    int X, Y;
};
// clion里报错 但可以编译 orz
// Addition of default argument on redeclaration makes this constructor a default constructor
// 变量的初始化 放在定义or声明里都是可以的 但是不可以两个都有
Point::Point(int xx = 0, int yy = 0) { // 1
    X = xx;
    Y = yy;
}
Point::Point(Point &p) {//2
    X = p.X;
    Y = p.Y;
}
Point::Point() { //3
    X = 0;
    Y = 0;
}
int main() {
    // 报错 Call to constructor of 'Point' is ambiguous
    Point A; // 4 
    Point B(1, 2);//5
    Point C(B);//6
}

A: 1,4

在这里插入图片描述

Q: 若使用一维数组名作函数实参,则 必须在主调函数中说明此数组的大小说法正确?
A: 正确

在这里插入图片描述

Q:32位系统下下面程序的输出结果为多少?
void Func(char str_arg[100]) // 传进来的数组作为参数时 已经退化成了指针 100没有任何作用
{
       printf("%d\n",sizeof(str_arg));
}
int main(void)
{
     char str[]="Hello";
     printf("%d\n",sizeof(str)); // 包括\0
    printf("%d\n",strlen(str)); 
    char*p=str;
    printf("%d\n",sizeof(p));
    Func(str);
}
A:6 5 4 4

顺便补充一下:

  1. 64位时指针大小为8位,but,我的编译器测出来的long的大小仍然是4
  2. 当上面的函数改成如下:
void Func(char&str_arg)[100]) // 现在是引用了 传进来的数组必须和参数大小类型一致
{
       printf("%d\n",sizeof(str_arg)); // 此时输出 6 
}
Q: 关于C语言中的float,下面哪种说法是正确的? ()
x的二次方大于等于0,对于float变量x总成立
float 变量加法满足交换律
条件0.9f == 0.9 的值为真
条件9 == 0.9*10 的值为真

A: x的二次方大于等于0,对于float变量x总成立

交换律:a * b = b * a
在这里插入图片描述

Q: 实例对象都是通过调用类的方法生成的。
A: 正确
Q: 给定fun函数如下,
int fun(int x) {
 return (x==1) ? 1 : (x + fun(x-1));
 }
那么以下说法正确的是()
A: fun(10)的输出结果是55
   fun(0)的执行结果是栈溢出 
Q: nt a=5,则 ++(a++)的值是?
A: 编译出错

https://www.nowcoder.com/questionTerminal/74a255d045c04f0c8194c1d93cf5f6d3
https://zh.cppreference.com/w/cpp/language/value_category

++(int) // a++ 后置 右值
++() // ++a 前置 左值
Q: 以下代码输出什么____.  
main()
{
   int a[5]={1,2,3,4,5};
   int *p=(int *)(&a+1);
   printf("%d",*(p-1));
}

A: 5

在这里插入图片描述

Q: 请问实际运行结果是哪个?()
ps: 这道题还挺搞的 题目太长直接去牛客上看吧
https://www.nowcoder.com/questionTerminal/8378ea7440eb4f469d605cf8c522e03e 
A: C,B,A,D,~D,~A,~B,~C

在这里插入图片描述

在这里插入图片描述

Q: 输出以下结果
#define add(a,b) a+b
int main() { 
 printf("%d\n",3 * add(4,7)); 
 return 0;
}

A: 19
Q: 在C语言中(以16位PC为例),5种基本数据类型的存储空间长度的排列顺序为()
A: char(1)<int(2)<long int(4)<=float(4)<double(8)
Q: 预处理的功能有以下哪几个?()
宏扩展
文件包含
条件编译
都对

A: 都对
Q: 请问下面的程序一共输出多少个“-”?为什么?
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main(void) {
   int i;
   for (i=0; i<2; i++) {
      fork();
      printf("-\n");
   }
   return 0;
}

A: 6

在fork()的调用处,整个父进程空间会原模原样地复制到子进程中,包括指令,变量值,程序调用栈,环境变量,缓冲区,等等
一个FORK的面试题

Q: 建立自定义函数的目的之一是()
提高程序的执行效率
提高程序的可读性
减少程序的篇幅
减少程序文件所占内存

A: 提高程序的可读性

在这里插入图片描述

Q: 有以下程序
#include <stdio.h>
int funa( int a, intB)
{ 
    return a+b;
}
int funb( int a, int b)
{
    return a-b;
}
int sss( int (*t)(int,int),int x, int y )
{
    return(*t)(x,y);
}
main()
{
    int x:
    x=sss( funa, 9,3 ); 
    x+=sss(funb,8,3);
    printf("%d\n",x);
}
程序运行后的输出结果是?

A: 17

函数指针及其定义和用法,C语言函数指针详解
在这里插入图片描述

Q: 下面关于串的叙述中,哪一个是不正确的?(      )
串是字符的有限序列
空串是由空格构成的串
模式匹配是串的一种重要运算
串既可以采用顺序存储,也可以采用链式存储

A: 空串是由空格构成的串

模式匹配:找出一个子串在文本中的位置的过程
模式匹配算法 - 【模板】KMP

Q: int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");} 的输出结果为A。()
A: 错误 没有break 输出AB
Q: 下列程序段的时间复杂度是(    )
count = 1;
for(k=1;k<2n;k*=2) // log2(n)
for(i=1;i<4n;i+=2) // n
count++;

A: O(nlog2n)
Q: 以下关于STL各种容器和算法的sort和find函数对重载运算符的描述正确的是
二叉树类型的容器的sort和find都会调用operator &lt;
线性类型容器sort会调用operator &lt;
二叉树类型的容器的find会调用operator ==
线性类型容器使用std::find会调用operator ==

A: 二叉树类型的容器的sort和find都会调用operator &lt;
线性类型容器sort会调用operator &lt;
线性类型容器使用std::find会调用operator ==

C++ STL容器中的排序(sort)与查找(find)算法的运算符运用及其重载问题
在这里插入图片描述

Q: 基于链式队列,关于计数排序的叙述中正确的是( )
计数排序是一种基于比较的排序算法
计数排序的时间复杂度为O(n+k)
计数排序的空间复杂度为 O(k)
计数算法是原地排序算法

A: 计数排序的时间复杂度为O(n+k)
计数排序的空间复杂度为 O(k)

好像是定义里有k的存在,但这哪是没看过的我能看出来的 😅
在这里插入图片描述

Q:下面这个程序,三次打印的data分别是__, __, __。
int data = 10;

int child_process()
{
    printf("Child process %d, data%d\n",getpid(),data);
	data = 20;
	printf("Child process %d, data%d\n",getpid(),data);
	_exit(0);
}

int main(int argc,char* argv[])
{
	if(vfork()==0) {
		child_process(); 
	}
	else{
		sleep(1);
		printf("Parent process %d,data %d\n",getpid(), data);
	}
}

A: 10, 20, 20

Linux系统编程——vfork() 函数详解
在这里插入图片描述

Q: 已知int i=1, j=2;,则表达式i+++j的值为( )。
A:  3

C 运算符 - C 中的运算符优先级
在这里插入图片描述

中途看到这么一个规则:
在这里插入图片描述

Q: 若 a 是 float 型变量,b 是 unsigned 型变量,以下输入语句中合法的是()。
   scanf("%6.2f%d",&a,&b); // scanf()中不允许指定精度
   scanf("%f%n",&a,&b); // %n 统计之前输入的字符的个数 // 虽然但是吧...不会用啊...
   scanf("%f%3o",&a,&b);
   scanf("%f%f",&a,&b);
   
A: scanf("%f%n",&a,&b);
   scanf("%f%3o",&a,&b);

在这里插入图片描述

Q: 下面对一维数组 a 进行正确的初始化的语句是(   )
   int a[10] = (0, 0, 0, 0, 0); // 眼瞎..居然是括号
   int a[10] = {}; // 数组初始化后未赋值,默认元素为 0
   int a[10] = {10}; // a[0]初始化10,后边元素全部初试化为0
   int a[10] = {10, 0, -1.0}; // Type 'double' cannot be narrowed to 'int' in initializer list

A: int a[10] = {};
   int a[10] = {10};
Q: 若有定义"char a [10], *p=a; ”,那么下列赋值语句正确的是( )。
   a [] ="abcdefg"; // 没有 a[] 赋值的写法
   a=”abedefg"; // Array type 'char [10]' is not assignable 数组类型'char[10]'不可分配
   *p=”abcdefg"; // Assigning to 'char' from incompatible type 'const char [8]' // 只允许 *p='a';
   p=”abcdefg ";

A: p=”abcdefg ";
Q: 32位机器上,以下代码的输出是
char c = -1;
int i0 = c;
int i1 = (unsigned char)c;
printf("%d, %d\n", i0, i1);

A: -1 255

负数在计算机中以二进制补码的方式存放
看C语言编码转换--------负数的二进制表示方法
char c = 1111 1111 赋值给int时,计算机会判断char的符号位,将int剩余部分全部为1,即
int i0 = 1111 1111 1111 1111
unsigned char 会把符号位也当作数字 1111 1111 = 255

Q: 假定Qiniuome是一个类,执行下面这些语句之后,内存里创建了几个Qiniuome对象。
   Qiniuome a(); // Qiniuome a; 才是创建对象
   Qiniuome b(2);
   Qiniuome c[3];
   Qiniuome &ra = b;
   Qiniuome *pA = c;
   Qiniuome *p = new Qiniuome(4);

A: 5 

在这里插入图片描述

Q: 设已定义浮点型变量data,以二进制代码方式把data的值写入输出文件流对象outfile中,正确的语句是(  )
A: outfile.write((char *) &data, sizeof(double));

ofstream文件输出流把二进制数据写入文件

在这里插入图片描述

Q: 若有说明:int*p,m=5,n;则以下正确的程序段是()。
   p=&n;scanf("%d",&p); // p是指针 没有申请过空间 不能使用&p接受数据
   p=&;scanf("%d",*p)
   scanf("%d”,&n); *p=n;
   p=&n;*p=m;
   
A: p=&n;*p=m;
Q: 下面哪些是重载的基本条件()
   参数的类型不同
   参数类型的顺序不同(比如 int a , float b 与 float b , int a)
   函数的返回值类型不同
   参数的个数不同

A: 参数的类型不同
   参数类型的顺序不同(比如 int a , float b 与 float b , int a)
   参数的个数不同

在这里插入图片描述

Q: 通用多态是指
   强制多态和包含多态
   重载多态和强制多态
   参数多态和重载多态
   包含多态和参数多态

A: 包含多态和参数多态

在这里插入图片描述

在这里插入图片描述

Q: 执行语句“int a= ’ 2 ’ ”后,a的值是( )
A: 50

在这里插入图片描述

Q: 以下关于头文件,说法正确的是()
A. #include<filename.h>,编译器寻找头文件时,会从当前编译的源文件所在的目录去找
B. #include“filename.h”,编译器寻找头文件时,会从通过编译选项指定的目录去找 
C. 多个源文件同时用到的全局整数变量,它的声明和定义都放在头文件中,是好的编程习惯
D. 在大型项目开发中,把所有自定义的数据类型、全局变量、函数声明都放在一个头文件中,各个源文件都只需要包含这个头文件即可,省去了要写很多#include语句的麻烦,是好的编程习惯。

A: B

后面加<>时,是查找系统的标准库函数,通过系统环境变量指定系统的库目录;
后面加“”时,是在用户的工作目录下查找,用户的工作目录由编译器选项指定;
声明放在头文件中定义应该放到源文件中,因为全局变量的链接性为外部链接,定义放在头文件中时,当多个文件包含这个头文件,编译器会报重定义的错误

Q: 串是一种特殊的线性表,其特殊性体现在()
A: 数组元素是一个字符

在这里插入图片描述

Q: 下列程序共执行的循环次数是(  )  
FOR K=7 TO 90 STEP 5  
    PRINT K   
NEXT K
A: (90-7)/5 + 1(第一下从7开始) = 17
Q: 
struct Student{
    int num;
    char name[7];   
    short age;
    char sex;
}student1;
int sz = sizeof(student1);
则执行上面语句后,变量sz的值为(      )
A: 16

预备知识 - C++结构体中关于内存对齐的知识

4(int) + 7(char) + 1(第一原则 - 空) + 2(short) + 1(char) + 1(第二原则 - 空)= 16

Q: 有以下结构体,请问在64位系统中,sizeof(struct B)的大小为
struct A
{
 int a;
 union
 {
     long b;
     short c;
 };
};
struct B
{
 char e;
 struct A d;
 int f;
};

A: 32

在这里插入图片描述

ps:
虽然都说64位的系统long是8位的…但是我64位的电脑测出来的long类型是4位的…
有没有哪位路过的同志解说一下…这东西要怎么看啊…

数据结构

Q: 判断下列说法是否正确:希尔排序是一种不稳定的排序方法。( )
A: 正确

在这里插入图片描述

Q: 下列关于排序算法中的说法中,错误的有()
在待排序的元素序列基本有序的前提下,效率最高的排序方法是插入排序
堆排序的时间复杂度为O(nlogn)
关键字比较的次数与激励的初始排列次序无关的是冒泡排序
快速排序是一种稳定的排序算法

A: 快速排序是一种稳定的排序算法

在这里插入图片描述

Q: 设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1,M2和M3。与森林F对应的二叉树根结点的右子树上的结点个数是(     )。
A: M2+M3

树、森林与二叉树的转换

Q: 判断下列说法是否正确:已知完全二叉树的第七层中有10个叶子结点,则整个二叉树中最多有73个结点。()
A: 错误

注意:第七层中有10个叶子结点并非指只有10个结点,还有未知个非叶子结点
在这里插入图片描述

Q: 设有n个关键字具有相同的Hash函数值,则用线性探测法把这n个关键字映射到Hash表中需要做几次线性探测?
A: n*(n-1)/2 // 题目有点问题  王道上是 n*(n+1)/2 
Q: 下列哪种算法平均情况、最好情况和最坏情况下的时间复杂度都为o(n^2)()
直接选择排序 // n^2
直接插入排序 // n
冒泡排序 // n
归并排序 // nlog2(n)

A: 直接选择排序
Q: 对有n个顶点、e条边且采用邻接表作为存储结构的无向图进行深度优先搜索遍历的吁间复杂度为()。
A: O(n+e)

在这里插入图片描述

Q: 下面关于线性表的叙述中,错误的是哪一个?()
线性表采用顺序存储,必须占用一片连续的存储单元。
线性表采用顺序存储,便于进行插入和删除操作。
线性表采用链接存储,不必占用一片连续的存储单元。
线性表采用链接存储,便于插入和删除操作。

A: 线性表采用链接存储,不必占用一片连续的存储单元。

线性表 包括 顺序表-数组 和 链表
在这里插入图片描述

Q: 基于链式队列,关于计数排序的叙述中正确的是( )
计数排序是一种基于比较的排序算法
计数排序的时间复杂度为O(n+k)
计数排序的空间复杂度为 O(k)
计数算法是原地排序算法

A: 计数排序的时间复杂度为O(n+k)
计数排序的空间复杂度为 O(k)

在这里插入图片描述

Q: 假设你只有100MB的内存,需要对1GB的数据进行排序,最合适的算法是?
A: 归并排序

【漫画】什么是外部排序?

百度百科:
外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行归并排序

Q: 以下排序算法中是稳定的且时间复杂度最小的是:
bubble sort // n^2  稳定
heap sort // nlog(n) 不稳定 
merge sort // nlog(n) 稳定
quick sort // nlog(n) ~ n^2 不稳定
shell sort // 希尔排序 nlog(n) 不稳定

A: merge sort
Q: 下列哪些排序算法不是稳定的?
快速排序
冒泡排序
选择排序
归并排序

A: 快速排序、选择排序

在这里插入图片描述

Q: 一个具有767个节点的完全二叉树,其叶子节点个数为()
A: 384

在这里插入图片描述

Q: 假设某段通信电文仅由 6 个字母 ABCDEF 组成,字母在电文中出现的频率分别为2,3,7,15,4,6。根据这些频率作为权值构造哈夫曼编码,最终构造出的哈夫曼树带权路径长度与字母 B 的哈夫曼编码分别为______。(这里假定左节点的值小于右节点的值)
A: 86 1011
Q: 若给定的关键字集合为{20,15,14,18,21,36,40,10},一趟快速排序结束时,键值的排序为
A: 10,15,14,18,20,36,40,21

在这里插入图片描述
从后面往前遍历到的位置,不会超过从前往后遍历的位置

Q: 如果有向图G=(V,E)的拓扑序列不唯一,则图中必有两条弧<Vi, Vj>和<Vj, Vi>。这种说法()
A: 错误

在这里插入图片描述

Q: 若二叉树用二叉链表作存贮结构,则在 n 个结点的二叉树链表中只有 n—1 个非空指针域()。
A: 正确

在这里插入图片描述

Q:题目来源于王道论坛
对一组数据(2,12,16,88,5,10)进行排序,若前三趟排序结果如下:
第一趟排序结果:2,12,16,5,10,88
第二趟排序结果:2,12,5,10,16,88
第三趟排序结果:2,5,10,12,16,88
则采用的排序方法可能是()。
A: 冒泡排序

冒泡排序
希尔排序
基数排序 即桶排

Q: 具有12个关键字的有序表,折半查找的平均查找长度()
A: 3.1

在这里插入图片描述

图的表示和折半二分具体写法有关,不必太纠结
在这里插入图片描述

软件工程

Q: 结构化程序设计主要强调程序的( )。
A: 可读性

结构化程序设计是以模块功能的处理流程为主要设计,对写入的程序使用逻辑结构,因此对可读性要求较高

软件测试

Q: 下面不属于软件测试步骤的是
集成测试
回归测试
确认测试
单元测试

A: 回归测试

在这里插入图片描述
在这里插入图片描述

Q: 哪种测试模型把测试过程作为需求分析、概要设计、详细设计及编码之后的阶段( )
A: V模型

未知分类

Q: 在UCDOS全拼输入方式中,在提示行上向前或向后翻页查找,要按键( )
A: -和=
Q: 数据采集和感知用于采集物理世界中发生的物理事件和数据,主要包括( )
A: 传感器、RFID 射频识别、二维码、多媒体信息采集
Q: LR 分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。 ()
A: 正确
Q: 下列关于Internet专线上网的叙述中,正确的是(  )
A: ISP提供的专用数据线

在这里插入图片描述

Q: CCED 中画线状态为 =+ 时为 ( )
A: 画粗线状态

知识盲区

Python

Q: __new__和__init__的区别,说法正确的是?
__new__是一个静态方法,而__init__是一个实例方法
__new__方法会返回一个创建的实例,而__init__什么都不返回
只有在__new__返回一个cls的实例时,后面的__init__才能被调用
当创建一个新实例时调用__new__,初始化一个实例时用__init__

A: 全选 

HTML

Q: 当表单中包含文件上传控件时,需要将enctype设置为()
application/x-www-form-urlencoded
multipart/form-data
text/explain
file-data

A: multipart/form-data

在这里插入图片描述

Java

Q: String str = new String(“abc”),“abc”在内存中是怎么分配的?
A: 堆
字符串常量区

https://www.nowcoder.com/questionTerminal/4148c53d7e284f19b0f61bc0ada248a8ps:请忽略推荐答案,已过时

Q: 下面的类哪些可以处理Unicode字符?
...(不写选项了 知识题不会 记答案就够了)
A: InputStreamReader
BufferedReader
Writer // 据说 这是个抽象类??

在这里插入图片描述
在这里插入图片描述

Q: 以下哪个不是Collection的子接口?
A: Map

在这里插入图片描述

网络基础

Q: 在各种交换技术中,目前使用最广泛的是 (    ) 。
电路交换
ATM交换
分组交换
帧中继交换

A: 分组交换

交换就是按照某种方式动态地分配传输路线的资源
这种必须经过建立连接->通话->释放连接三个步骤的交换方式叫做电路交换,特点是在通话的全部时间内,通话的两个用户始终占用端到端的通信资源
分组是在互联网中传送的数据单元

在这里插入图片描述

Q:若下图为10 BaseT 网卡接收到的信号波形,则该网卡收到的比特串是( )。

在这里插入图片描述

A: 0011 0110

在这里插入图片描述

Q: 主机甲和主机乙间已建立一个TCP连接,主机甲向主机乙发送了两个连续的TCP段,分别包含300字节和500字节的有效载荷,第一个段的序列号为200,主机乙正确接收到两个段后,发送给主机甲的确认序列号是?
A: 1000

在这里插入图片描述

Q: 上网的时候,访问某个网页却突然出现了某个运营商的网页(如联通、电信)。出现此问题可能的原因是?( )
DNS劫持
DDoS攻击
MAC地址欺骗
伪造DHCP服务器

A: DNS劫持

【DNS是什么东西,他有什么用,DNS劫持说的又是啥】
在这里插入图片描述

Q: 模拟信号不可以在无线介质上传输。( )
A: 错误

最常用的无线传输介质有:无线电波、微波、红外线和激光
无线电波:具有较强的穿透能力、可以传播很长的距离,无线电波信号向各个方向传播,简化了通讯连接
微波:通信的频率较高、频段范围宽、载波频率高、信道容量大,信号沿直线传播,传播距离有限
在这里插入图片描述

Q: 当在浏览器输入http://www.jd.com后,执行过程描述有误的是哪个?
   客户端浏览器通过DNS解析到www.jd.com的ip地址,通过ip地址找到客户端对应的服务器地址,客户端发起HTTP会话到IP,通过tcp进行封装数据包,输入到网络层
   在客户端的网络层,把http会话请求分成报文段,添加源地址和目的地址
   客户端的网络层主要通过查找路由确定到达服务器
   数据包通过链路层发送到路由器,通过邻居协议查找给定ip地址的mac地址,然后发送ARR请求查找目的地址,得到回应就可以使用ARR的请求应答交换的IP数据包,发送IP数据包到达服务器地址

A: 在客户端的网络层,把http会话请求分成报文段,添加源地址和目的地址

TCP分段与IP分片
TCP和UDP的区别
在这里插入图片描述

Q: 在ISO/OSI参考模型中,对于传输层描述正确的有(        )
为系统之间提供面向连接的和无连接的数据传输服务
提供路由选择,简单的拥塞控制
为传输数据选择数据链路层所提供的最合适的服务
提供端到端的差错恢复和流量控制,实现可靠的数据传输

A: 为系统之间提供面向连接的和无连接的数据传输服务 // but 好像有争议来着
提供端到端的差错恢复和流量控制,实现可靠的数据传输

在这里插入图片描述

Q: 下面对令牌环网描述正确的有(        )
令牌环网是一种多令牌协议
接收节点负责将数据从环路上取下来,所以没有广播特性
采用一种正确型的介质访问控制协议,一般可用于对实时系统进行控制的环境
需要对令牌进行维护和无源数据帧的维护

A: 采用一种正确型的介质访问控制协议,一般可用于对实时系统进行控制的环境
需要对令牌进行维护和无源数据帧的维护

在这里插入图片描述

window系统

Q: 关闭一个活动应用程序窗口,可按快捷键( )。
   Alt+F4 // 关闭一个窗口
   Ctrl+F4 // 关闭一个窗口多个页面中的当前那个页面
   Alt+Esc // 切换应用程序窗口
   Ctrl+Esc // 显示“开始”菜单
A: Alt+F4

在这里插入图片描述
开始菜单 👆

Linux

Q: 采用多路复用I/O监听3个套接字的数据时,如果套接字描述符分别是:5,17,19,则
select(int maxfd,struct fd_set* rdset,NULL,NULL)
中的maxfd应取为()
A: 20

在这里插入图片描述

UNIX系统

Q: 在 UNIX 中,文件系统和设备驱动程序之间的接口是( )
A: 设备开关表

编译和体系结构

Q: RFID 相关标准有()。
A: 空中接口技术标准
数据结构技术标准
一致性测试标准等
Q: 在选择通道方式中,优先级高的磁盘等中高速设备,进行输入输出传送时,适合于采用的数据宽度是(   )
A: 定长块
Q: 用户向厂家定做的只读存储器是( )。
A: 掩模ROM
Q: 完成将AX清零,并且使CF清零,下面错误的指令是( )。
SUB AX, AX  // AX - AX
AND AX, 0 // AX & 0
XOR AX,AX // AX ^ AX
MOV AX,0

A: MOV AX,0

在这里插入图片描述

Q: 每个文法都能改写为 LL(1) 文法。 ( )
A: 正确
Q: RFID 卡( )可分为:有源 (Active) 标签和无源 (Passive) 标签。
A: 按供电方式分

在这里插入图片描述

Q: 2010 年1月,传感(物联)网技术产业联盟在无锡成立。
A: 正确
Q: 微机中访问速度最快的存储器是(   )。
CD-ROM // 只读光盘
硬盘 
U盘
内存 // DRAM

A:内存
Q: unsigned int a= 0x1234; unsigned char b=*(unsigned char *)&a; 在32位大端模式处理器上变量b等于()?
A: 0x00

在这里插入图片描述

在这里插入图片描述

Q: 构造 LR 分析器的任务就是产生 LR 分析表。 ()
A: 正确
Q: 正规文法产生的语言都可以用上下文无关文法来描述。 ( )
A: 正确
Q: 控制令牌是一种传输媒体访问控制方法。下列说法中正确的是(    )。
A: 一个站只有它占有令牌时,才能发送数据帧
Q: 某计算机内存空间按字节编址,若某区域的起始地址为:4A000H,终止地址为4DFFFH,则该段内存区域的容量是( )[进制转换计算]
A: 16KB = 4DFFFH - 4A000H + 1H = 4000H =100 0000 0000B = 2^16

编译原理

Q: 以下说法不正确的是(  )。
线性流水线是单功能流水线
动态流水线是多功能流水线
静态流水线是多功能流水线
动态流水线只能是单功能流水线

A:动态流水线只能是单功能流水线

在这里插入图片描述

Q: 循环控制指令LOOPNZ继续执行循环的条件是(  )。
CX≠0且ZF=1
CX≠0且ZF=0
CX≠0或ZF=1
CX≠0或ZF=0
A: CX≠0且ZF=0

在这里插入图片描述

Q: 完成对DX的有符号数除以2的指令是(   )
A: SAR  DX,1

在这里插入图片描述

编程基础

Q: 多总线结构的计算机系统,采用_____方法,对提高系统的吞吐率最有效。
A: 多端口存贮器

在这里插入图片描述

Q: 用DOS命令DEL F?.E*可删除的文件是(  )
F1.EXE
FA.BAK
FILE.EXE
FIST.E3

A: F1.EXE

在这里插入图片描述

Q: 自然码编码方法应归为(  )
A: 音形码

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值