Java程序员面试题(基础篇)(三)

1、 Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型?

  • 方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现。重写 Overriding 是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。
  • 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的 定义如同被”屏蔽”了。
  • 如果在一个类中定义了多个同名的方法,它们或有不同的参数个数,或有不同的参数类型,则称为方法的重载(Overloading)。
  • Overloaded 的方法是可以改变返 回值的类型。

2、Collection 和 Collections 的区别。

  • Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List.
  • Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

3、java 中有几种类型的流?JDK 为每种类型的流提供了 一些抽象类以供继承,请说出他们分别是哪些类?

  • 字节流,字符流 。
  • 字节流继承于 InputStream OutputStream ,
  • 字符流继承于 InputStreamReader OutputStreamWriter。
  • 在java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。

4、error 和 exception 有什么区别 ?

  • error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
  • exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

5、父类子类多态关系

A派生出子类B,B派生出子类C,并且在java源代码中有如下声明:

  • 类的继承具有传递性,子类可以通过向上转型的方式无条件地赋值给父类对象;
  • 父类通过向下转型赋值给子类时,必须通过强制类型转换。

6、Math中floor、ceil、round方法区别

  • floor: 求小于参数的最大整数。返回double类型 n. 地板,地面 例如:Math.floor(-4.2) = -5.0
  • ceil:求大于参数的最小整数。返回double类型 vt. 装天花板 例如:Math.ceil(5.6) = 6.0
  • round: 对小数进行四舍五入后的结果。返回int类型 例如:Math.round(-4.6) = -5

7、list是一个ArrayList的对象,如何在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?

  • Iterator 支持从源集合中安全地删除对象,只需在 Iterator 上调用 remove() 即可。
  • 这样做的好处是可以避免 ConcurrentModifiedException ,当打开 Iterator 迭代集合时,同时又在对集合进行修改。
  • 有些集合不允许在迭代时删除或添加元素,但是调用 Iterator 的remove() 方法是个安全的做法。

8、jsp中静态include和动态include的区别

  • 静态的include:是jsp的指令来实现的,< %@include file=”xx.html”%> 是共享request请求域,先包含再编译,不检查包含页面的变化。不允许有相同的变量。 是在翻译阶段执行。
  • 动态的include:是jsp动作来实现的, 是不共享request请求域,先编译在包含,是要检查包含页面的变化的。在请求处理阶段执行。

9、Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段

  • init():仅执行一次,负责在装载Servlet时初始化Servlet对象
  • service() :核心方法,一般HttpServlet中会有get,post两种处理方式。在调用doGet和doPost方法时会构造servletRequest和servletResponse请求和响应对象作为参数。
  • destory():在停止并且卸载Servlet时执行,负责释放资源

10、线程与进程的区别?

  • 地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
  • 通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
  • 调度和切换:线程上下文切换比进程上下文切换要快得多。
  • 在多线程OS中,进程不是一个可执行的实体。

发表评论