7.16 多益网络笔试

在战盟客户端上进行的笔试

1.链表不具有的特点是()

A 可随机访问任意元素   B 不必事先估计存储空间

C 插入数据元素时不需移动数据元素  D 删除数据元素时不需移动数据元素

A为顺序表的特点

2.栈的特点

后进先出

3.线性数据结构有哪些()

线性的数据结构有:线性表、栈、队列、双端队列、数组和串

4.下列排序算法中,其时间复杂度和记录的初始排列无关的是 ( ) 

A.插入排序  B.堆排序  C.快速排序  D.冒泡排序

5.哪种排序法对1234576最快()

基本有序

6.第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。这是哪种排序方法的工作原理

选择排序

7.一共三个结点的二叉树可能出现多少种结构

5种

8.一个数据库有几个模式

数据库领域公认的标准结构是三级模式结构,它包括外模式、概念模式、内模式

9.一个数据库中现有A、B、C、D、E、F六个语句,但目前这个数据库是不协调的。必须删除某些语句才能恢复数据库的协调性。已知: (1) 如果保留语句A,那么必须保留语句B和语句C。 (2) 如果保留语句E,则必须同时删除语句D和语句C。 (3) 只有保留语句E,才能保留语句F。 (4) 语句A是重要的信息,不能删除。 以上各项如果为真,则以下哪项一定为真()

A.保留语句E并且删除语句C

B.同时保留语句C和语句D

C.保留语句E并且删除语句D

D.同时删除语句E和语句F

10.对滑动窗口不正确的描述是()

A.能够提高传输效率
B.能够提高信道利用率
C.能够进行流量控制
D.能够防止报文段顺序出错

11.在一个3 级页表结构的系统中,内存共有8192 页,每页2048 字节。请问内存的物理地址需要多少位?()

24位。

内存有8192*2048=2^24Byte,就需要24位地址来寻址

12.往一个栈顺序push下列元素:ABCDE,其pop可能的顺序,下列不正确的是()

A. BACDE
B. ACDBE
C. AEBCD
D. AEDCB

13.对关键字{25,15,30,10,50,3,5,60}序列进行快速排序,第一趟从小到大一次划分结果为( )
A. {3,5,10,15} 25{50,30,60}

B. {5,15,3,10} 25 {50,30,60}

C. {3,15,10,5} 25 {50,30,60}

D. {5,15,3,10} 25 {30,50,60}

题目解析:

本题快排采用枢轴交换的方式:

从右往左,第一个比25小的数,和25交换位置。

从左往右,第一个比25大的数,和25交换位置。

......

直到25左边没有比其大的数,右边没有比其小的数。

14.稳定的排序算法与时间复杂度

稳定的排序算法:冒泡排序、插入排序、归并排序、基数排序

不稳定的排序算法:选择排序、快速排序、希尔排序、堆排序

冒泡排序、直接插入排序、选择排序:O(n*n)

快速排序、归并排序、堆排序:log2(n)*n

希尔排序:n的1.2次幂

15.一颗二叉树有10个度为1的结点,7个度为2的结点,则该二叉树共有结点个数为()

25个

 16.一个具有n个顶点的有向图,其所有顶点的出度之和为Dout,则所有顶点的入度之和为( )

 A.Dout  B.Dout-1  C.Dout+1  D.n

17.一个具有n个结点的二叉树,若他有m个叶子结点,则该二叉树中度为1的结点个数是多少()

n-2m+1

18.设数组定义为a[60][70],每个元素占2个存储单元,数组按照列优先存储,元素a[0][0]的地址为1024,那么元素a[32][58]的地址为()

8048

19.()是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。

队列

20.进程和线程在拥有资源方面的区别

21.tcp协议是面向字节流的网络协议,这意味着()

 意味着数据是以字节流的形式传递给接收者的,没有固定的“报文”或“报文边界”的概念。

22.应用层如何解决没有消息边界的问题

1.发送固定长度消息

2.将消息长度与消息一起发送

3.使用特殊标记分隔消息

23.数据表字段char和varchar的区别

24.求数组中a+b+c=0的所有满足条件且不重复的三元组

题目描述
给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?找出数组S中所有满足条件的三元组。

解题思路:
三个之和相加等于0,
1、那么需要将所给数组进行从小到大进行排序。
2、如果排序后第一个数大于0,则他们之和用于不能为0,返回null;
3、以第一个数作为基准不动,定义其他两个指针(双指针),依次动第二位和最后一位进行遍历判断

 public ArrayList<ArrayList<Integer>> threeSum(int[] num) {
        ArrayList<ArrayList<Integer>> res=new ArrayList<>();
         //1、数组不够三个数字,直接返回
        if(num==null || num.length<3){
            return res;
        }
        // 从小到大排序
        Arrays.sort(num);
        for(int i=0;i<num.length-2;i++){
            if(num[i]>0){
                break;// 如果当前数字大于0,则三数之和一定大于0,所以结束循环
            }
            //重复的三个数不算
            if(i>0 && num[i]==num[i-1]){
                continue;// 去重
            }
            //定义两个指针,从前往后 和 从后往前 
            int L=i+1;
            int R=num.length-1;

            while(L<R){
                int sum=num[i]+num[L]+num[R];
                if(sum==0){
                    ArrayList<Integer> list=new ArrayList<>();
                    list.add(num[i]);
                    list.add(num[L]);
                    list.add(num[R]);
                    res.add(list);
                     //去重
                    while(L<R && num[L]==num[L+1]){
                        L++;
                    }
                     //去重
                    while(L<R && num[R]==num[R-1]){
                        R--;
                    }
                    L++;
                    R--;
                }
                else if(sum>0){
                    R--;
                }
                else if(sum<0){
                    L++;
                }
            }
        }
        return res;
    }
  • 45
    点赞
  • 241
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值