Java部分常见面试题(四)

1:java线程的生命周期
新建(New)、就绪(Runable)、运行(Running)、阻塞(Blocked)和死亡(Dead)
1:新建状态 Thread t = new MyThread();
2:就绪状态 调用线程对象的start()方法(t.start();),线程即进入就绪状态。
3:运行状态 当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态
4:处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才 有机会再次被CPU调用以进入到运行状态。根据阻塞产生的原因不同,阻塞状态又可以分为三种:
1.等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;
2.同步阻塞 – 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;
3.其他阻塞 – 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
5:死亡状态 线程执行完了或者因异常退出了run()方法,该线程结束生命周期。
详情参考:https://www.cnblogs.com/lwbqqyumidi/p/3804883.html
2:什么是冒泡排序
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端

    public static void BubbleSort(int[] arr) {
        int temp;//定义一个临时变量
        for(int i=0;i<arr.length-1;i++){//冒泡趟数
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j+1]<arr[j]){
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
    public static void main(String[] args) {
        int arr[] = new int[]{1,6,2,2,5};
        BubbleSort.BubbleSort(arr);
        System.out.println(Arrays.toString(arr));
    }

3:计算某个数的阶乘

public int method(int n)
{
	int sum =1;
	for(int i=1;i<=n;i++)
{
	sum*=i;
}
	return sum;
}

4:编写99乘法表

    public static void main(String[] args) {
        for(int i=1;i<=9;i++) {
            for(int j=1;j<=i;j++) {
                System.out.print(j+"×"+i+"="+i*j+"\t");// \t 跳到下一个TAB位置
            }
            System.out.println();
        }
    }

5:java中的i/o流
1:输入流(Input Stream) 和输出流(Output Stream)
2:节点流(Node Stream) 和处理流(Processing Stream)
3:字符流(Character Stream) 和字节流(Byte Stream)
常用I/O流类型
FileInputStream 和FileOutputStream
FileInputStream用于读取本地文件中字节数据,FileOutputStream用于将字节数据写出到文件中
详情见:https://blog.csdn.net/anye529/article/details/6049722
6:java中常见的异常
1:NullPointerException - 空指针引用异常
2:ClassCastException - 类型强制转换异常。
3:IllegalArgumentException - 传递非法参数异常。
4:ArithmeticException - 算术运算异常
5:ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
6:IndexOutOfBoundsException - 下标越界异常
7:NegativeArraySizeException - 创建一个大小为负数的数组错误异常:
8:NumberFormatException - 数字格式异常
9:SecurityException - 安全异常
10:UnsupportedOperationException - 不支持的操作异常

猜你喜欢

转载自blog.csdn.net/qq_41193701/article/details/92397539