java面试基础

Posted snowya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java面试基础相关的知识,希望对你有一定的参考价值。

1.jre与jdk的区别?

  JRE: Java Runtime Environment
  JDK:Java Development Kit 

   其中JRE是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的;

       JDK是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器 javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。

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

  首先 ==是操作符,而equals()是方法。

  其次,==是比较两个对象是否指向同一个对象,也就是说他们指向的对象的首地址是否相同

  equals()可以通过重写equals方法从而比较对象的内容是否相同,如果不重写那么和==符号没有区别,都是比较的对象的引用是否指向同一个对象

   举栗:对于string来说其equal()方法是对object方法的equals()进行了重写,从而比较的字符串序列是否相同如下:

    String s1 = new String("abc");//s1存在于堆内存中
    String s2 = new String("abc");//s2也存在于堆内存中
    System.out.println(s1 == s2);//false s1和s2指向的对象的首地址不一样,不是同一个对象
    System.out.println(s1.equals(s2));//true s1和s2指向的对象的内容相同

3.String str="i"与 String str=new String("i")一样吗?

  "i"作为一个字符串常量,在JVM初始化时于方法区的字符串池。
  前者只是将这个常量的引用指给str
  后者则在堆中再创建一个不同于常量区的"i"的String对象,然后引用指给str
 

4.如何将字符串反转?

  1:递归    

    public static String reverse1(String str)

      int len=str.length();

      if(len<=1)
        return str;

      String left=str.substring(0,len/2);

      String right=str.substring(len/2,len);

      return reverse5(right)+reverse5(left);

    

    2:使用StringBuffer内置的reverse方法输出为字符串   

    public static String reverse2(String str)
      return new StringBuffer(str).reverse().toString();
    

    3.从尾部开始倒序

     public static String reverse3(String str)
      char [] arr =str.toCharArray();
      String biu ="";
      for(int i=arr.length-1;i>=0;i--)
        biu+=arr[i];
      
      return biu;
    

   4.运用栈的特点
        public static String reverse4(String str)
      StringBuffer sb = new StringBuffer();
      Stack<Character> s = new Stack<Character>();//创建只装字符型的stack
      for (int i = 0; i < str.length(); i++)
        s.add(str.charAt(i));
      
      for (int i = 0; i < str.length(); i++)
        sb.append(s.pop());//出栈,StringBuffer.append()添加到sb的缓冲区末端;.insert(int index,添加的内容)添加到指定位置
      return sb.toString();
    

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

  final修饰的类不能被继承;方法不能被重写;变量成为常量,只能被赋值一次,且赋值后无法更改;参数有一个只读的属性。

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

  二者共同点有:
    1) 都是上层的抽象层。
    2) 都不能被实例化
    3) 都能包含抽象的方法,这些抽象的方法用于描述类具备的功能,但是不比提供具体的实现。
   二者区别有:
    1) 在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法。
     2) 一个类只能继承一个直接父类,这个父类可以是具体的类也可是抽象类;但是一个类可以实现多个接口。
  

7.collection和collections的区别

  Collection是集合类的上级接口,继承于他的接口主要有Set 和List.

  Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

8.List 、Set、 Map有什么区别和联系

  1)list 和set 有共同的父类 Collection,它们的用法也是一样的 ,唯一的不太就是set中不能有相同的元素 list中可以
  2)list和set的用途非常广泛 list可以完全代替数组来使用
   3)map 是独立的合集 它使用键值对的方式来储存数据 键不能有重复的 值可以用
   4)map不像上边两种集合那个用的广泛 不过在servlet 和jsp中 map可是绝对的重中之重 页面之间传值全靠map
 
 
 
 
 
 

以上是关于java面试基础的主要内容,如果未能解决你的问题,请参考以下文章

java基础面试题都有哪些?

Java基础面试题有哪些?

备战2022年春季面试Java基础面试题库《收藏》

PHP基础面试题 – 第三天

VUE基础面试题(3)

Java基础面试题