美文网首页
Java面试基础

Java面试基础

作者: 老猫一枝花 | 来源:发表于2020-06-01 23:18 被阅读0次

    一、面向对象有几大特征:

    继承、多态、封装

    1、继承:指一个新的类拥有已知类的属性和方法,并且新类可以通过覆盖/重写来拓展已知类中方法的能力;

    2、多态:一个类当中可以拥有多个同名但不同参数的方法,主要通过三个方法来实现:

    a、子类覆盖父类方法;

    b、一个类中的方法重载实现;

    c、子类对象当做父类对象来实现;

    3、将一个事物封装成一个类,减少耦合,隐藏细节。通过对外开放接口来实现与外界的交互。

    二、覆盖(重写)、重载

    1、覆盖(重写):当A类继承了B类,并且A类丰富了B类中的C()方法,那么我们就可以叫做重写。重写并不会改变父类B中方法名、参数、返回值及参数类型。

    2、重载:当我们在一个类中拥有多个同名的方法,那么实现这个功能的就叫做重载,通过修改方法中参数的数量及参数类型,来达到重载。

    三、JDK、JRE和JVM

    1、JDK:开发工具包,Java开发的核心组件,提供了编译、调试和运行的所有工具,可以运行文件和二进制文件,一般是指的一个特定软件;

    2、JRE:Java运行环境,是JVM的一种实现,包含JVM,但不包含编译和调试工具。

    3、JVM:虚拟机,实现了Java的跨平台运行,提供了内存管理、垃圾回收和安全机制。JVM在运行中会隔离本机的系统及硬件,开辟一个独立的运行空间。

    四、抽象类(abstract)和接口(interface)

    1、抽象类中可以没有抽象方法,也可以抽象方法和非抽象方法共存;

    2、接口在JDK8之前只可以存在抽象方法,在JDK8后可以用Defualt来定义一个方法;

    3、抽象类是单继承,接口可以实现多个父接口;

    4、抽象类中可以有普通的成员变量,接口中只能有static final定义的常量,必须被初始化,只有常量,没有变量;

    五、Java中8中基础类型和占用字节数

    1、byte:1字节

    2、short:2字节

    3、int:4字节

    4、long:8字节

    5、double:8字节

    6、foalt:4字节

    7、char:2字节

    8、boolean:未定义字节数

    六、Java中的4个元注解

    元注解指的是,注解其他注解的注解

    1、@Target:定义这个注解可以用到哪里(TYPE、MTHOED、FIELD。。。)

    2、@Retention(保留策略):定义注解在什么时候可以起到作用或者说什么什么时候失效(RUNTIME、CLASS)

    3、@Documented:只在javadoc中可以运行,留下日志

    4、@Inherited:注解该注解是否可以被继承;

    七、Java的反射机制

    指的是在程序运行中,我们可以知道一个类的属性和方法。对于任意一个对象,我们都可以调用它的属性和方法。那就是动态的获取信息和动态调用对象方法,就叫做反射机制。

    八、Java中Exception和error的区别

    1、Exception是在程序运行中可预料,并将其捕获该异常,将其处理掉。分为了编译期异常和运行起异常;

    编译期异常:在加载一个项目的时候,检测出了一段方法体出现问题,抛出的异常;

    运行期异常:在程序运行过程中产生的异常;

    捕获异常需要遵循的几个点:

    a、尽量少使用Exception,而捕获更为详细的异常

    b、try...catch不要括的太大,不容易定位

    c、一定要打日志,方便处理

    d、当当前异常无法处理时,应该抛给上层异常

    2、error是运行中正常不可能发生的错误,也是不可预料的。内存溢出(OutOfMemoryError)

    内存溢出就需要了解GC垃圾处理模式了,后续会说到。

    九、Java中的值传递和引用传递

    1、值传递:相当于copy出去了一份副本,当副本改变时,不会影响到源数据;

    2、引用传递:引用可以理解为钥匙,我们配了一把钥匙出去,当通过钥匙改变房屋布局时,那么第一把钥匙打开房门时,已经发生了变化,也就是引用传递会影响到源引用;

    十、JIT编译器

    叫做即时编译器,把运行的热点代码便以为本地的机器代码,并进行各层次的优化,增加缓存功能,优化主要有,逃逸分析、锁消除等;

    当一个对象的方法被引用,那么就会方法逃逸,而且当检测到没有并发时,会消除方法上的synchronized锁。

    十、StringBuffer和StringBuilder的区别

    1、StringBuilder比StringBuffer运行速度快,效率更高;

    2、StringBuilder非线程安全,StringBuffer线程安全;

    3、一般情况下都是单线程运行,用StringBuilder更好些。

    十一、Java序列化与反序列化的过程

    1、将一个对象通过字节流形式保存到本地,就叫做序列化;

    2、将一个本地文件转化为字节流,就叫做反序列化;

    十二、equals与hashcode方法关系

    相关文章

      网友评论

          本文标题:Java面试基础

          本文链接:https://www.haomeiwen.com/subject/jzeezhtx.html