• Java 基础面试


    1.如何正确的退出多层嵌套循环

    • 使用标号和break;

    • 通过在外层循环中添加标识符

    2.内部类的作用

    内部类可以有多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立.在单个外围类当中,可以让多个内部类以不同的方式实现同一接口,或者继承同一个类.创建内部类对象的时刻不依赖于外部类对象的创建.内部类并没有令人疑惑的”is-a”关系,它就像是一个独立的实体.

    3、final,finalize和finally的不同之处

    final 是一个修饰符,可以修饰变量、方法和类。

    finalize 方法是在对象被回收之前调用的方法,给对象自己最后一个复活的机会,但是什么时候调用 finalize 没有保证。

    finally 是一个关键字,与 try 和 catch 一起用于异常的处理。finally 块一定会被执行,无论在 try 块中是否有发生异常。

    4、final有哪些用法

    1.被final修饰的类不可以被继承 
    2.被final修饰的方法不可以被重写 
    3.被final修饰的变量不可以被改变.如果修饰引用,那么表示引用不可变,引用指向的内容可变. 
    4.被final修饰的方法,JVM会尝试将其内联,以提高运行效率 
    5.被final修饰的常量,在编译阶段会存入常量池中.

    回答出编译器对final域要遵守的两个重排序规则更好:

    1.在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序. 
    2.初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序

    5、static都有哪些用法?

    静态变量、静态方法、静态块、静态内部类、静态导包

    6、深拷贝和浅拷贝的区别是什么?

    浅拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅拷贝仅仅复制值,而不复制它所引用的对象。

    深拷贝:被复制对象的所有变量都含有与原来的对象相同的值,而那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深拷贝把要复制的对象所引用的对象都复制了一遍。

    7、String,StringBuffer和StringBuilder区别

    String是字符串常量,final修饰;StringBuffer字符串变量(线程安全); StringBuilder 字符串变量(线程不安全).

    String和StringBuffer主要区别是性能:

    String是不可变对象,每次对String类型进行操作都等同于产生了一个新的String对象,然后指向新的String对象.所以尽量不在对String进行大量的拼接操作,否则会产生很多临时对象,导致GC开始工作,影响系统性能.

    StringBuffer是对对象本身操作,而不是产生新的对象,因此在有大量拼接的情况下,我们建议使用StringBuffer.

    但是需要注意现在JVM会对String拼接做一定的优化: 
    String s=“This is only ”+”simple”+”test”会被虚拟机直接优化成String s=“This is only simple test”,此时就不存在拼接过程.

    StringBuffer是线程安全的可变字符串,其内部实现是可变数组.StringBuilder是jdk 1.5新增的,其功能和StringBuffer类似,但是非线程安全.因此,在没有多线程问题的前提下,使用StringBuilder会取得更好的性能.

    8.栈(stack)、堆(heap)、静态存储区

    • stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。
    • stack空间有限,heap的空间是很大的自由区。

    String str=new String(“hello”);

    上面的语句中str放在栈上,用new创建出来的字符串对象放在堆上,而“hello”这个字面量放在放在静态存储区。

  • 相关阅读:
    Node.js github开源代码
    Node.js Base64 Encoding和Decoding
    图论500题
    gvim中的gvimrc和vimrc
    ubuntu 命令行卸载并清理软件
    vim复制到系统剪贴板
    Electron 主进程与渲染进程之间的通 信(同步通信、异步通信)
    Android 使用系统录制视频功能
    Electron 自定义软件顶部菜单、右键菜单以及绑定快捷键
    Electron remote 模块、通过 BrowserWindow 打开新窗口
  • 原文地址:https://www.cnblogs.com/mcahkf/p/9186247.html
Copyright © 2020-2023  润新知