数据库基础知识

事务四大特性(简称ACID) 

1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。

2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。

3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。

4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。     

 

3.

解析如下:
一、什么是索引:
简单的来说,建立索引在进行数据库操作的时候不需要全盘一条条的扫描,删选出符合的记录,索引内部自己有一套优化算法,因此借助索引来对数据库进行操作可以提高查询的效率。
 
二、什么时候建立的索引将失效或效率不高(情况有很多,这里列举常见的几种, 假设在字段name上建立了索引):
1、使用了运算符!=,以及关键字not in, not exist等,认为产生的结果集很大,往往导致引擎不走索引而是走全盘扫描
2、对索引字段使用了函数,如where substr(name, 1, 3)=‘mark’, 导致索引无效
3、使用like和通配符,第一个字符是%将导致索引失效,如where name like "%ark“  (A正确)
.....
三、order by与索引
首先利用where进行数据查询,这一步是免不了的,至于这一步有没有利用索引暂时不考虑,关键是在获取所有符合的记录后还需要进行排序,看看order by是如何利用索引的。
如果order by中的字段有建立索引,同时:
1、该字段没有出现在where中,则在排序的时候需要正常排序,默认order by是升序排序, 故索引没有对排序产生有利帮助 (B,C错误)
2、该字段同时同时出现在where中,则在获取记录后不进行排序,而是直接利用索引, 效率变高。(D正确)
 
补充: group by也和order by类似
题目中的索引b是降序,而B,C两个选项都是升序,故会导致效率降低。而A,D两个选项没有指定升序降序,故会按照其定义的索引a desc,b desc 来进行操作,故而效率较高。所以选A,D。这是我的想法。。。如有不对,可指正
假设MySQL数据库表:
create table T{
k int unsigned not null auto_increment,
a date,
b varchar(24),
c int,d varchar(24),
primary key(k),unique key a_index (a DESC,b DESC),
key k1(b),key k2(c),key k3(d));
如下哪些sql语句查询能较好的利用索引?()

正确答案: A D   你的答案: A (错误)

select b from WHERE b like 'aaa%';
select a,b from T WHERE a='2015-10-25' ORDER BY b ASC,c ASC;
select a,b,c from T WHERE a='2015-10-25' ORDER BY b ASC;
select a,b,c from T WHERE a='2015-10-25' ORDER BY a,b;

20.
以下方法,哪个不是对add方法的重载?
1
2
3
4
public class Test
{
    public void add( int x,int y,int z){}
}

正确答案: B   你的答案: D (错误)

public int add(int x,int y,float z){return 0;}
public int add(int x,int y,int z){return 0;}
public void add(int x,int y){}
以上都不是

本题知识点

共有25条讨论添加解析

  • 方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
    原则如下:
    一.方法名一定要相同。
    二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
    1.如果参数个数不同,就不管它的参数类型了!
    2.如果参数个数相同,那么参数的类型或者参数的顺序必须不同。
    三.方法的返回类型、修饰符可以相同,也可不同。
 
30.
关于以下application,说法正确是什么?
1
2
3
4
5
6
7
8
9
public class Test {
    static int x=10;
    static {x+=5;}
    public static void main(String[] args) //4
        {
        System.out.println("x="+x);
    }
    static{x/=3;};
}//9

正确答案: B   你的答案: 空 (错误)

4行与9行不能通过编译,因为缺少方法名和返回类型
编译通过,执行结果是:x=5
编译通过,执行结果是:x=3
9行不能通过编译,因为只能有一个静态初始化器

 

 test类加载的时候首先进行静态成员初始化,之后进行静态代码块初始化,x=10,x=10+5,x=15/3
 
这道题主要考察类记载时候的初始化问题,执行这个类的 main方法,会导致类进行加载,而类加载的属性如下
 1、虚拟机在首次加载Java类时,会对静态初始化块、静态成员变量、静态方法进行一次初始化。我们不要去纠结这里的顺序,一般来说我们只需要知道,静态方法一般在最后。
 2、只有在调用new方法时才会创建类的实例
 3、类实例创建过程:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法;再执行本类继承的子类的初始化块,最后是子类的构造方法
 4、类实例销毁时候,首先销毁子类部分,再销毁父类部分
 
 
100.

选a,c,d,only public & abstract are permitted

你既然定义了interface(接口),那肯定是要其它的类去实现它的, 不然你定义它干吗,所以不能用protected去修饰, 而要用public去修饰。

 

110.switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型。String类型是java7开始支持。 

posted @ 2016-10-09 15:36  跨境电商杂货铺  阅读(204)  评论(0编辑  收藏  举报