2018新版Java常见面试题
千锋西安Java编程培训班的老师总结了2018新版Java常见面试题,一起来看!
1.1、java基础
●面向对象的特征:继承、封装、多态
继承【构造器、protected关键字、向上转型Java实现多态有三个必要条件:继承、重写、向上转型。
●final、finaly、finalize的区别
Final:用于类(zui终类,不能被继承)、方法(能调用,不能重写,可以重载)、变量(变常量)前。
Finaly:try-catch异常时一定被执行,后于try或catch执行
Finalize:来自于java.lang.Object,用于回收资源,可为任何类添加finalize方法,在GC清除前调用。
●Exception、Error、运行时异常与一般异常有何异同
Throwable是所有Java程序中错误处理的父类 ,有两种资类: Error 和 Exception 。
Error :表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM层次的严重错误 ,导致 JVM 无法继续执行,因此,这是不可捕捉的,无法采取任何恢复的操作,顶多只能显示错误信息。
Exception:表示可回复的例外,这是可捕捉到的。
●请写出五种常见的runtime Exception:
NullPointerException:当应用程序试图在需要对象的地方使用null时,抛出该异常
ClassCastException:当试图将对象强制转换为不是实例的子类时,抛出该异常
ArrayIndexOutOfBoundsException:使用数组下标超出数组允许范围时,抛出该异常
NumberFormatException:应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时抛出该异常。
IllegalArgumentException:此异常表明向方法传递了一个不合法或不正确的参数
●int和Integer有什么区别,Integer的值缓存范围
数值类型和对象
归结于java对于Integer与int的自动装箱与拆箱的设计,是一种模式:叫享元模式。
Integer的值缓存范围-128到127之间时始终只存在一个对象,超过范围对象不会被重用,即每次都是一个新的Integer对象
●包装类、装箱、拆箱
装箱:基本类型变为相应包装类{int a=100; Integer b=new Integer(a);或Integer a=Integer.valueOf(100)}
拆箱:拆箱就是装箱的逆过程,Integer a=new Integer(100);int b=a.intValue();
优先使用基本类型的论点是有道理的。
●String、StringBuilder、StringBuffer区别;
String、StringBuffer、StringBuilder类的常用方法:
●重载和重写的区别
重载:以统一的方式处理不同类型数据的一种手段
重载:overload 重写:override
●抽象类和接口有什么区别
相同点:都不能被实例化;接口的实现类或者抽象类的子类都只有实现了接口或抽象类中的方法才能被实例化
不同点:1.接口只能定义方法,抽象类中可以定义和实现
2.接口需要实现,抽象类需要继承,一个类可以实现多个接口但只能继承一个类
3.接口中成员变量是public static final,只能有静态的不能被修改的数据,必须赋值,所有的方法都是public abstract,而且只能被这两个修饰。抽象类可以有自己的成员变量,抽象类中的成员变量默认default、private、protected和public。可以再子类中重新定义、赋值。抽象类中的方法不能用private、static、synchronized、native修饰符。
●反射的用途及实现反射机制:在运行状态下,对任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象的方法功能称为java语言的反射机制。
实现方式:1.Class string = Class.forName(“java.lang.String”); //空号中必须是类的全名,即包名+类名。Struts配置文件
2.依靠类名调用class属性得到该类:Class str = String.class;
3.调用实例的getClass()方法:Date date = new Date(); Class d = date.getClass();
4.如果是基本的包装类,则可以用调用包装类的Type属性来获得Class:
Class i = Integer.TYPE;
应用:Struts配置action ;Spring中的Bean的注入
●说说自定义注解的场景及实现
●HTTP请求的GET与POST方法的区别
●session与cookie区别
●列出自己常用的JDK包:
1. java.lang:语言包,java语言的核心包,系统将这个包引入到用户程序,主要类:
Object类:所有类的父类,其中定义的方法其他类都可以使用
数据类型的包装类:Integer、Fioat、Double、Boolean等。
Math类:数学类,提供常量和数学函数,包括E常数PI及abs()、sin()、min()、random()等方法,都是静态
String和StringBuffer类
System类:提供一个独立于具体计算机系统的编程界面;Runtime类可以直接访问运行时资源
Classr类:Class类提供了对象运行时的若干信息,
ClassLoader类:ClassLoader是一个抽象类,它提供了将类名转换成文件名并在文件系统中查找并装载该文件的方法
线程类:Thread(线程建立)、ThreadDeath(线程结束后的清理操作)、ThreadGroup(组织一组线程)和Runnable(建立线程的交互工具)等类
Throwable(所有错误和异常处理的父类)、Exception、Error
2. java.util:实用包
Date(获取日期和时间)、Calender(抽象类、日历类)、GregorianCalendar(Calender的子类)
所有集合类、Random(封装了Math类中的random方法,并提供了更多的辅助功能)
3.java.io:输入输出包
4.java.swing:轻量级的窗口工具包,目前使用极为广泛
5.Java.awt:抽象窗口工具包
6.java.net:网络函数包,Socket,还提供了便于处理URL的类
●MVC设计思想
●equals与==的区别
●hashCode和equals方法的区别与联系
这次就是千锋老师分享的全部内容了,朋友们你们学会了吗?