JAVA 技术方向面试题-Java 基础


JAVA 技术方向面试题-Java 基础

Java 基础面试题

1.JVM、JRE 和 JDK 的关系

DK(Java Development Kit) 是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。
Java Runtime Environment(JRE) 是运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。
JVM是Java Virtual Machine(Java虚拟机)的缩写,是整个java实现跨平台的最核心的部分,能够运行以Java语言写作的软件程序。

2.什么是跨平台性?原理是什么?

实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安装相应的java虚拟机,该系统就可以运行java程序。(注意不是能在所有的平台上运行,关键是该平台是否能安装相应的虚拟机)。

3.&和&&的区别?

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,

4.用最有效率的方法计算 2 乘以 8

2 << 3,
因为将一个数左移n 位,就相当于乘以了2 的n 次方,那么,一个数乘以8 只要将其左移3 位
即可,而位运算cpu 直接支持的,效率最高,所以,2 乘以8 等於几的最效率的方法是2 << 3。

5.在没有使用临时变量的情况如何交换两个整数变量的值?

下面展示一些 内联代码片

public static void swap1() {
    
    
	int i = 1, j = 5;
	System.out.println("i:" + i + ",j:" + j);
	int tmp=i;
	i = j;
	j = tmp;
	System.out.println("i:" + i + ",j:" + j);
}

6.short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。

7.float f=3.4;是否正确?

不正确,3.4默认double类型,所以float f = 3.4f;

8.手动实现一下冒泡排序(快速排序)

下面展示一些 内联代码片

 public void maoPao (int[] a){
    
    
        for (int i = 0; i < a.length-1; i++) {
    
    //需要进行比较的轮数
            for (int j = 0; j < a.length-1-i; j++) {
    
    //每轮进行比较的次数
                if (a[j]<a[j+1]){
    
    //前一位数值大于后一位数值,则交换位置
                    int tmp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = tmp;
                }
            }
        }
    }

9.实现打印指定行数的空心菱形的功能

public void rhomb() {
    
    
        Scanner scanner = new Scanner(System.in);
        //行数
        int i = scanner.nextInt();
        for (int j = 0; j < i; j++) {
    
    
            //  空白
            for (int k = 0; k < Math.abs(i / 2 - j); k++) {
    
    
                System.out.print(" ");
            }
            //  *+空白
            for (int k = 0; k < i - 2 * Math.abs(i / 2 - j); k++) {
    
    
                if (k == 0 || k == i - 2 * Math.abs(i / 2 - j) - 1) {
    
    
                    System.out.print("*");
                } else {
    
    
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

猜你喜欢

转载自blog.csdn.net/weixin_45600855/article/details/112717299