您的位置 首页 java

Java面试100题 #2

11. String StringBuffer StringBuilder 的区别

    • String是不可变类,StringBuffer、StrinbBuilder均是可变类
    • StringBuffer是线程安全的,StringBuilder非线程安全
    • StringBuilder效率要比StringBuffer要高。

12.描述一下 JVM 加载 Class 文件的机制。

    • 虚拟机(jvm)把描述类的数据从Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的 java 类型
    • java中的所有类,都需要有由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把Class文件从硬盘读取到内存中。

13.interface可以有方法的实现吗?

    • JDK1.8中为了加强接口的能力,使得接口可以存在具体的方法。前提是方法需要被default或 static 关键字所修饰。

14.是否可以从一个static方法内部发出对非static方法的调用?

    • 不可以,static方法只可以调用static的方法或类属性。

15.GC是什么?为什么要有GC?

    • GC就是垃圾回收,java这种语言是动态分配内存大小的,并且依靠垃圾回收机制来完成对分配内存空间的回收,从而来避免内存溢出的问题,也在一定程度上降低了 程序员 工作的复杂度。

16.垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

    • 垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收
    • 程序员不能实时地调用垃圾回收器对某个对象或所有对象进行垃圾回收
    • 调用System.gc 方法来”建议”执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的

17.一个”.java”源文件中是否可以包含多个类(非内部类)?有什么限制?

    • 可以包含多个类,但只能有一个public类。

18.java中的final关键字有哪些用法?

  • 修饰一个类
  • 修饰一个方法
  • 修饰一个局部变量
  • 修饰一个成员变量

19.源码转换:怎么样将 GB2312 编码的 字符串 转为 ISO-8859-1 编码的字符串?

    • String s1 = “你好”;
    • String s2 = newString(s1.getBytes(“GB2312”), “ISO-8859-1”) ;

20.error和 Exception 有什么区别?

  • Exception 和 Error体现了java平台设计者对不同异常情况的分类, Exception是程序正常运行中,可以预料的意外情况,可以被捕获,进行相应的处理.
  • Error 是指正常情况下,不大可能出现的情况,绝大部分的Error 都会导致程序处于非正常的,不可恢复的状态, 不需要捕获, 常见的OutOfMemoryError 是Error的子类.
  • Exception 分为可检查异常(checked) 和 不可检查异常(unchecked).可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分,不可检查异常是指运行时异常, 比如NullPointerException, ArrayIndexOutOfBoundsException之类, 通常是可以编码避免的逻辑错误,具体根据需要来判断是否需要捕获,并不会在编译期强制要求.

文章来源:智云一二三科技

文章标题:Java面试100题 #2

文章地址:https://www.zhihuclub.com/178328.shtml

关于作者: 智云科技

热门文章

网站地图