Java实习生常规技术面试题每日十题Java基础(一)

目录

1.Java 的 “一次编写,处处运行”如何实现?

2.描述JVM运行原理。

3.为什么Java没有全局变量?

4.说明一下public static void main(String args[])这段声明里每个关键字的作用。

5.Java 是否存在内存泄漏?

6.==与equals的区别。

7.Java中有几种类型的流?

8.如何用Java代码列出一个目录下所有的文件。

9.&和&&的区别。

10. 构造器(constructor)是否可被重写(override),其规范是什么?


1.Java 的 “一次编写,处处运行”如何实现?

    JAVA之所以能实现 一次编译,到处运行,是因为JAVA在每个系统平台上都有 JAVA虚拟机(JVM),JAVA编译的中间文件class是由JAVA虚拟机在运行时动态转换为对应平台的机器代码.

2.描述JVM运行原理。

 Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个平台的通道,用Java语言编写并编译的程序可以运行在这个平台上。这个平台的结构如下图所示:   运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。

3.为什么Java没有全局变量?

Global variables(全局变量) 是指可以全局访问的变量, Java不支持全局变量,原因如下:

1. 全局变量破坏了引用的透明性。

2. 全局变量制造了命名空间冲突。

可以使用properties类将想要全局有效的变量值写在properties文件中,那么在何处用时都从此properties文件中读取这个变量的值就可以了,此值在任何时候都可以修改的

说明:我们平时在类中声明的只是相对类而言是全局变量,不是真正意义的全局变量

4.说明一下public static void main(String args[])这段声明里每个关键字的作用。

Public 是一个访问权限(访问修饰符)公共 

static  修饰的成员称为类成员或者静态成员

void   当方法定义时用void修饰时,表示没有返回值

String  类来创建和操作字符串

5.Java 是否存在内存泄漏?

java中内存泄露的发生场景,通俗地说,就是程序员可能创建了一个对象,以后一直不再使用这个对象,这个对象却一直被引用,即这个对象无用但是却无法被垃圾回收器回收的,这就是java中的内存泄露,一定要让程序将各种分支情况都完整执行到程序结束,然后看某个对象是否被使用过,如果没有,则才能判定这个对象属于内存泄露。

6.==与equals的区别。

"= ="除了比较基本数据之外都是比较的内存地址

"equals"除了没有没有重写equals方法的类之外都是比较的内容

7.Java中有几种类型的流?

Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。

8.如何用Java代码列出一个目录下所有的文件。

File file=new File("H:\\");

for(File temp:file.listFiles()){

   if(temp.isFile()){

      System.out.println(temp.toString());

   } 

}

9.&和&&的区别。

1、&与&&都可以用作逻辑与的运算符,当两边的结果都为true时,运算结果才为true,否则只要有一方运算结果是false,运算结果就为false。

2、&&在开发过程中用到的概率比&大,因为&&具有短路的功能,只要第一个表达式是false,就不会再进行判断。例如:if(str!=null && !str.equals("")){}

当str==null时,后面的表达式就不会继续执行,但是

if(str!=null & !str.equals("")){}当str==null时,程序会报空指针异常,因为&不具有短路的功能。

3、&同时也是位运算符,就是我们通常所说的按位与运算,当&的左右两边都是Boolean型表达式时或Boolean值时,就执行按位与运算。

10. 构造器(constructor)是否可被重写(override),其规范是什么?

构造器(构造方法)Constructor不能被继承,因此不能重写Override,但可以被重载Overload(不同参数即可)。

每一个类必须有自己的构造函数,在创建对象时自动调用,如果添加有参构造函数后,默认无参构造函数则被覆盖。子类不会覆盖父类的构造函数,但是在创建子类对象的时候,会自动调用父类构造函数。

 

其他面试题:

Java实习生常规技术面试题每日十题Java基础(八)

Java实习生常规技术面试题每日十题Java基础(七)

Java实习生常规技术面试题每日十题Java基础(六)

Java实习生常规技术面试题每日十题Java基础(五)

Java实习生常规技术面试题每日十题Java基础(四)

Java实习生常规技术面试题每日十题Java基础(三)

Java实习生常规技术面试题每日十题Java基础(二)

Java实习生常规技术面试题每日十题Java基础(一)

相关文章

暂无评论

暂无评论...