普歌-泽辰团队:Java基础知识面试题;基础面试题,JVM虚拟机和面向对象知识大全

一、Java基础

1.什么是编程?
为了使计算机能够了解人的意图,解决生活中的一些需求,人们利用编程语言进行计算机与人进行交流的方式
2.什么是Java?
Java是一种可以跨平台应用程序的、面向对象的程序设计语言,Java就是一种语言,不过是一种针对jvm的语言,Java编译后是字节码,而jvm会把这些字节码解释成机器码,然后做出相应的动作。
3.jdk1.5后的三大版本
JavaSE,JavaME,JavaEE
4.jdk,jvm,jre
JDK是Java开发工具包,JRE是Java的运行环境,JVM是Java虚拟机。
JDK包含JRE,而JRE包含JVM
在这里插入图片描述

5.什么是跨平台,原理是什么
所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上运行。
实现原理:Java代码编译,执行Javac命令,生成.class文件;在执行java命令,类加载器加载进JVm中;又因为在安装Java运行环境时,JDk以与当前系统版本对应;从而达到一处编译,到出运行的结果;
6.java语言特点
简单易学 ;面向对象 ;支持网络编程也方便 ;支持多线程 ;健壮性 ;安全性
7.什么是字节码,什么好处
Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。 实现了跨平台
8.基本数据类型,和引用数据类型
在这里插入图片描述
引用数据类型:类,接口,数组
9.java语言采用何种编码方式?有何特点
Java语言采用Unicode编码标准,Unicode(标准码),它为每个字符制订了一个唯一的数值,因此在任何的语言,平台,程序都可以放心的使用。
10.java注释是什么
• 单行注释 格式: // 注释文字
• 多行注释 格式: /* 注释文字 /
• 文档注释 格式:/
* 注释文字 */
11.&与&&区别
&&是短路运算,如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。 导致结果单方面的侧向前面的运算结果.
&位与位的关系,表示and的作用,如果一边为false依旧执行&后的表达式
12.break,continue,return的区别及作用
break,跳出上一次循环,不执行循环
continue,跳出本次循环,继续下次循环
return,程序返回不执行接下来代码
13. String类可以被继承吗?
不可以,String类底层是字符数组,被final修饰,不能继承。
14.==和equals的区别是什么
==:它的作用是判断两个对象的地址是否相同(基本数据类型比较的是值,引用数据类型比较的是内存地址)
equals():他的作用也是判断两个对象是否相等但是当没有重写equals方法时等价于双等于,重写后比较其内容

15,String,StringBuilder,StringBuff有什么区别
String:长度不可改变,线程安全
StringBuff:长度可以改变,线程安全(在其内部有同步锁,当其他线程访问时,会让其他线程先执行)
StringBuilder:长度可以改变,线程不安全
操作少量数据:String
单线程操作大量数据:StringBuilder
多线程操作大量数据:StringBuff
16.如何将字符串翻转?
StringBuilder或StringBuff的reserve()
17.自动装箱与拆箱
自动装箱:将基本类型用他们对用的引用类型包装起来
自动拆箱:将包装类型转换为基本数据类型
18.基本数据类型和其对应的包装类
在这里插入图片描述

二、面向对象

1.特性

19.面向对象和面向过程的区别
面向过程,性能比面向对象高,面向对象易维护,易复用,易扩展
20.面向对象的五大基本原则
单一职责原则
开放封闭原则
里式替换原则
依赖倒置原则
接口分离原则

21.面向对象三大特性
继承,封装,多态
22.面向对象特征主要有以下几个方面,描述一下
抽象:一类事物的共同特征抽取出来,定义为抽象类(比如三角形,圆形,而图形就可为一个抽象类)
封装:把一个对象属性私有化,然后提供给你一些get和set方法,让你来调用,访问。
继承:子类可以继承父类的功能同时还可以在子类中定义新的功能。
多态:一个事物具有多种形态,父类引用指向子类对象。
23.什么是多态机制?Java语言是如何实现多态的
java的多态机制分为编译时的多态和运行时的多态,分别是重载和重写;
实现格式为左边是父类,右边是子类;也可以左边是接口,右边是实现类。总之,就是父类引用指向子类对象。
24.多态的实现条件
继承,重写,向上转型
25.重载和重写的区别
重载是在同一个类中,方法名相同,参数列表不同(参数类型不同,个数不同,顺序不同)
重写是发生在父子类中,方法名,参数列表必须相同,返回值小于父类,抛出异常小于父类,访问修饰符大于等于父类
26.Java中常用的包.
java.long:存放系统的基础类
java.io:存放所有输入,输出有关的类
java.nio:为了完善io包中的功能,提高io包的性能
java.util:系统辅助类,集合类
java.sql:数据库操作类54.字符型常量和字符串常量的区别
27.String s=new String(“xyz”)创建了几个对象
创建了一个或两个
当常量池中没有其对象时创建两个一个在常量池中,另一个放在堆内存中
如果常量池中有则创建一个在堆内存中
28.什么是字符串常量池
字符串常量池位于堆内存中,专门用于存储字符常量,提高内存使用率,在创建字符串时jvm会先检查字符串常量池,如果字符串已经存在池中则返回他的引用,如果不存在则实例 化一个字符串放到池中,返回其引用

***jdk1.6常量池在方法区
***jdk1.7常量池在堆里面

字符型常量:单引号,相当于一个整型值,占一个字节
字符串常量:双引号,代表地址,占若干个字节

29.成员变量与局部变量的区别<作用域,存储位置,生命周期,初始值>
作用域:类中方法外;类中方法中。
存储位置:在堆中;在栈中。
声明周期:随着对象的创建而存在,随着对象的消失而消失;
随着方法的调用而存在,随着方法的调用完毕而消失。
初始化值:有默认值(null值);没有默认值,必须定义,赋值,在使用。
30.对象的相等与指向他们的引用相等两者有什么不同?
对象相等比较其内存中内容是否相等而引用相等是比较他们指向的内存地址是否相等
31.值传递与引用传递有什么区别?
值传递:值得是在方法调用时,传递的参数是相当于复制的参数,传递后不相关
引用传递:指的是在方法调用时,传递的是引用的地址,变量对应内存空间的地址,传递前后是一个东西

2.Final Static

32.final有什么用
被final修饰的类不可以被继承
被final修饰的方法不可以被重写
被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的
33.final,finally与finalize区别
final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。
finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用用,当我们调用System.gc() 方法的时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收的最后判断。
34.this关键字用法
1.直接引用
2.形参与成员名字重名可以区分 (this.name = name)
3.引用本类的构造函数 (在一个多参数的构造方法中,调用参数少的构造方法)
35.super关键字用法
1.直接引用
2.子类中的成员变量或者方法与父类中的成员变量或方法同名时,用super区分
3.引用父类构造函数
36.static存在的主要意义
创建了独立的变量或者方法,即使没有创建对象也能直接使用属性和调用方法
37.常见的static应用场景
修饰成员变量,修饰成员方法,静态代码块,修饰类
38.static注意事项
1.静态只能访问静态
2.非静态既可以访问非静态的也可以访问静态的
39.静态变量与实例变量的区别
静态变量被static关键字修饰;
静态变量使用时,要类名.变量名;实例变量要在实例化后使用;
静态变量存储在方法区,实例变量存储在堆内存中;
40.静态变量与普通变量区别
静态变量是属于类的,JVM加载类时,会在内存中加载这个静态变量,用类来调用;而普通变量是属于类的,用对象来使用。
41.静态方法与普通方法有什么不同
静态方法不能访问非静态方法,非静态方法则都可以;
静态方法的使用为类名.方法;普通方法则要要先创建对象来使用。
42.在一个静态方法内调用一个非静态成员为什么是非法的?
使用非静态方法要先创建对象;而静态方法只能被实现。

43.创建一个对象用什么关键字?类实例与类的引用有何不同?
new关键字;
类的实例:通常就是说类创建的对象
类的引用:则是指类实例化后,在内存的地址(用变量名表示)

3.普通 抽象 接口

44.抽象类与接口的对比
他们都不能被实例化;
抽象类只能被一个类继承,而接口可以被多个类同时实现;
抽象类中可以有构造方法,接口中不可以;
接口是抽象方法的集合,抽象类用来描述子类的共同的抽象特征。
抽象注重样子,接口注重行为
45.接口与抽象类的选择必须遵守什么原则
行为应该通过接口定义,抽象类用于定义子类行为但又要为子类提供通用的功能
46.普通类与抽象类的区别
普通类不能包含抽象方法,抽象类可以包含普通方法
抽象类不能直接实例化,普通类可以直接实例化
47.抽象类可以用final修饰吗?
不可以,抽象类就是为了让其他类继承如果加上final则不能被继承

4.构造方法 内部类

48.构造器是否可以被重写?
构造器不能被继承,因此不能被重写但是可以被重载

49.在java中定义一个不做事且没有参数的构造方法的作用
是为了完成对象的初始化赋值。
50.在调用子类构造方法前会调用没有参数的构造方法其目的是
是为了帮助子类完成初始化赋值
51.如果一个类没有声明构造方法,程序修改可以正确执行吗?为什么?
当子类对象实例化时,子类必定会调用父类的构造方法。如果父类中没有的话,编译就会报错。
52.构造方法有什么特性?
构造方法没有返回值,且构造方法名与类名一样。
53.局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final?
是为了保护数据的一致性,保护引用变量的地址一样,保护基本数据的值一样
5.什么是内部类
在一个类中嵌套这另一个类,他有访问外部类的权限,通常被称为内部类。
55.内部类的种类
成员内部类;局部内部类;静态内部类;匿名内部类。

56.什么是方法的返回值?返回值作用是什么
返回值是我们获取某个方法体执行代码后产生的结果;作用是接收结果,用于其他操作。


**@喜欢的点赞关注,评论区留下宝贵的意见呐❥❥~**
  • 不足之处,欢迎雅正留言
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值