Java基础面试被常问到知识点

1、类的加载机制

  将类的.calss文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个Java.lang.class对象,用来封装类在方法区内的数据结构。

2、加载.class文件的方式

  ①从本地系统中直接加载。

  ②通过网络下载class文件(典型应用applet:通过网络传输,由浏览器自动装载并执行。用法:在HTML文件中插<applet>标签)。

  ③从zipjar等归档文件中加载class文件。

  ④从专有数据库中提取class文件。

  ⑤将Java源文件动态编译为class文件

3、类的生命周期 

  加载、验证、准备、解析、初始化。

4、Servlet的生命周期

  ①实例化:获得请求,容器创建servlet容器。

  ②初始化:调用init()方法。该方法只会执行一次,作用是获取资源。

  ③响应客户端请求:调用service()方法。

  ④服务终止(销毁):调用destroy()方法。释放占用的系统资源。

5、接口和抽象类的区别

  ①一个类可以实现多个接口,但是只能继承一个抽象类。

  语法上:

  ②接口中只能定义抽象方法,抽象类中可以有普通方法。

  ③接口中只能有静态成员变量,抽象类中可以有普通成员变量。

  ④接口中不能有构造方法,抽象中可以有构造方法。

  $$  记住抽象类与普通类的区别:

  不能创建实例  ||  在类名前加abstract。

6、Jdbc连接数据库的方式

  url = "jdbc:oracle:thin:@192.168.1.15:1521:ORCL";

  url = "jdbc:mysql://localhost:3306/数据库名”

  ①加载驱动:class.forName(“com.mysql.jdbc.Driver”);

  oracle.jdbc.OracleDriver

  ②建立连接:

  Connection conn = DriverManager.getConnection(url);

  ③创建PreparedStatement对象:用来向数据库发送查询和命令。preparedstatement ps = connection.preparestatement(sql);

  ④处理结果集(SQL语句):ResultSet rs = ps.excuteQuery();

  ⑤关闭连接:按顺序rs.close ()> ps.close()  > conn.close()

7、Java序列化

  将一个对象转换成二进制表示的字节数组,通过保存或转移这些字节数据达到持久化目的。

  反序列化:将字节数组重新构造成对象。

8、Java虚拟机

  ①运行所有Java程序的虚拟计算机,是Java语言的运行环境。

  ②Jav虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。

  特点:

  与平台无关,引入Java虚拟机,Java语言在不同平台上运行时不需要重新编译,其执行字节码,把字节码转换成机器指令执行。

9、Static

  ①被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

  ②静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量。

  ③静态资源的加载顺序是严格按照静态资源的定义加载的。

  ④静态代码块对于定义在他之后的静态变量,可以赋值,但不能访问。

1 public class A {
2     c = 3; System.out.println(c);
3 }
4 
5 private static int c;

10、final

  ①修饰类不可继承

  ②修饰方法不可重写

  ③修饰变量(注意:是指修饰的引用不能变,引用指向的内容可以变)

  另:被final修饰的方法,JVM会尝试为之寻求内联,提升效率。

  被final修饰的常量,在编译阶段会存入调用类的常量池中。

11、多态

  抽象、继承、封装是多态的基础,多态是抽象、继承、封装的实现。

  多态的三要素:

  ①继承②重写③父类引用指向子类对象

 
以上内容纯属个人见解,不足之处请大家指明。2017-09-16 10:29:00

 

 

 

posted @ 2017-09-16 10:30  高木子  阅读(551)  评论(0编辑  收藏  举报