java常见面试题及答案,基础篇一

  1. JDK 和 JRE 有什么区别?

        1、jdk 

                 -JDK(Java SE Development Kit),Java标准开发包

                -提供了编译、 运行 Java程序所需的各种工具和资源
                -包括Java编译器Java运行时环境,以及常用的Java类库等。

        2、JRE

                -Java Runtime Environment,Java运行时环境

                -Java核心类库及JVM

2.== 和 equals 的区别是什么?

        ==  基本数据类型比较的是值得本身是否相等,引用数据类型比较的是值的对象是否相等

       equals  equals在没重写之前和==没区别,在string中重写了equals方法,不管引用类型还是基本数据类型,比较的都是值是否相等

3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

       不一定,如果我们将hashcode方法重写问num%3,这时候1和4的余数都是1

4.final 在 java 中有什么作用?

       被final修饰的变量为常量,不能被修改,修饰的类为最终类,不能被继承,修饰的方法不能被重写

5.java 中的 Math.round(-1.5) 等于多少?

       -1  ,该方法计算是将值加上0.5,然后向下取整

6.String 属于基础的数据类型吗?

       引用数据类型,基本数据类型只有8种:byte,short,int,long,float,double,char,boolear。

7.java 中操作字符串都有哪些类?它们之间有什么区别?

       String,StringBuffer/StringBiuder;

8.String str="i"与 String str=new String(“i”)一样吗?

       前者放在常量池当中,而后者会在堆中创建对象

9.如何将字符串反转?

       1、用StringBuffer的reverse()方法,new StringBuffer(s).reverse().toString();

    2、将字符串储存到数组中,反向取出字符再拼接,

public String reversalString s{

       Char[] array = s.toCharArrar();

       String rs = “”;

       for( int i = array.length-1; i>=o.i--){

              rs += array[i];

             

}

return rs;

}

3
public static String reverse1(String s) {



    int length = s.length();



    if(length <= 1){



        return s;

    }



    String left = s.substring(0, length / 2);



    String right = s.substring(length / 2, length);



    return reverse1(right) + reverse1(left);



}

10.String 类的常用方法都有那些?

      

1)String(String original):把字符串数据封装成字符串对象

2)String(char[] value):把字符数组的数据封装成字符串对象

3)String(char[] value, int index, int count):把字符数组中的一部分数据封装成字符串对象

4)length():获取字符串的长度,也就是字符的个数

5)charAt(int index):获取指定索引处的字符

6)indexOf(String str):获取str在字符串对象中第一次出现的索引

7)substring(int start):从start开始截取字符串

8)String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end

9)equals(Object obj):比较字符串的内容是否相同

还有很多常用的方法,建议去看一下这篇博客:日常开发中,String类中常用的方法_lz_1014的博客-CSDN博客_string类的常用方法     

11.抽象类必须要有抽象方法吗?

       抽象类可以没有抽象方法,抽象方法必须在抽象类里面

12.普通类和抽象类有哪些区别?

  1. 抽象类不能被实例化
  2. 抽象类可以有抽象方法,抽象方法只需申明,无需实现
  3. 含有抽象方法的类必须申明为抽象类
  4. 抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类
  5. 抽象方法不能被声明为静态
  6. 抽象方法不能用private修饰
  7. 抽象方法不能用final修饰

13.抽象类能使用 final 修饰吗?

       不能,因为final修饰的类不能被继承,而抽象类是用来被继承的

14.接口和抽象类有什么区别?

       1、接口中全部是抽象方法,默认被public abstract修饰,而抽象类中可以有普通方法;

       2、接口中的变量全部为常量,默认被public static finnal修饰的

3、接口可以实现多继承,而抽象类不能

4、接口中没有构造方法,而抽象类中可以有构造方法

15.java 中 IO 流分为几种?

       字符输入流:reader

       字节输出流:writer

字节输入流:OutputStream

字符输出流:InputStream

一般的操作步骤:1)创建源
2)选择流
3)操作流(读取|写出)
4)释放资源

16.BIO、NIO、AIO 有什么区别?

BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。

伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。

NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。

AIO:一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,

BIO是面向流的,NIO是面向缓冲区的;BIO的各种流是阻塞的。而NIO是非阻塞的;BIO的Stream是单向的,而NIO的channel是双向的。

NIO的特点:事件驱动模型、单线程处理多任务、非阻塞I/O,I/O读写不再阻塞,而是返回0、基于block的传输比基于流的传输更高效、更高级的IO函数zero-copy、IO多路复用大大提高了Java网络应用的可伸缩性和实用性。基于Reactor线程模型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值