首页 > 其他分享 >牛客软件开发专项练习-Day2

牛客软件开发专项练习-Day2

时间:2024-11-01 19:48:32浏览次数:5  
标签:软件开发 Day2 代理 牛客 拥塞 Cookie 数据 id select

1.下列叙述中正确的是(A)

A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的

B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

C.顺序存储结构能存储有序表,链式存储结构不能存储有序表

D.链式存储结构比顺序存储结构节省存储空间

解释:链式存储结构既可以针对线性结构也可以针对非线性结构,所以B与C错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以D错误

2.IP协议属于(网络互联层)

知识补充:

OSI-RM层级结构——七层抽象模型

自下向上分别为:物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。

各层的代表协议与技术:

物理层IEEE 802.3(以太网)、IEEE 802.11(无线局域网/WIFI)、USB、DSL
数据链路层以太网、PPP(点对点协议)、ARP(地址解析协议)
网络层IP、ICMP、IGMP、RIP、OSPF、BGP       
运输层TCP、UDP
会话层RPC、PPTP(点对点隧道协议)
表示层SSL/TLS
应用层HTTP、FTP、SMTP、POP3、DNS

3.若元素a,b,c,d,e,f依次进栈,允许进栈 、 退栈操作交替进行。但不允许连续三次进行退栈操作,则不可能得到的出栈序列是(D)

A. d, c, e, b, f, a

B. c, b, d, a, e, f

C. b, c, a, e, f, d

D. a, f, e, d, c, b

4.mysql 数据库有选课表 learn(student_id int,course_id int),字段分别表示学号和课程编号, 现在想获取每个学生所选课程的个数信息,sql 语句正确的是

(select student_id,count(course_id)from learn group by student_id)

5.设哈希表长为8,哈希函数为Hash (key)=key%7。初始记录关键字序列为(32,24,15,27,20,13),用链地址法作为解决冲突方法的平均查找长度是(1.5)

解释:链地址法如下

核心思想:对某个元素的查找,如果冲突那么查找次数+1

32%7=4(查一次)24%7=3(查一次)15%7=1(查一次)

27%7=6(查一次)20%7=6(查两次)13%7=6(查三次)

ASL=(1*4+2*1+3*1)/6=1.5

6.有B+Tree、Hash_Map、STL Map三种数据结构。对于内存中数据,查找性能较好的数据结构是(Hash_Map),对于磁盘中数据,查找性能较好的数据结构是(B+Tree)

解释:

Hash操作能根据散列值直接定位数据的存储地址,设计良好的hash表能在常数级时间下找到需要的数据,但是更适合于内存中的查找。
B+树是一种是一种树状的数据结构,适合做索引,对磁盘数据来说,索引查找是比较高效的
STL_Map的内部实现是一颗红黑树,但是只是一颗在内存中建立二叉树树,不能用于磁盘操作,而其内存查找性能也比不上Hash查找。

7.数据库中,事务的持续性是指(B)

A.事务中包括的所有操作要么都做,要么不做

B.事务一旦提交,对数据库的改变时永久的

C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的

D.事务必须是使数据库从一个一致性状态变到另一个一致性状态

解释:考察的事务的ACID特性

  • 原子性(ATOMIC)整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节
  • 一致性(Consistency)在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏
  • 隔离性(Isolation)两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时中间某一时刻的数据
  • 持久性(Durability)在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

8.下面(B)组命令,将变量count值赋值为1

A.DIM@count=1 count=1

B.DECLARE @count SELECT @count=1

C.DECLARE count SELECT count=1

D.DIM @count SELECT @count=1

解释:

@表示声明一个局部变量,@@表示声明一个全局变量(比如已经定义好的系统变量)

申明局部变量语法:declare @变量名 数据类型;例如:declare @num int;

赋值:有两种方法式(@num为变量名,value为值)

set @num=value;   或   select @num=value;

9.B+树是(B)

A.一种AVL树

B.索引表的一种组织形式

C.一种高度不小于1的树

D.一种与二进制Binary有关的树

解释:

AVL是平衡二叉排序树的缩写,B+树不一定是二叉树。

B+树可以是空树,C错误。

B+中的B是balanced(平衡的)首字母,与binary无关。

10.下面关于 Cookie 与 Session 的说法中,正确的是(C)

A.Session 数据保存在客户端浏览器

B.会话 Cookie 关闭浏览器之后会存在一段时间

C.Session 的安全性比 Cookie 高

D.Cookie 被禁止时没有办法将 session id 传递回服务器

解释:

A选项,Cookie数据保存在浏览器客户端,而Session数据保存在服务器端。

B选项,Cookie分为会话Cookie持久Cookie,会话Cookie会话结束就会销毁,而持久Cookie会在关闭浏览器后存在一段时间。

C选项,因为Session保存在服务器端,不容易被截获,所以比Cookie 更安全。

D选项,由于cookie可以被人为的禁止,必须有其它的机制以便在cookie被禁止时仍然能够session id传递回服务器,经常采用的一种技术叫做 URL重写,就是把session id附加在URL路径的后面,附加的方式也有两种,一种是作为URL路径的附加信息,另一种是作为查询字符串附加在 URL后面。网络在整个交互过程中终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session id。

11.解析XML时,需要校验节点是否闭合,如必须有与之对应,用(栈)数据结构实现比较好

解析XML类似于<p></p>、<xml></xml>,总而言之就是需要一一配对,自然联想到括号匹配使用的是栈的结构。稍微扩展一下:

栈的常见应用:浏览器历史纪录,Android中的最近任务,Activity的启动模式,CPU中栈的实现,Word自动保存,解析计算式,解析xml/json

12.在 OSI 参考模型中能实现路由选择,拥塞控制与互联功能的层是(网络层)

13.主机甲向主机乙发送一个(SYN=1, seq=11220)的 TCP 段,期望与主机乙建立 TCP 连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的 TCP 段可能是

( SYN=1, ACK=1, seq=11221, ack=11221)

                        

14.下列关于数据库特点的说法中正确的是(A)

A.数据能共享且独立性高

B.数据能共享但数据冗余很高

C.能保证数据完整性但降低了安全性

D.数据独立性高但不能实现共享

解释:数据库管理系统的特点:共享性高,冗余度小;具有高度的物理独立性和逻辑独立性;整体结构化,用数据模型描述。

15.以下那种操作是专门用于完成对数据库数据的查询的?(D)

A.DCL

B.DDL

C.DML

D.DQL

DML (data manipulation language):
它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
DDL (data definition language):
DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
DCL (Data Control Language):

是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL  

 DQL( Data Query Language) 
数据查询语言,数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE字句。

16.主机甲和乙已建立了 TCP 连接,甲始终以 MSS=1KB 大小的段发送数据,并一直有数据 发送;乙每收到一个数据段都会发出一个接收窗口为 10KB 的确认段。若甲在 t 时刻发生超 时时拥塞窗口为 8KB,则从 t 时刻起,不再发生超时的情况下,经过 10 个 RTT 后,甲的发送窗口是(10KB)

解释:按拥塞窗口规则进行计算:当超时后,拥塞窗口减半变为4KB,发送窗口变为1KB,两次RTT后,发送窗口变为4KB,进入拥塞避免,每收到1次进行+1KB;得到结果12KB,但因为接收端传回10KB的确认,因此发送端窗口不能超过10KB;因此选A;

无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有按时收到确认),就要把慢开始门限 ssthresh 设置为出现拥塞时的发送方窗口值的一半(但不能小于2)。

然后把拥塞窗口 cwnd 重新设置为 1,执行慢开始算法。

所以,过程为

1—>2—>4—>8(产生拥塞,门限缩小一半,变为4,cwnd重设为1,此时为t时刻) —>1

—>2—>4(到了门限,不再执行慢开始,执行拥塞避免)—>5—>6—>7—>8—>9—>10(到达接收窗口最大值,保持不变)—>10

17.给出数据表score(stu_id,name,math,english,chinese),下列语句正确的是(D)

A.select *,sum(english) from score

B.delete * from score

C.select stu_id,sum(math) from score

D.select sum(math),avg(chinese) from score

解释:

首先select操作得到的从形式上是一张二维表,实际上可以认为是元组的集合。那么如果想要满足形式上的二维表,在用select进行投影操作时必须要同行同列。

对于A,select sum(english)得到的是所有english列的总和,应该得到的是一行一列的元组。而select *显然得到的是多行多列,这两者显然只能进行笛卡尔积操作,而不能进行连接操作,更不用说连接之后的投影了。

对于B.delete *这个“*”的使用是不合法的,因为delete是以元组为单位进行删除的。select用是为了代表所有的列,delete这样使用会造成*使用的歧异。

对于C,还是来自于A的问题,由于没有显示指明where,也没有进行group by,导致stu_id投影后是一个多行一列的表,而sum(math)则是一个一行一列的表,导致连接操作无法使用,而之后select投影就无从做起。

对于D,两个一行一列的数据拼一起,没有问题。

18.用不带头结点的单链表存储队列,其队头指针指向队头结点,队尾指针指向队尾结点,则在进行出队操作时(队头、队尾指针都可能要修改)

解释:多于一个元素时,只需要修改对头指针就行了,head->next;但当只有一个元素时,head==rear,此时出队的话,队列就会变成空,需要同时修改对头和队尾指针,不然会超出边界

19.在一个多道批处理系统中有P1、P2、P3三个作业,三个作业的I/O操作顺序如下,假设从时刻0ms开始进行作业调度,且同一作业中存在数据相关,下列选项中正确的是(ABC)

P1:计算60ms,I/O 80ms,计算20ms

P2:计算120ms,I/O 40ms,计算40ms

P3:计算70ms,I/O 60ms,计算 60ms

A.假设系统仅有P1、P2两个作业,且P2比P1后到达10ms,则完成P1,P2两个作业大约需要260ms

B.假设系统仅有P1、P3两个作业,且P3比P1后到达10ms,则完成P1,P3两个作业大约需要260ms

C.假设系统仅有P2、P3两个作业,且P3比P2后到达10ms,则完成P2,P3两个作业大约需要310ms

D.假设系统仅有P1一个作业,则完成作业P1大约需要80ms

核心:由于作业存在数据相关,则同一个作业在进行I/O时,不能进行CPU计算。

以A选项为例

                

20.下列关于正向代理和反向代理描述正确的是?(BCD)

A.Nginx只能用于反向代理

B.正向代理主要用于客户端代理

C.反向代理主要用于服务端代理

D.反向代理可以向用户屏蔽服务端细节

解释:Nginx既可以用于正向代理也可以用于反向代理。正向代理主要用于客户端代理,需要为客户端配置一个代理服务器,进一步通过代理服务器去访问外部资源。反向代理接收外部请求后,转发至内部服务器进行处理,可以屏蔽内部服务器细节。

正向代理(Forward Proxy)

定义: 正向代理是客户端通过代理服务器来间接访问目标服务器。代理服务器位于客户端和目标服务器之间。

反向代理(Reverse Proxy)

定义: 反向代理是代理服务器位于客户端和目标服务器之间,但代理的目的是代表一个或多个服务器而不是客户端。

安全性: 它可作为对内部服务器的保护层,不公开内部服务器的真实地址给外部用户,从而提高安全性。

标签:软件开发,Day2,代理,牛客,拥塞,Cookie,数据,id,select
From: https://blog.csdn.net/Cchengzu/article/details/143340909

相关文章

  • 牛客软件开发专项练习-Day4
    1.下面关于并行和并发的区别,说法错误的是(C)A.并发计算是一种程序计算的形式,在系统中,至少有两个以上的计算在同时运作,计算结果可能同时发生B.并行计算指许多指令得以同时进行的计算模式。在同时进行的前提下,可以将计算的过程分解成小部份,之后以并发方式来加以解决C.并行是同时......
  • 软件开发中,做产品与做项目有什么区别
    产品开发和项目开发的区别主要体现在:1.目标不同;2.开发过程不同;3.涉及人员不同;4.时间周期不同;5.结果测评不同。总的来说,产品开发更多侧重于满足市场需求和用户体验,长期维护并进行持续优化;而项目开发更注重完成特定的任务,达到预定的目标。1.目标不同产品开发的目标是创建出能满......
  • “范式杯”2023牛客暑期多校训练营1
    现在真的啥也不会了。。。D Chocolate首先考虑极端情况,1$\times$1的网格的话,先手必输。考虑其他情况,如果只能一个一个吃的话,显然是和奇偶相关的。对于先手来说,偶数自己赢,奇数是自己输。那么在矩阵中,虽然有着限制,但通过推小的例子可以发现,两方还是可以控制吃的数量的。对于先手......
  • 牛客网刷题(4)(Java之(static)静态变量、静态方法、静态代码块、静态内部类)
    目录一、static关键字。(1)牛客网题目。(2)总结。<1>静态变量。(类变量)1、特点。2、补充与注意。3、代码演示。<2>静态方法1、特点。2、补充与注意。3、代码演示。<3>静态代码块。1、特点。2、补充与注意。3、代码演示。<4>静态内部类。1、特点。2、注意事项。3......
  • 微软公司如何管理软件开发的?
    微软是全球知名的科技巨头。成立于1975年,由比尔・盖茨与保罗・艾伦创办。在软件领域,微软的Windows操作系统占据全球重要市场份额,为个人电脑和企业提供了强大、稳定且易用的操作平台。其办公软件套装MicrosoftOffice,包括Word、Excel、PowerPoint等,是全球办公场景的......
  • Day26--冒泡排序
    Day26--冒泡排序冒泡排序无疑是最为出名的排序算法之一:总共有八大排序!冒泡的代码还是相当简单的,两层循环:外层冒泡轮数,里层依次比较:江湖中人人尽皆知。我们看到嵌套循环:应该立马就可以得出这个算法的时间复杂度为O(n²)。思考:如何优化?1.冒泡排序的思路理解:一、冒泡排序的起......
  • 2024 牛客多校 1
    T1ABitCommon首先只需要考虑所有放了奇数的位置。发现所有奇数去掉最低位置后的\(\texttt{AND}\)和为\(0\),也就是最低位外每一位上至少有\(1\)个\(0\)。放偶数的位置怎么填都无所谓。枚举有几个奇数,答案即为\(\sum\limits_{k=1}^n\binom{n}{k}(2^k-1)^{m-1}2^{(......
  • 物品复活软件开发
    BuildinganItemManagementSoftwareUsingPyQt5andSQLiteInthisblog,we'llexplorethecreationofanItemManagementGUIusingPyQt5andSQLite,aligningwiththePSP2.1(PersonalSoftwareProcess)framework.PlanningBeforedivingintodevelop......
  • 一个完整的软件开发流程
    一、开发流程图二、过程产物及要求本表主要列出开发阶段需要输出的过程产物,包括产物名称、成果描述、负责人及备注,即谁、在什么时间、应该提供什么内容、提供内容的基本方向和形式是什么。三、过程说明(一)项目启动1、产品经理和项目干系人确定项目方向,产品型项目......
  • 2024牛客暑期多校训练营10 - VP记录
    A.SurrendertoMyWill直接判断当前是否不可翻盘。点击查看代码#include<cstdio>usingnamespacestd;intmain(){ charstr[10];scanf("%s",str); inty=0,n=0; for(inti=0;i<5;i++) { if(str[i]=='Y')y++; if(str[i]=='N')n++; ......