Java面试题(基础篇)

1、面向对象与面向过程的区别:        

        面向过程:

                        优点:性能高

                        缺点:不易维护、不易复用、不易拓展

        面向对象:

                        优点:易维护、易复用、易拓展

                        缺点:性能低                           

2、Java语言有哪些特点

                简单易学、面向对象(封装、继承、多态)、平台无关性、可靠性、安全性、支持多线程、支持网络编程并且很方便、编译与解释并存

3、JVM、JDK、JRE

        JVM:Java虚拟机,是运行Java字节码的虚拟机

        JDK:拥有JRE的一切,能够创建和编译程序

        JRE:Java运行的环境

4、OracleJDK 和 OpenJDK的对比

        OracleJDK比OpenJDK稳定、性能更好

5、Java与C++的区别

        Java不提供指针访问内存,程序内存更加安全

        Java是单继承,但是接口可以多继承。C++是多继承

        Java有自动内存管理机制,不需要手动释放无用内存

6、什么是Java程序的主类 应用程序和小程序的主类有什么不同?

        包含main()的方法的类是Java的主类。

        主类是Java程序执行的入口点。在Java小程序中,主类是继承自系统类JApplet和Applet的子类,应用程序的主类不一定是public,而小程序的主类必须要求是public

7.java应用程序和小程序之间有那些差别

        应用程序从mian()方法启动,applet小程序没有main()方法,主要是嵌在浏览器页面调用init()或者run()运行

8、字符型常量和字符串常量的区别

        形式上:字符型是单引号括起来的一个字符,字符串是双引号括起来的若干个字符

        含义上:字符常量相当于一个ASCII值,可以参加表达式运算。 字符串常量代表一个地址

        占内存:字符常量占两个字节,字符串常量占若干个字节

9、构造器Constructor是否可被override(重写)

        Constructor不能被重新(overrride)但是可以被重载(overload)

10、重载和重写的区别

        重载:发生在同一个类,方法名必须相同,参数类型不同、个数不同、顺序不同、方法返回值和访问修饰符可以不痛,发生在编译时。

        重写:发生在父子类中,方法名、参数列表必须相同

11、Java面向对象三大特性:封装、继承、多态

        封装:平时我的写的对象类

        继承:多态、接口

        多态:继承的一种形式

12、String、StringBuffer、StringBuilder的区别

                String:对象不可变、常量、线程安全(操作少量数据)

                StringBuffer:对方法加了同步锁、线程安全(多线程操作字符)

                StringBuilder:没有加同步锁、线程不安全(单线程操作字符)

13、自动装箱与拆箱

        装箱:将基本类型用他们对应的引用类型包装起来

        拆箱:将包装类型转换为应用类型

14、在一个静态方法内调用一个非静态成员为什么是非法的

        由于静态方法可以不通过对象进行调用,因此在静态方法里,不能调用其他非静态变量,也不可以访问非静态变量成员

15、在java中定义一个不做事且没有参数的构造函数的作用

        Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,会调用父类中没有参数的构造方法。没有则编译错误。

16、import java和javax有什么区别

        没有区别。

17、接口和抽象类的区别是什么?

             接口方法默认是public,所有方法接口中不能有实现,抽象类可以有非抽象方法

              接口实例变量默认是final类型,抽象类中不一定

               一个类可以有多个接口,但最多能实现一个抽象类

              一个类实现接口要调用接口所有的方法,抽象类不一定

               接口不能用new实例化

18、成员变量和局部变量的区别

        语法上:成员变量属于类。局部变量属于方法,不能被访问控制修饰

        存储方式:成员变量是对象的一部分,存在于堆内存,局部变量存在于栈内存

        生存时间:成员变量,对象在则在。 局部变量:方法调用完就消失了。

        成员变量会默认赋值,局部变量不会自动赋值

19、创建一个对象用什么运算符?对象实体和对象引用有什么不同?

        new运算符

        对象实体存于堆内存,对象引用存于栈内存

20、什么是方法的返回值?返回值在类的方法里的作用是什么?

        方法的返回值是代码执行产生的结果

        返回值在类的方法里的作用:接收出结果,使他可以用于其他操作

21、一个类的构造方法的作用是什么 若一个类没有声明构造方法,该程序能正确执行吗?为什么?

        主要作用:完成对类对象的初始化工作

        可以执行。没有声明构造方法也会默认执行无参的构造方法。

22.构造方法有哪些特性

        名字和类名相同

        没有返回值且不能用void声明

        生成类自动执行,无需调用

23、静态方法和示例方法有何不同?

        调用静态方法要创建对象,实例方法不用调用对象

        静态方法访问奔雷的成员时,只允许访问静态成员。实例方法无限制。

24、对象相等与指向他们的引用相等,两者有什么不同?

        对象相等:比较存在内容

        引用相等:比较内存地址

25、在调用子类构造方法之前会先调用父类无参构造方法,目的是?

                帮助子类做初始化工作。

26、== 与equals(重要)

               ==: 作用是判断两个对象地址是不是相等(基本数据类型==比较的是值,引用数据类型==比较的是地址)

                equals():作用判断两个对象是否相等。有两种情况

                1:类没有覆盖equals(),通过equals()比较该类两个对象时,等价于==比较两个对象

                2: 覆盖了,比较两个对象的内容相等,返回true或false

27、hashCode与equals(重要)

        hashCode的作用:获取哈希码(散列码)实际上返回一个int整数,这个哈希码的作用是确定该对象的在哈希表的索引位置。散列表存储的键值对(key-value)其特点是快速检索对应的值。

        如果两个对象相等,hashCode一定相等

        两个对象相等,分别调用equals方法都返回true

        两个对象有相同的hashCode值,他们不一定相等

        equals被覆盖过,hashCode一定也被覆盖过

        hashCode()的默认行为是对堆上的对象产生独特值,如果没有重新hashCode(),该class的两个对象无路如何都不会相等。

28、为什么Java中只有值传递

29、简述线程、程序、进程的概念,以及他们之间的关系?

        线程:比进程更小的执行单位,也称为轻量级进程。一个进程进行过程中可以产生多个线程

        程序:含有指令和数据的文件,被存储在磁盘或其他数据存储设备中,也是说程序是静态的代码。

        进程:是程序的一次进行过程,是系统程序运行的基本单位。

30、线程有哪些基本状态?

31、关于final关键字的一些总结

        final关键字只要用在三个地方:变量、方法、类

        final变量,初始化后不能再更改

        final修饰一个类,该类不能被继承

        final能把方法进行锁定,还有就是效率,现在private方法都隐式指定为final

32、java中的异常处理

        Throwable有两个重要的子类:Error(不可处理)和Expection(可处理)

        Expection用try catch finally执行抛出。若try或catch遇到return语句,finally会提前执行。

        在finally出现异常、前面代码执行System.exit()、关闭cpu、程序所在线程死亡,finally不会执行。

        

        

        

        

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值