笔试题

来源:互联网 发布:oppo手机4g网络不稳定 编辑:程序博客网 时间:2024/06/05 15:21

节点拥有的子树的个数称为节点的度。即没有子节点的节点的度为0.
SQL的WHERE子句不能含有聚合函数。eg: sum() avg() group by

Java的序列化有两种方法:
1,实现Serializable接口,并继承相应的方法,java.io.Serializable接口,将对象状态转为可保持或传输格式的过程
2,实现Externalizable接口,并复写 writeExternal()方法和readExternal()方法

wait()和notify(),notifyAll()需要用在同步方法/代码块中吗?

于wait()方法在等待前释放了锁并且在wait()方法返回之前重新获得了锁,我们必须使用这个锁来确保检查条件(缓冲区是否已满)和设置条件(从缓冲区取产品)是原子的,而这可以通过同步块或者同步方法实现。

简而言之,我们从同步块或者同步方法中调用wait(),notify()和notifyAll()方法可以避免:

IllegalMonitorStateException,如果我们不通过同步环境(synchronized context)调用这几个方法,系统将抛出此异常wait()和notify()之间任何潜在的竞争条件。wait方法,需要使用try..catch..捕捉异常,不然会出现InterruptedException异常,wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待,直到获得锁或者被中断。wait(long timeout)设定一个超时间隔,如果在规定时间内没有获得锁就返回。调用该方法后当前线程进入睡眠状态,直到一下事件发生:1,其他线程调用了该对象的notify方法2,其他线程调用了该对象的notifyAll方法3,其他线程调用了interrupt中断该线程。4,时间间隔到了。此时线程就可以调度了,如果是被中断的话就抛出一个InterruptedException异常。notify方法,该方法唤醒在该对象上等待的某个线程。notifyAll方法,该方法唤醒在该对象上等待的所有线程。

java中volatile的作用

volatile让变量每次在使用的时候,都从主存中取,而不是从各个线程的”工作内存”。
volatile具有synchronized的可见性,而不具有原子性。volatile变量对于每次使用,线程都能得到当前volatile变量的最新值,但volatile变量并不保证原子性,即不保证并发的正确性。

1,输入一个正整数N,输出连续正整数和为N的正整数。

public static void main(String[] args){    Scanner sc=new Scanner (System.in);    while(sc.hasNext()){        int n=sc.nextInt();        int beg=1;        int sum=1;        int c=1;        while(beg<=n/2+1){            if(sum==n){                for(int k=beg;k<=c;k++) {                    System.out.print(k+" ");                }                System.out.println();                sum=sum-beg;                beg++;                c++;                sum+=c;            }            if(sum>n){                sum=sum-beg;                beg++;            }else{                c++;                sum+=c;             }        }    }}

输入: 9
输出:
2 3 4
4 5

2,两个排好序的数组一和数组二,输出只在数组一中而不在数组二中的元素。

public static void main(String s1,String s2){    String[] ss1=s1.trim().split(" ");    String[] ss2=s2.trim().split(" ");    ArrayList<String> list1=new ArrayList<String>();    ArrayList<String> list2=new ArrayList<String>();    for(int i=0;i<ss1.length;i++){        list1.add(ss1[i]);    }    for(int i=0;i<ss2.length;i++){        list2.add(ss2[i]);    }    list1.removeAll(list2);    //Collection的removeAll()方法,boolean removeAll(Collection<?> c)移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。此调用返回后,collection 中将不包含任何与指定 collection 相同的元素。     //retainAll boolean retainAll(Collection<?> c)仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。换句话说,移除此 collection 中未包含在指定 collection 中的所有元素    Iterator<String> it=list1.iterator();    while(it.hasNext()){        System.out.print(it.next()+" ");        } }
0 0
原创粉丝点击