【面试】Java基础中的那些事-One

前言

面试中对于技术职位,一般分笔试与面谈,如果面试官的一些小问题你可以立马找到对应的知识点扩展开来,那么这就是你的优势,本系列将讲述一些java面试中的事,不会很详细,但是应该比较全面吧。

主要内容

  • 说到Java,你会介绍它的什么优点?

GC起码要立即想到吧,虽然它和C++不一样没有解析函数用于回收,但是开发者引入了finalize()方法,GC要释放无用对象时,就会调用该对象的这个方法。静静GC就已经减少了开发者的大半工作量(关于内存管理的)。

  • Java会成为这么热门的编程语言?

它确实很好呀!强类型转换、垃圾回收器、异常处理和安全检查机制(数组边界检查、Bytecode校验)等等,都方便我们的开发。

  • C++是Java的前生,java和它有啥区别?

java是解释型、C++为编译型;Java自带提供了JDBC、RMI标准库,C++就自己找第三方库;等等…

  • 关于main方法

main是java中的特殊方法名,仅能public,不能用abstract来修饰,保证main的返回值为void

  • 如何在main方法执行之前输出一句话?

静态块,这个不能犹豫,静态块会在类被加载时就调用。

  • 关于程序初始化的顺序

3个原则:静态对象高于非静态对象、父类高于子类、成员变量定义顺序

  • 一个java文件定义多个类?

可以,只能一个public,且与文件同名

  • 标识接口Cloneable和Serializable等

一般用instanceof来判断实例是否实现了一个给定的标识接口

  • 关于clone方法与复制

你们一直以来的赋值(对基本数据类型-按值传递-参数的复制),其他类型是引用传递,且“=”赋值也是一种引用传递。

实现clone前要继承Cloneable接口,就是一个标识,重写Object中的clone,你可以直接调用父类的clone方法,但是这仅仅是浅复制。

  • 深复制?

你要复制对象的成员变量也是一个对象,那么你也要将这个变量对象进行一次复制。即非基本类型的属性进行复制

  • 反射机制?

老生常谈,不要说自己多了解,大致讲自己有把握的,生产环境会让你写反射?大部分还不会,而且还是业务代码而已,大致就是:得到一个对象的所属类、获取类的所有成员变量与方法、运行时创建对象、运行时调用对象的方法。最重要的动态创建类的对象。

Class.forName("类路径")
类名.Class
实例.getClass()
  • 创建对象?

new、反射机制、clone、反序列化

点赞