牛客网day04

一.选择题

1.文件传输协议是( )上的协议
网络层
运输层
应用层
物理层
2.对于int a[1],可以用a++来指向数组的第二个元素


解析:数组内只有一个元素所以下一个地址不为数组元素地址
3.哪一个协议用来将IP地址映射为MAC地址?
TCP/IP//传输协议
RARP//将MAC转化为IP
ARP
AARP
4.单链表的存储密度()
大于 1;
等于 1;
小于 1;
解析:首先公式是:存储密度=单链表数据项所占空间/结点所占空间 。
说到存储密度,我们通常会将链表和顺序表进行比较。
顺序表的空间全部用来存储数据,没有浪费空间,所以每个元素的存储密度为1。
而链表的每个结点除了存放数据元素,还要附加一个指示元素之间逻辑关系的指针,每个元素并非全部用来存储数据项,因此肯定小于1。
也因而从结点的存储密度上讲,顺序表的存储空间利用率较高。
5.假设某C工程包含a.c和b.c两个文件,在a.c中定义了一个全局变量foo, 在b.c中想访问这一变量时该怎么做?
在b.c中同样定义同名的foo
a.c中声明时extern int foo
b.c中声明时extern int foo
在一个工程中就可以访问到,不用做任何操作
6.下列选项中,会导致用户进程从用户态切换到内核的操作是?
I. 整数除以零
II. sin( )函数调用
III. read系统调用
仅 I、II
仅 I、III
仅 II 、III
I、II和III
解析:切换内核操作:
a. 系统调用
b. 异常
c. 外围设备的中断
7.关系中行、列次序的交换性质是( )
行可交换,列不可交换
行不可交换,列可交换
行、列均不可交换
行、列均可交换
解析:行和列均可交换,因为交换了行和列,元组是不会改变得
8.设有5000个待排序的记录的关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列哪个方法可以达到此目的()
快速排序
堆排序
归并排序
插入排序
解析:1.取出10个数先进行堆排序。
2.依次遍历剩下的5000-10个数,每读一个数,跟堆里最大的数进行比较,如果比堆里的最大数还大,将其舍弃读下一个数,如果比堆里的最大数小,删除最大数,将其插入到原最大数位置,并进行堆排序。
3.重复2中步骤直至5000-10个数遍历完成。
这种做法的堆排序实际上并没有将5000个数全部变为有序。
显然其他排序方法无法达到这样的效果。
9.下列不属于hash碰撞解决方法的是()。
线性探测
单旋转法
二次探测
拉链法
双重散列
多重散列
解析:常见哈希冲突解决办法:
1.开放地址法 2.线性探测法 3.链地址法(拉链法) 4.二次探测法
5.伪随机探测法 6.再散列(双重散列,多重散列) 7.建立一个公共溢出区
单旋转法是建立散列函数的一种方法, ,将最后一位数,旋转放置到第一位
常见的散列函数有,直接定址法,数字分析法,平法取中法,取余法,折叠法,随机法
10.下面关于二叉搜索树正确的说法包括________。
待删除节点有左子树和右子树时,只能使用左子树的最大值节点替换待删除节点。
给定一棵二叉搜索树的前序和后序遍率历结果,无法确定这棵二叉搜索树。
给定一棵二叉搜索树,根据节点值大小排序所需时间复杂度是线性的。
给定一棵二叉搜索树,可以在线性时间复杂度内转化为平衡二叉搜索树。
解析:A可以用右子树最小结点来替代 错误
B无法保证用先序和后序唯一确定一棵二叉树,是因为无法保证区分左右孩子。比如根节点缺失左子树或右子树这样两种不同的拓扑结构,其先序和后序遍历很可能是完全一样的。
但某些情况下,比如,如果二叉树是真二叉树,那么树中各节点有0个或2个孩子,这时就可以确定左右孩子次序,这时先序和后序可以唯一确定一棵二叉树。
C 正确, 中序遍历就可以了
D 如果允许额外的存储空间,可以先按照C生成一个排好序的数组,然后不断的找mid节点作为根来构造平衡树就是线性的,如果不允许额外空间只能靠旋转的话无法用线性时间。因为题目是单选,只能理解为不允许额外的存储空间了,

二.编程题

给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
输入描述:
输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。

输出描述:
输出保留下来的结果。

import java.util.Scanner;
public class Main{
    public String DeleteNumbare(String str,int cnt){
        StringBuffer bf=new StringBuffer();
        bf.append(str);
        for(int i=0;i<cnt;i++){//要删除的数的个数
            int j=0;//每遍历一次重置一次
            while(j+1<str.length()&&str.charAt(j)>=str.charAt(j+1)){//前一个数比后一个数大继续向后判断
                j++;
            }
            bf.deleteCharAt(j);//如果前一位比后一位小则删除该位数
            str=bf.toString();
        }
        return str;
    }
    public static void main(String[] args) throws Exception{
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        int cnt=sc.nextInt();
        System.out.println(new Main(). DeleteNumbare(str,cnt));
    }
}
牛客网的课程《Linux高并发服务器开发》中包含了项目笔记,其中涉及到了WebServer的开发。根据引用的信息,这门课程的学习进度可能由于个人原因而拖延了一段时间。在第五章的项目学习中,可能包含了关于多进程服务器开发的学习内容。不过具体的学习笔记可能还没有迁移到pad上,暂时无法获取详细的内容[2]。根据引用,在服务器开发中,使用Reactor和多线程的方法可以提高效率,并充分利用多核CPU的性能优势。然而,使用多线程开发可能需要在各自的线程上加锁保护临界区数据,相对较为复杂。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [牛客网c++web服务器项目学习笔记-第0章 课程介绍](https://blog.csdn.net/weixin_45139984/article/details/132205586)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【牛客网C++服务器项目学习】Day12-网络编程的两种事件处理模式](https://blog.csdn.net/qq_42518941/article/details/122283291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值