zoukankan      html  css  js  c++  java
  • JAVASE经典面试问题(必须熟背),你Get到了吗?

    JAVASE经典面试问题(必须熟背)

    1. 编译java程序使用什么命令?运行java使用什么命令?

    • javac *.java
    • java 类名

    2. 什么是JDK,什么是JRE,JDK与JRE有什么区别?

    • JDK:Java Development Toolkit Java开发工具包

    • JRE:Java Runtime Enviorment Java运行时环境

    • 区别:开发JAVA程序必须安装JDK,运行JAVA程序必须安装JRE。

    3. 为什么说JAVA语言的跨平台的?JAVA虚拟机JVM是跨平台的吗?

    因为JAVA程序编译后生成的字节码文件(class文件)是跨平台的。JVM不是跨平台,在不同的操作系统上开发JAVA程序,必须安装该操作系统版本的JVM。

    4. Java当中如何跳出多重循环?

    使用break label;

    在java中,使用break可以跳出循环,默认情况下是跳出最里层的循环,假如我们要跳出多层循环怎么办呢,Java替我们已经做好了这一点,就是用循环标签 :即是对某个循环定义一个名字,然后在 break 后面加上这个名字,当符合 break 条件时,程序就会跳到规定的循环那。下面来一个例子吧,说明下这个问题。

    public static void main(String[] args){
    		lableB:
    		for(int i=0;i<3;i++){
    			lableA:
    			for(int j=0;j<3;j++){
    				System.out.println(j);
    				if(j==1){
    					break lableB;
    				}
    			}
    		}		
    		System.out.println("over!");
    	}
    
    复制代码

    标签名的命名方法是:java命名规则 和 半角冒号: , 比如: lableA:

    lableB标签的定义需要在使用break lableB语句之前定义。

    • break只跳出当前for循环

    • return是结束当前方法的执行

    • continue是终止当前循环语句的执行,继续下一条循环语句

    5. JAVA的数据类型分为哪几类?

    基本数据类型和引用数据类型

    6. String/StringBuffer/StringBuilder的区别是什么?

    • String:不可变
    • StringBuffer:可变,并且线程安全,效率差。
    • StringBuilder:可变,线程不安全,效率高

    7. 面向对象的三大特征是什么?]

    封装、继承、多态

    8. Java实现多态性的机制是什么?

    • 有继承
    • 有方法重写
    • 父类引用指向子类对象

    9. 什么是方法重载?什么是方法重写?方法重载与方法重写的区别?

    • 方法重载(Overload):是指方法名字相同,参数的个数、类型、次序不同。
    • 方法重写(Override/Overwrite):是指子类重写了从父类继承过来的方法。

    区别:

    • 方法重载没有继承、属于一种静态联编技术。
    • 方法重写有继承、属于动态联编技术。
    1. 什么是抽象类?什么是接口?抽象类与接口的区别?

    声明为abstract的类是抽象类,抽象类不能实例化。

    接口也是种特殊的抽象类,接口里的属性都是public static final类型的。接口里的方法都是public abstract 类型的。

    区别一:

    • 相同点:接口和抽象类都不能实例化对象,都只能实例化它们的子类。
    • 不同点:接口是用来实现的、抽象类是用来继承的。接口适合描述XXX has a XXX的关系,侧重于事物的功能。抽象类适合描述 XXX is a XXX的关系,侧重于事物的本质。

    区别二:

    1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
    2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
    3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
    4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

    11. 分析List/Set/Map这三种集合类型的异同点。

    不同点:

    • List:序列,有顺序,可重复
    • Set:集合、无顺序,不可重复
    • Map:键值对,适合用作索引。

    相同点:都是集合类型。

    12. 什么是进程?什么是线程?进程与线程的区别有哪些?

    • 进程是正在运行当中的程序,是操作系统最小的调度单位。

    • 线程是进程不同的执行线路,从进程中派生。是CPU最小的调度单位。

    13. JAVA创建线程类有哪几种方法?

    两种方式:继承Thread类、实现Runnable接口

    14. 什么是泛型?使用泛型有什么好处?

    泛型是约束集合的各种数据类型的一种机制。使用泛型的好处是规定集合里存放的数据类型,提高使用集合的安全性和健壮性、方便集合遍历。

    15. ==与equals究竟有什么区别?

    • ==:判断两个对象是否相等
    • equals:判断两个对象的内容是否相等。

    16. Integer与int有什么区别?

    • Integer:是int类型的封装类型,是引用类型,指向一个对象。在堆内存中分配空间。

    • int:是基本数据类型,不创建对象。在栈内存中分配空间

    17. final,finally,finalize的区别?

    • final:是一种修饰符,可以用来修饰对象、方法和类。

    • finally:通常try{} catch(){}finally{};使用。finally语句块里的代码无论是否抛出异常,一定会被执行。

    • finalize:是Object类的一个方法,销毁一个对象前会默认调用这个对象的finalize()方法。

    18. error和exception的区别?

    • error:错误,无需捕获。

    • exception:异常,必须捕获。

    19. String s = “a”+”b”+”c”+”d”;一共创建了几个对象?

    赋值号的右边都是字符串常量,编译阶段直接解析为”abcd”,所以创建了一个对象。

    20.Java多线程中的sleep()与wait()有什么区别?

    • sleep():表示让当前线程休眠多少毫秒,不会放弃CPU的使用权利,更不会释放对象的锁。

    • wait():表示当前线程进入阻塞状态,会放弃CPU的使用权利,也会立刻释放对象的锁。直到notify()方法把该线程唤醒。



  • 相关阅读:
    HDU
    UVa——540Team Queue(STL练习map、queue数组的综合使用)
    NOJ——1659求值(log10取对数+floor取整数部分+可有可无的快速幂)
    NOJ——1658平方和(自然数平方和公式和取模法则)
    HDU——2723Electronic Document Security(STL map嵌套set做法)
    HDU——1982Kaitou Kid
    HDU——1073Online Judge(string类以及其对应函数)
    HDU——1062Text Reverse(水题string::find系列+reverse)
    HDU——1009FatMouse' Trade(贪心+结构体+排序)
    HDU——1799循环多少次(杨辉三角/动态规划/C(m,n)组合数)
  • 原文地址:https://www.cnblogs.com/zyx110/p/13266607.html
Copyright © 2011-2022 走看看