2019-08-20 刷题知识点

1.栈是一种线性结构(常见有:线性表,栈,队列等),具有先进后出的特征,也就是后进先出。

2.Java单继承,多实现:一个类可以同时实现多个接口,但是只能继承自一个类,但它可以被多个类继承,也就是说一个类只有一个直接父类,但是可以有多个子类。

3.快速排序总比简单排序快。(×)
快排就整体性能来说比较较快,但是也需要分情况,在序列基本有序的情况下,时间复杂度反而高。

4.文件系统和数据库系统的主要区别是,文件系统不能解决数据冗余和数据独立性问题,而数据库系统可以解决。
文件系统中存在的数据冗余和数据独立性问题,在数据库系统中可以得到改善和解决。因为文件系统中,文件之间没有联系,有时会出现一个数据存在于多个文件中的情况(数据冗余),这在数据更新时可能会造成影响,不利于保持数据一致性。

5.消费记录金额分别为900,512,613,700,810,若采用选择排序算法对其进行从小到大的排序,第三趟排序结果为:512613700900810
选择排序的工作原理是每一次从待排序的数据元素中选出最小( 或最大)的一个元素,存放在序列的起始位置,在剩余的未排序的元素中继续重复上述操作,直至全部待排序的元素排完。所以本题的解题过程:
第一趟排序:512 900 613 700 810
第二趟排序:512 613 900 700 810
第三趟排序:512 613 700 900 810

6.如果两个关键字的值不等但哈希函数值相等,则称这两个关键字为同义词。(√)
散列函数:一个把查找表中关键字映射成该关键字对应的地址的函数,记为Hash(key)=Addr。(这里的地址可以是数组下标、索引、或内存地址等)
散列函数可能会把两个或两个以上的不同关键字映射到同一地址,称这种情况为“冲突”,这些发生碰撞的不同关键字称为同义词。

7.如果有向图G=(V,E)的拓扑序列不唯一,则图中必有两条弧<Vi, Vj>和<Vj, Vi>。(×)
有向无环图才存在拓扑序列,两条弧<Vi, Vj>和<Vj, Vi>形成环,后面与前面矛盾。

8.学校数据库中有学生和宿舍两个关系:
学生(学号,姓名)和宿舍(楼名,房间号,床位号,学号)
假设有的学生不住宿,床位也可能空闲。如果要列出所有学生住宿和宿舍分配的情况, 包括没有住宿的学生和空闲的床位, 则应执行( 全外联接)https://www.cnblogs.com/yyjie/p/7788413.html

9.执行如下程序,输出结果是(2 24 46 6 )

class Test
{
     private int data;
     int result = 0;
     public void m()
     {
         result += 2;
         data += 2;
         System.out.print(result + "  " + data);
     }
 }
 class ThreadExample extends Thread
 {
     private Test mv;
     public ThreadExample(Test mv)
     {
         this.mv = mv;
     }
     public void run()
     {
         synchronized(mv)
         {
             mv.m();
         }
     }
 }
 class ThreadTest
 {
     public static void main(String args[])
     {
         Test mv = new Test();
         Thread t1 = new ThreadExample(mv);
         Thread t2 = new ThreadExample(mv);
         Thread t3 = new ThreadExample(mv);
         t1.start();
         t2.start();
         t3.start();
     }
 }

Test mv =newTest()声明并初始化对data赋默认值
使用synchronized关键字加同步锁线程依次操作m()
t1.start();使得result=2,data=2,输出即为2 2
t2.start();使得result=4,data=4,输出即为4 4
t3.start();使得result=6,data=6,输出即为6 6
System.out.print(result +" "+ data);是print()方法不会换行,输出结果为2 24 46 6

10.已知有向图G=(V,E),其中V={V1 ,V2 ,V3 ,V4 ,V5 ,V6 ,V7 },E={(V1 ,V2 ),(V1 ,V3 ),(V1 ,V4 ),(V2 ,V5 ),(V3 ,V5 ),(V3 ,V6 ),(V4 ,V6 ),(V5 ,V7 ),(V6 ,V7 )},G的拓扑序列是(V1,V3,V4,V6,V2,V5,V7)
拓扑排序常用来确定一个依赖关系集中,事物发生的顺序。拓扑排序得出的线性序列,只要能满足排在前面的任务先完成即可,例如V1→V2,序列中只要V1在V2前面即可(所以得出的序列可能不唯一)。


10186693-bef2d924111f3d2e.png
image.png

结合图进行拓扑排序,满足下面条件即可:
V1在V2,V3,V4前面
V2,V3均在V5前面
V3,V4均在V6前面
V5,V6均在V7前面
A项 V 1 ,V 3 ,V 4 ,V 6 ,V 2 ,V 5 ,V 7 正好满足要求。

11.给出一个由 n 个数组成的序列 A[1…n] ,要求找出它的最长单调上升子序列,设 m[i] ( 1 ≤ i ≤ n ),表示以 A[i] 结尾的最长单调上升子序列的长度,则 m[1] = 1 , m[i] ( 1 < i ≤ n )为(m[i] = 1 + max{0,m[k](A[k] < A[i],1≤k < i )} )。


10186693-dd3b59b77ed03904.png
image.png

12.JAVA的垃圾回收机制:垃圾回收不能确定具体的回收时间。
java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间,是不可知的。当对象的引用变量被赋值为null,可能被当成垃圾。

13.设有两个事务T1、T2,其并发操作如图2所示,下面评价正确的是( 该操作丢失修改)


10186693-6591594dd886c5ea.png
image.png

事务T2覆盖了事务 T1已提交的数据,造成了事务 T1所做操作丢失,属于--第二类丢失更新。

  1. android 中播放视频的说法不对的是(VideoView组件可以控制播放的位置和大小)
    Android中的videoview控件在android中不能设置宽高,需要重写videoView中的onMeasure()方法,才可以设置videoview的宽和高。至于A选项,SurfaceView是为了绘图而生的,但是用它播放视频也是可以的,一般是SurfaceView+MediaPlayer播放。
    其他正确选项:可以使用SurfaceView组件播视频。可以使用VideoView组件播视频。VideoView播放视频的格式可以是3gp。

15.若 GetHead 【 GetTail 【 GetHead 【 ((a,b),(c,d)) 】】】 = A;, 则A为:b
GeiTail返回除第一个元素之外的元素构成的“子表” ,GeiHead返回第一个 “元素”。
GetHead 【 ((a,b),(c,d)) 】返回第一个元素(a,b)
GetTail (a,b) 返回除第一个元素外的子表(b)
GetHead (b)返回第一个元素 b

16.对大小均为n的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找成功,它们的平均查找长度是相同的,而对于查找失败,它们的平均查找长度是不同的(√)
查找失败的情况下,无序表查找需要更长,
举例:
有序:1 2 3 5 6 7 8 无序:3 2 1 5 6 7 8
当查找4时,有序表只要查到5就可以退出查找,而无序表则需全部遍历
有序表会提前跳出,无序表不会提前跳出。

17.Java语言描述正确的是(java和C++都有三个特征:封装、继承和多态)
A,Java没有指针,只有引用。
C,并不是程序结束的时候进行GC,GC的时间是不确定的,且GC的过程需要经过可达性分析,一个对象只有被标记两次才会被GC。
下图是一个对象被GC的全过程。


10186693-9a30408114446128.png
image.png

18.强连通分量是无向图的极大强连通子图(×)
强连通分量属于有向图,连通分量属于无向图。
强连通分量是有向图的极大强连通子图。
有向图强 连通分量 :在 有向图 G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点 强连通 (strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个 强连通图 。有向图的极大强连通子图,称为强连通 分量(strongly connected components)。

19.在一个基于分布式的游戏服务器系统中,不同的服务器之间,哪种通信方式是不可行的(管道)
可行的:套接字、消息队列、高速缓存数据库。
对于管道,有下面这几种类型:
①普通管道(PIPE):通常有两种限制,一是单工,即只能单向传输;二是血缘,即常用于父子进程间(或有血缘关系的进程间)。
②流管道(s_pipe):去除了上述的第一种限制,实现了双向传输。

③命名管道(name_pipe):去除了上述的第二种限制,实现了无血缘关系的不同进程间通信。
显然,要求是对于不同的服务器之间的通信,是要要求全双工形式的,而管道只能是半双工,虽然可以双向,但是同一时间只能有一个方向传输,全双工和半双工的区别可以如下图示理解:


10186693-f5f84a52debb6982.png
image.png

管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

20.在 E-R 模型转换成关系模型的过程中,正确的是:
每个 M ∶ N 联系类型转换一个关系表。
每个实体类型转换成一个关系表。
1 ∶ N 联系类型时,不可以生成新的关系表
1 ∶ 1联系类型不可以转换成一个新的关系表。

21.有关系模式 A(S , C , M) ,其中各属性的含义是: S :学生; C :课程; M :名次,其语义是:每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生(即没有并列名次),则关系模式 A 最高达到(BCNF )。
BCNF意味着在3NF的基础上,关系模式中每一个决定因素都包含候选键,也就是说,只要属性或属性组A能够决定任何一个属性B,则A的子集中必须有候选键。简单说,存在属性A->属性B,但是属性A不是候选键,则关系模式不满足BCNF。
题目中,分析知,存在(S,C)->M,(C,M)->S,因此(S,C),(C,M)都可以作为候选键,而且不存在部分依赖或者函数依赖,因此关系模式A满足3NF。另一方面,由于除了(S,C),(C,M)外,没有其他的决定因素,就是说没有其他的函数依赖。因此,关系模式A满足BCNF。https://blog.csdn.net/jsj13263690918/article/details/79796275

22.Java和C/C++的比较:
Java不支持指针,C/C++支持。
Java程序不需要显式地关心内存释放,而C/C++需要。

java字符串可以拼接,这个溢出的限定不好判断,但是数组是一定可以溢出的。
Java和C++的区别:

  1. Java是解释型语言,所谓的解释型语言,就是源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了。
  2. C++是编译型语言,所谓编译型语言,就是源码一次编译,直接在编译的过程中链接了,形成了机器码。
  3. C++比Java执行速度快,但是Java可以利用JVM跨平台。
  4. Java是纯面向对象的语言,所有代码(包括函数、变量)都必须在类中定义。而C++中还有面向过程的东西,比如是全局变量和全局函数。
  5. C++中有指针,Java中没有,但是有引用。
  6. C++支持多继承,Java中类都是单继承的。但是继承都有传递性,同时Java中的接口是多继承,类对接口的实现也是多实现。
  7. C++中,开发需要自己去管理内存,但是Java中JVM有自己的GC机制,虽然有自己的GC机制,但是也会出现OOM和内存泄漏的问题。C++中有析构函数,Java中Object的finalize方法
  8. C++运算符可以重载,但是Java中不可以。同时C++中支持强制自动转型,Java中不行,会出现ClassCastException(类型不匹配)。

23.如果Child extends Parent,那么正确的有:
如果Child是interface,那么Parent必然是interface。
如果Child是interface,那么Child可以同时extends Parent1,Parent2等多个interface。
如果Child是class,并且没有显示声明任何构造函数,那么此时仍然会调用Parent的构造函数。
如果Child是class,且只有一个有参数的构造函数,可以调用父类无参的构造函数,子类的有参构造函数和是否调用父类的有参数的构造函数无必然联系。

24.下列描述正确的是:
类不可以多继承而接口可以多实现。
抽象类和接口都不能被实例化。
java支持单继承,却可以实现多个接口。
接口没有构造方法,所以不能实例化,抽象类有构造方法,但是不是用来实例化的,是用来初始化的。
.抽象类可以定义普通成员变量而接口不可以,但是抽象类和接口都可以定义静态成员变量,只是接口的静态成员变量要用static final public 来修饰。

25.哪个正确:
abstract类只能用来派生子类,不能用来创建abstract类的对象。
abstract不能与final同时修饰一个类。
abstract类定义中可以没有abstract方法。
final类不能用来派生子类,因为用final修饰的类不能被继承;
final不能与abstract同时修饰一个类,abstract类就是被用来继承的;
类中有abstract方法必须用abstract修饰,但abstract类中可以没有抽象方法,接口中也可以有abstract方法。

26.(DML、DQL)完成对数据库数据的查询与更新。
DQL(Data Query Language):数据查询语言
关键字:select
查询数据
DML(Data Manipulation Language):数据操作语言
关键字:insert、delete、update
插入、删除、更改数据
DDL(Data Denifition Language):数据定义语言
关键字:create、drop、alter
创建、删除、更改表结构
TCL(Trasactional Conrtol Language):事务控制语言
关键字:commit、rollback
用来提交和回滚事务
DCL(Data Conrtol Language):数据控制语言
关键字:grant、revoke
用来设置或更改数据库用户或角色权限
https://www.cnblogs.com/fan-yuan/p/7879353.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值