interview summary two

1.为什么说创建非主键索引会降低更新速度,提高查询速度?

索引占用磁盘空间,更新表的数据的时候,不仅要更新表的字段信息,还要更新相关的索引数据,以保证索引信息是准确的;这个问题致使IO 访问量较大增加,不仅仅影响了更新 Query 的响应时间,还影响了整个存储系统的资源消耗,加大了整个存储系统的负载。

索引表的数据在存储的时候,所有的数据记录都是和排序后的主键列一起存储在数据系统中的,当查询的时候,只需要找到主键就可以查到整条信息。而标准表查询的时候,首先要找到rowid列,然后查询主键信息,再查询相应的信息。所以索引表的查询速度快于标准表的查询速度。

http://www.ppkao.com/oracle/2011/73241.html

http://blog.csdn.net/wocaonima123987/article/details/8007370

http://zhidao.baidu.com/question/329151362.html

 

2.将对象Student作为HashMap的key,请写出重写方法

我们自己写的类Student是继承自Object的,Object的hashcode方法对每个对象返回的结果是不一样的,所以我们自己需要重写equals()和hashcode().

public class Student {

    public String name = "";
    public int age = "";  
    public Student(String name,int age) {
            this.name = name;
            this.age = age;
    }

    public boolean equals(Object o ) {
        return  (o instanceof Sudent) && ((Student)o).name.equals(this.name) &&((Student)o).age == this.age
    }

    public int hashcode() {
        return this.name.hashcode() / this.age;
    }
}

3.进程和线程的区别

进程是一个程序在其 自身的地址空间中的一次执行活动。
进程是资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源,而程序不能申请系统资源,不能被系统调度,也不能作为独立运行的单位,因此,它不占系统的运行资源。
线程:进程中的一个单一的连续控制流程。一个进程可以拥有多个线程。
线程又称轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。
系统会为每个线程分配一个时间片。
在java中每个线程都 有一个优先级。
java运行时系统实现了一个用于调度线程执行的线程调度器,用于确定某一时刻由哪个线程在CPU上运行。
在java中,线程通常是抢占式的而不需要时间片分配进程(分配给每个线程相等的CPU时间的进程),但实际上只有一个线程在运行。该线程一直运行到它终止进入等待状态,或者另一个具有更高优先级的线程变成可运行状态。在后一种情况下,低优先级的线程被高优先级的线程抢占,高优先级的线程获得运行的机会。
java线程调度器支持不同优先级线程的抢占方式,但其本身不支持相同优先级线程的时间片轮换。
java运行时系统所在的操作系统支持时间片的轮换,则线程调度器就支持相同优先级线程的时间片轮换。

 

4.

 

posted on 2013-06-09 18:47  xmmprincess  阅读(145)  评论(0)    收藏  举报

导航