面试总结(一)

1、String,StringBuffer,StringBuilder区别

(1)从执行速度上来讲,StringBuilder > StringBuffer > String

String最慢的原因:

  String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。

(2)从线程安全上来说,StringBuilder是线程不安全的,而StringBuffer是线程安全的

总结:

String:适用于少量的字符串操作的情况

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况


2.线程生命周期及其作用

新建状态:当程序使用new关键字创建了一个线程之后,该线程就处于新建状态

就绪状态:当线程对象调用了start()方法之后,该线程处于就绪状态

运行状态:如果处于就绪状态的线程获得了CPU,开始执行run方法的线程执行体,则该线程处于运行状态

阻塞状态:

当发生如下情况下,线程将会进入阻塞状态:

  1. 线程调用sleep方法主动放弃所占用的处理器资源。

  2. 线程调用了一个阻塞式IO方法,在该方法返回之前,该线程被阻塞。

  3. 线程试图获得一个同步监视器,但该同步监视器正被其他线程锁持有。关于同步监视器的知识将在后面有更深入的介绍。

  4. 线程在等待某个通知(notify)。

  5. 程序调用了线程的suspend方法将该线程挂起。不过这个方法容易导致死锁,所以程序应该尽量避免使用该方法。

死亡状态:

线程会以以下三种方式之一结束,结束后就处于死亡状态:

  1. run()方法执行完成,线程正常结束。

  2. 线程抛出一个未捕获的Exception或Error。

  3. 直接调用该线程的stop()方法来结束该线程——该方法容易导致死锁,通常不推荐使用。


3.冒泡排序和选择排序

  1. for(int i =0;i < score.length - 1;i++)  
  2.         {  
  3.             for(int j = 0;j <  score.length - 1-i;j++)// j开始等于0,  
  4.             {  
  5.                 if(score[j] < score[j+1])  
  6.                 {  
  7.                     int temp = score[j];  
  8.                     score[j] = score[j+1];  
  9.                     score[j+1] = temp;  
  10.                 }  
  11.             }  
  12.         }  
  int[] arr = {5,3,7,2,6,7,6,5,4,1,9,8};
                                //第一次循环,是确定一个数依次和后面数的比较的数。
                                for (int i = 0; i < arr.length -1 ; i++) {
                                   //这个是和第一个数的比较的数
                                    for (int j = i+1; j < arr.length; j++) {
                                      //定义一个临时的变量,用来交换变量
                                       int temp ;  
                                       if(arr[i]>arr[j]){
                                            temp =  arr[i];
                                            arr[i] = arr[j];
                                            arr[j] = temp;
                                       }
                                   }

                                }






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值