专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 程序员Java开发笔试题面试题

程序员Java开发笔试题面试题

更新时间:2020-03-05 11:04:56 来源:动力节点 浏览1639次


  1.static和final的用法


  static的作用从三个方面来谈,分别是静态变量、静态方法、静态类。


  静态变量:声明为static的静态变量实质上就是全局变量,当声明一个对象时,并不产生static变量的拷贝,而是该类所有实例变量共用同一个static变量。也就是说这个静态变量只加载一次,只分配一块储存空间。


  静态方法:声明为static的静态方法有以下几个特点:


  (1)静态方法只能调用静态方法;


  (2)静态方法只能访问静态数据;


  (3)静态方法不能以任何方式引用this或super;


  静态类:通常一个普通类不允许声明为静态,只有一个内部类才可以(main方法就是一个典型),这时这个声明的静态类可以直接作为一个普通类来使用,而不需要实例一个外部类。


  final的作用从变量、方法、类三个方面来理解:


  final修饰的变量的值不能被修改,是一个常量;final修饰的方法不能被重写;final修饰的类不能被继承;


  2.抽象类和接口的区别,类可以继承多个类吗,接口可以继承多个接口吗,类可以实现多个接口吗?


  抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。


  抽象类要被子类继承,接口要被类实现。


  接口只能做方法声明,抽象类中可以做方法声明,也可以做方法实现


  接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。


  抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。


  抽象方法只能申明,不能实现。abstractvoidabc();不能写成abstractvoidabc(){}。


  抽象类里可以没有抽象方法。


  如果一个类里有抽象方法,那么这个类只能是抽象类。


  抽象方法要被实现,所以不能是静态的,也不能是私有的。


  接口可继承接口,并可多继承接口,但类只能单根继承。


  3.this和super的功能和用法


  this:


  (1)能访问除构造方法以外所有的属性、方法,通过this.来调用方法和属性


  (2)不可以在静态方法中使用


  (3)在构造方法中使用this(参数列表)调用本类的其它构造方法,必须放在构造方法的第一句。


  super:访问父类的方法和属性


  (1)访问父类的方法和属性;


  (2)在构造方法中通过super(参数列表)来调用父类的构造方法,必须放在子类构造方法里的第一行。


  4.final,finally,finalize的区别?


  final:修饰符(关键字)有三种用法:如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承。将变量声明为final,可以保证它们在使用中不被改变,被声明为final的变量在初始化以后的引用中只能读取不可修改。被声明为final的方法也同样只能使用,不能在子类中被重写。


  finally:通常放在try…catch的后面构造总是执行代码块,这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都能执行,可以将释放外部资源的代码写在finally块中。


  finalize:Object类中定义的方法,Java中允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的,通过重写finalize()方法可以整理系统资源或者执行其他清理工作。


  5.Error和Exception有什么区别?


  Error表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;


  Exception表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。


  6.说出Servlet的生命周期,并说出Servlet和CGI的区别。


  Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy()方法。


  与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。


程序员Java开发笔试题面试题


      以上就是动力节点Java培训机构小编介绍的“程序员Java开发笔试题面试题”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>