JAVA企业面试题精选 Java基础 11-20

来源:互联网 发布:slam包括的算法 编辑:程序博客网 时间:2024/05/16 05:33

1.11.&和&&的区别?

参考答案:

  &和&&都可以执行关系判断。二者的区别是:&运算是把逻辑表达式全部计算完,而&&运算具有短路计算的功能。所谓短路计算,是指系统从左到右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。

1.12.写出Java中8种原始类型及其字节长度

参考答案:

类型名称 字节空间 说明 byte 1字节(8位) 存储1个字节的数据 short 2字节(16位) 兼容性考虑,一般不用 int 4字节(32位) 存储整数(常用) long 8字节(64位) 存储长整数(常用) float 4字节(32位) 存储浮点数 double 8字节(64位) 存储双精度浮点数(常用) char 2字节(16位) 存储一个字符 boolean 1字节(8位) 存储逻辑变量(true、false)

1.13.请描述一下JVM加载class文件的原理机制

参考答案:

  JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。

1.14.你对软件开发中迭代的含义的理解

参考答案:

  软件开发中,各个开发阶段不是顺序执行的,而各个阶段都进行迭代,然后进入下一个阶段的开发。这样对于开发中的需求变化,及人员变动都能得到更好的适应。
这里写图片描述

1.15.什么是进程

参考答案:

  进程是操作系统结构的基础,是一个计算机中正在运行的程序实例。可以分配给处理器并由处理器执行的一个实体,由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。

1.16.什么是垃圾回收?什么时候触发垃圾回收?如何降低垃圾回收的触发频率?它能保证程序由足够的可用内存吗?

参考答案:

第一问:
垃圾回收(GC)是Java语言的一个重要特性,作用是释放不再被使用的内存。
第二问:
垃圾回收是由系统进行管理。在系统认为需要的时候自动启动一个线程进行护理。
第三问:
尽量减少垃圾内存,也就是新建对象的数量,可以降低垃圾回收的频率。
第四问:
垃圾回收机制无法保证有足够的内存。

1.17.Java中会存在内存泄漏吗,请简单描述?

参考答案:

  会存在内存泄漏。
  一般来说内存泄漏有两种情况。一是堆中分配的内存,在没有将其释放掉的时候,就将所有能访问这块内存的方式都删掉;另一种情况则是在内存对象已经不需要的时候,还仍然保留着这块内存和它的访问方式(引用)。第一种情况,在Java中已经由于垃圾回收机制的引入,得到了很好的解决。所以,Java中的内存泄漏,主要指的是第二种情况。
  下面给出了一个简单的内存泄漏的例子。在这个例子中,我们循环申请Object对象,并将所申请的对象放入一个List中,如果我们仅仅是放引用本身,那么List仍然引用该对象,所以这个对象对GC来说是不可回收的。代码如下所示:

List list = new ArraryList(10);for (int i = 1; i < 100; i++){    Object o = new Object();    list.add(o);    o = null;}

  此时,所有的Object对象都没有被释放,因为变量list引用这些对象。

1.18.Java源文件中是否可以包括多个类,有什么限制?

参考答案:

  一个Java源文件中可以包含多个类,每个源文件中至多有一个public类,如果有的话,那么源文件的名字必须与之相同。如果源文件中没有public类,则源文件用什么名字都可以,但最好还好具有特定的意义,免得自己都不记得里面写的是什么了。一般建议一个源文件中只写一个Java类。

1.19.列出自己常用的jdk包

参考答案:

常用的JDK包如下:
1.java.lang包:这个包中包含了JDK提供的基础类,比如String等都是这里面的,这个包是唯一一个不用导入就可以使用的包;
2.java.io包:这个包中包含了与输入输出相关的类,比如文件操作等;
3.java.net包:这个包中包含了与网络有关的类,比如URL,URLConnection等;
4.java.util包:这个是系统辅助类,特别是集合类Collction,List,Map等;
5.java.sql包:这个是数据库操作的类,Connection,Statement,ResultSet等。

1.20.简单说明什么递归?什么情况会使用?并使用Java实现一个简单的递归程序?

参考答案:

1.递归作为一种算法在程序设计语言中广泛应用,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。
2.递归算法一般用于解决三类问题:
 1)数据的定义是递归定义的。(fibonacci(斐波那契)函数)
 2)问题解法按递归算法实现。(回溯)
 3)数据的结构形式是按递归定义的。(数的遍历,图的搜索)
3.下面是使用递归算法实现计算某个整数在二进制中的个数,代码如下所示:

/*** 计算二进制中1的个数* N为奇数,二进制中1的个数等于N/2的个数* 例子:* num=13* 1.getBinary(13/2=6)+1;* 2.getBinary(6/2=3)+1;* 3.getBinary(3/2=1)+1+1;* 4.getBinary(1)+1+1; getBinary(1)返回1,与后边两个1相加得结果3*/public static int getBinary(int num){    if (num == 1){        return 1;    }    if (0 == num % 2){ // 是否为偶数        return getBinary(num / 2);    } else {        return getBinary(num / 2) + 1;    }}
原创粉丝点击