1、面向对象的特性有哪些?

答:继承、封装、多态

  • 封装 隐藏对象的属性和实现细节,对外提供接口访问。
  • 继承 子类继承父类,保留父类的属性和方法,并可以进行扩展。
  • 多态 不同的对象有相同的行为,但具体执行过程不同。

假设你是个妹子,你有一个男朋友,他帅,会做饭,我不关心为什么他帅,怎么做饭,我让他做饭他就做饭。这就是封装。
假设你是个妹子并且有多个男朋友,男朋友的基本要求是帅,男朋友A是高帅,男朋友B是富帅。这就是继承。
假设你是个妹子并且有多个男朋友,都说要带我去兜风,一个说骑摩拜,一个说坐宝马。这就是多态。

2、面向对象和面向过程的区别?

答:

面向对象是指以对象为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤依次实现,使用时依次调用;

面向过程是指以过程为中心的编程思想,把构成问题的事务分解成各个对象,描述某个事务在整个解决问题的步骤中的行为。

3、JDK、JRE和JVM的联系和区别?

答:

JDK(Java Development Kit)是指Java语言的软件开发工具包,包含Java的运行环境(JVM、Java系统类库)和Java工具(编译器、调试器等)。

JRE(Java Runtime Environment)是指Java运行环境,包含JVM+Java系统类库。

JVM(Java Virtual Machine)是指Java虚拟机,当我们运行一个程序时,JVM负责将字节码解释成具体平台上的机器命令。这就是Java的能够“一次编译,到处运行”的原因。

区别:

1)JDK用于开发,JRE用于运行Java程序。

2)JDK和JRE中都包含JVM。

又问:JDK中常用的包有哪些?

答:java.lang、java.util、java.io、java.net、java.sql、java.servlet

4、Java中重写和重载是什么意思?

答:

重写(override)是指子类对父类方法的重写。

重载(overload)是指在同一个类中,方法名一样,但参数列表不同。

又问:那么构成重写的条件有哪些?

答:

1)子类的方法名、参数以及返回值类型必须和所覆盖的方法相同

2)子类方法的访问权限不能比父类小

3)子类方法不能比父类抛出更多的异常

又问:那么构成重载的条件有那些?

答:

1)参数类型不同

2)参数个数不同

3)参数顺序不同。

又问:方法的返回值不同可以构成重载吗?为什么?
答:不可以。因为Java中调用函数并不需要强制给返回值赋值,可能会调用方法而忽略返回值,这时Java无法判断调用哪个方法。

又问:重载是否可以改变返回值的类型?

答:可以。重载本质上是完全不同的方法,只是恰好取了相同的方法名。

5、抽象类和接口的区别有哪些?

答:

  • 抽象类是指包含一个或多个抽象方法的类,不能被实例化。
  • 接口是指描述具有什么功能,不提供每个功能的具体实现。
待插入

1)使用方式:抽象类只能通过继承(extends)被使用;接口只通过实现(implements)被使用。

2)实现方式:抽象类不仅能通过抽象方法,也能提供实现方法;接口只能提供抽象方法,但Java8中能提供实现方法,前提是方法前加一个default修饰符。

又问:抽象类和接口如何选择?

答:

1)如果要创建不带任何方法定义和成员变量的基类,应选择接口而不是抽象类。

2)如果知道某个类是基类,第一选择应该是让它成为接口,只有在必须有方法定义和成员变量时,才应该选择抽象类。因为抽象类存在一个或多个抽象方法,只要方法没有全部被实现,该类就还是抽象类。

6、Java和C++的区别

相同点:都是面向对象的语言,都支持封装、继承和多态

不同点:

1)指针 Java不提供指针来直接访问内存,C++提供。

2)继承 Java的类是单继承,C++支持多继承;Java是通过一个类实现多个接口来实现C++中的多继承。

3)内存 Java有自动内存管理机制,不需要程序员手动释放。

7、static关键字是什么意思?

答:static关键字表示一个成员变量或成员方法可以在没有所属类的实例变量的情况下被访问。

又问:Java中是否可以重写一个static的方法?

答:不可以。因为方法覆盖是基于运行时动态绑定的,而static方法是编译时动态绑定的,static方法和类的任何实例都不相关,所以概念上不适用。

又问:是否可以从一个static方法内部发出对非static方法的调用?

答:不可以。因为非static方法需要一个具体的实例才能被调用,而调用static时不一定存在一个实例。

8、Java是值传递还是引用传递?

答:值传递。

  • 值传递 是指在调用函数时将实际参数复制一份传递给函数,这样在函数中如果对参数进行修改,将不会影响到实际参数。
  • 引用传递 是指在调用函数时将实际参数的地址直接传递给函数,这样在函数中如果对参数进行修改,将影响到实际参数。

9、Interger的缓存机制

答:在JVM启动时就缓存了-128到127这个区间的所有数字。

10、下述两种方法分别创建了几个String对象?

// 第一种:直接赋一个字面量
String str1 = "ABCD";
// 第二种:通过构造器创建
String str2 = new String("ABCD");

答:

String str1 = "ABCD"; 不创建或创建一个String对象。如果常量池中存在"ABCD",则直接引用,不创建String对象。如果不存在,则先创建String对象,再引用。

String str2 = new String("ABCD"); 创建一个或两个String对象。因为new关键字一定会创建一个对象。

11、++i 和i++的区别

答:

++都是先将变量的值加1,然后才继续运算的。

区别:前置++是将变量的值+1后,使用增值后的变量进行运算的,而后置++是首先将变量赋值给一个临时变量,然后用临时变量进行运算。

12、交换整型变量的三种方式

答:

1)通过第三个变量交换数值

class TestEV
//创建一个类
{public static void main(String[]args){int x =5,y=10; //定义两个变量int temp = x;    //定义第三临时变量temp并提取x值x = y;        //把y的值赋给xy = temp;      //然后把临时变量temp值赋给y
        System.out.println("x="+x+"y="+y);}}

2)通过相加的方式,弊端在于如果 x 和 y 的数值过大的话,超出 int 的值会损失精度。

class TestEV
//创建一个类
{public static void main(String[]args){int x =5,y=10; //定义两个变量
        x = x + y;        //x(15) = 5 + 10;y = x - y;        //y(5) = x(15) - 10;        x = x - y;        //x(10) = x(15) - y(5)System.out.println("x="+x+"y="+y);}}

3)通过异或的方式,一个数异或同一个数两次,结果还是那个数,而且不会超出int范围

class TestEV
//创建一个类
{public static void main(String[]args){int x =5,y=10; //定义两个变量
        x = x^y;y = x^y;  //y=(x^y)^yx = x^y;  //x=(x^y)^xSystem.out.println("x="+x+"y="+y);}}

13、Java对象初始化顺序

答:不考虑静态成员的初始化,调用一个对象的构造函数时,程序先调用父类的构造函数,之后静态成员变量的初始化函数和静态初始化块则按照在代码当中的顺序执行,成员变量如果没有指定值则赋予默认值,也就是基本类型0、false、对象null,最后调用自身构造函数。

public class Derive extends Base
{private Member m1 = new Member("Member 1");{System.out.println("Initial Block()");}public Derive() {System.out.println("Derive()");}private Member m2 = new Member("Member 2");private int i = getInt();private int getInt(){System.out.println("getInt()");return 2;}public static void main(String[] args){new Derive();}
}class Base
{public Base(){System.out.println("Base()");}
}class Member
{public Member(String m){System.out.println("Member() "+m);}
}

程序的输出结果是:
Base()
Member() Member 1
Initial Block()
Member() Member 2
getInt()
Derive()

  

14、true、false、null、goto、const是关键字吗?

答:

true、false不是关键字,是布尔类型的常量。

null不是关键字,是引用类型的常量。

goto和const是保留关键字,没有实际意义。

15、exception和error有什么区别?

相同点:

exception和error都实现了Throwable接口。

不同点:

exception是指代码逻辑的异常,比如下标越界OutOfIndexException。

error是JVM层面的错误,比如内存不足OutOfMemoryError。

16、throw和throws有什么区别?

throws 用在方法声明上面,表示该方法有可能抛出某个异常,多个异常是用逗号分隔的。
throw 抛出一个指定的异常。

转载于:https://www.cnblogs.com/acuii/p/10457549.html

Java面试知识点之Java基础相关推荐

  1. Java面试知识点(全)- Java面试基础部分一

    Java面试知识点(全) :https://nanxiang.blog.csdn.net/article/details/130640392 Java基础 语法基础 面向对象 封装 利用抽象数据类型将 ...

  2. Java面试知识点(全)- Java面试基础部分三

    Java面试知识点(全)https://nanxiang.blog.csdn.net/article/details/130640392 注:随时更新 文章目录 ThreadPoolExecutor ...

  3. Java 面试知识点解析(一)——基础知识篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  4. Java 面试知识点解析(七)——Web篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  5. Java 面试知识点解析(六)——数据库篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  6. Java 面试知识点解析(五)——网络协议篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  7. Java 面试知识点解析(三)——JVM篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  8. Java 面试知识点解析(二)——高并发编程篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  9. 2019年秋招 Java 面试知识点梳理(高频问题)

    Java 面试知识点梳理 基础一 JVM-内存区域分配 HotSpot 对象创建 JVM-类加载机制 JVM-内存分配(堆上的内存分配) JVM-GC回收机制 JVM-垃圾收集器 JVM指令重排序 重 ...

最新文章

  1. python模块之image修改图片类型
  2. python调用动态链接库windows_用win从python ctypes调用标准windows.dll的Segfault
  3. Web 趋势榜: 上周不可错过的最热门的 10 大 Web 项目 - 又增加了那么多的好项目啊 - 210611...
  4. 数据挖掘算法之决策树算法总结
  5. HTML+CSS+JS实现 ❤️基于Javascript简单计算器特效❤️
  6. netty实现gmssl_gmssl国密总结
  7. Vue2在使用Element-UI的分页组件遇到的问题(如PageSize,PageNum等)
  8. 598. 范围求和 II【我亦无他唯手熟尔】
  9. Educoder/头歌JAVA实训——JAVA面向对象:类与对象
  10. 122、影响爆炸极限的因素
  11. 苹果呼叫转移设置不了_手机不想接电话怎么设置为空号教程
  12. 计算机数学与高中数学衔接,浅谈大学数学与高中数学的衔接.doc
  13. LocalSend - 文件传输工具
  14. 修改IP地址和主机名
  15. 新视野大学英语第三版第二册视听说
  16. jenkins找不到Build when a change is pushed to GitHub
  17. 1,WLAN的基本概念
  18. 面具星球推荐:3个超级实用的免费网盘搜索网站,只有你想不到没有它搜不到的
  19. 海淀育新学校2021高考成绩查询,首师附育新“加工能力”不容小觑!海淀7000名以内可“签约”实验班...
  20. 业界 !从未卜先知的信号灯说起,阿里城市大脑的智慧交通实践

热门文章

  1. jdk6(Jdk6 tls)
  2. Java网络编程:TCP实现群聊私聊代码
  3. ubuntu 下JAVA环境变量设置
  4. 7-5 病毒溯源 (25 分)
  5. 电信光纤猫多用户上网的破解
  6. 脉冲波形的产生与变换
  7. 图像分割 - Hough变换直线检测
  8. 树(二)——二叉树遍历
  9. uboot启动参数详解和一些细节
  10. 牛客练习赛 43 F Tachibana Kanade Loves Game 容斥原理(Java版ac)