当前位置:   article > 正文

java面试题-基础篇(万字总结,带答案,面试官问烂,跳槽必备)_java基础经典面试题

java基础经典面试题

??个人主页: Java李小立
后面会持续更新java面试专栏,请持续关注
如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)

面试宝典列表(持续更新):

序号

内容

链接地址

1

Java基础篇

(点击跳转)java面试宝典-基础篇

2

Java集合框架

(点击跳转)java面试宝典-集合框架篇

3

Java多线程

(点击跳转)java面试宝典- 多线程篇

4

JVM篇

待分享

5

Spring篇

待分享

6

Mybatis篇

待分享

7

SpringcCloud篇

待分享

8

Redis篇

待分享

9

Mysql篇

待分享

10

dubbo篇

待分享

11

zookeeper篇

待分享

12

kafka篇

待分享

13

RocketMq篇

待分享

14

Nacos篇

待分享

(一)Java基础

1.1.Java历史简述

  • 1991 年Sun公司的James Gosling詹姆斯高斯林)等人开始开发名称为 Oak
    的语言,希望专攻计算机在家电产品上的嵌入式应用(如电视机顶盒、面包烤箱、移动电话等)。
  • 1995年将Oak语言更名为Java;
  • 2009年,甲骨文公司宣布收购Sun公司。

1.2. Java语言的特点

  1. 面向对象(封装,继承,多态);
  2. 平台无关性( Java 虚拟机实现平台无关性,一次编译,到处运行);
  3. 简单易学(与C语言的面向过程相比,Java的面向对象更接近人的语言习惯);
  4. 安全性,可靠性(Java中没有指针,程序员无法直接操作内存,而是把操作权限交给Java虚拟机,使程序不容易出现不容易出现内存泄漏和内存溢出问题。);
  5. 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 java的lang包提供一个Thread类本身就支持多线程);
  6. 编译与解释并存(Java编译生成字节码文件,交给Java虚拟机解释);

1.3. 面向对象与面向过程对比。

我们都知道Java的核心思想是面向对象,Java中万事万物皆对象,那么面向对象与面向过程有什么不同呢?

(1).面向过程

优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点: 没有面向对象易维护、易复用、易扩展。

(2).面向对象

优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
缺点: 性能比面向过程低。

1.4. Java平台的三个版本J2EE、J2SE、J2ME。

JavaSE:即Java标准版,主要用于开发和部署桌面、例如,Java应用程序开发平台Eclipse(常说的CS架构)。
JavaEE:即Java企业版,主要针对企业应用的开发。例如,电商网站(常说的BS架构)。
JavaME:即Java微型版,主要针对移动设备和嵌入式设备。例如,手机、PDA、电视机顶盒等等。

注:从JDK 5.0开始 J2EE 改名为 java EE,J2SE 改名为 java SE,J2ME 改名成 java ME。

1.5. JDK、JRE、JVM之间的区别于关系。

LZ身边很多Java程序员,虽然写了很久的代码,但问他们jre 和 jdk 之间有什么关系,jvm 又是什么东西,很多人都讲的不是特别清楚,作为一个合格的Java程序员了解这方面的基础理论知识是很必要的。

(1).三者之间的区别:

JDK:(Java Development Kit)即java的开发与运行环境,他除了包含完整的JRE之外,还包含了供开发者使用的工具包。
JRE:(Java Runtime Environment)即Java运行环境,非开发者只需要安装 JRE来运行程序, 它包含java运行的所需的类库+JVM(java虚拟机)。
JVM: (Java Virtual Machine) 即Java虚拟机, 当我们运行一个程序时,JVM 负责将字节码转换为特定机器代码,JVM 提供了内存管理/垃圾回收和安全机制等。这种独立于硬件和操作系统,正是 java 程序可以一次编写多处执行的原因。

(2).三者之间的关系

  1. 作为程序员,就必须安装JDK,因为其中包含Java开发工具包,同时也包含了JRE。
  2. 作为使用者,运行已经开发好的Java程序,只需要安装JRE。
  3. JVM和JRE的关系:JRE包含了JVM,JVM是运行Java程序的核心虚拟机,同时也包含了Java程序所需的环境支持
  4. 总结:JDK>JRE>JVM
    在这里插入图片描述

1.6. 什么是Java环境变量?

  1. 环境变量的意义
    让java bin目录下的工具,可以在任意目录下运行,原理是将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。
  2. JAVA_HOME
    1. 它指向jdk的安装目录,引用%JAVA_HOME%即可,避免每次引用都输入很长的路径串,方便第三方软件引用约定好的JAVA_HOME变量,保证程序正常运行。
  3. Path环境变量
    设置Path环境变量之后就可以在任何目录下执行javac/java等工具命令了。 系统默认先去当前路径下找要执行的程序,如果没有,再去path中设置的路径下找。
  4. ClassPath
    如果指定了classpath,那么会在指定的目录下查找要运行的类文件(JDK1.5后不需要配置

1.7. javac命令和java命令做什么事情呢?

java运行分两部分:一个是编译,一个是运行。
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序。对指定扩展名的.java文件进行编译。编译后生成class文件。
java:负责运行的部分.会启动jvm虚拟机,加载运行时所需的类库,并对class文件进行执行.

一个文件要被执行,必须要有一个执行的起始点,这个起始点就是main函数.

1.8. 什么是字节码,采用字节码的好处是什么。

首先我们来谈谈Java文件类型,一共有两种:

  1. 扩展名为Java,Java的源文件,编译之前的纯文本文件,用来储存Java源代码。

  2. 扩展名为class,Java 的类文件,编译之后的二进制文件,存储的是字节码

    也就是说编译后的.class文件存储就是字节码*。

    采用字节码的最大好处: 可以实现一次编译到处运行,也就是java的与平台无关性,它依靠不同平台的Java虚拟机将编译后的字节码解释成具体平台上的机器指令执行。

1.9. import java和javax有什么区别

刚开始的时候 JavaAPI 所必需的包是 java 开头的包,javax 当时只是扩展 API 包来说使用。然而随着时间的推移,javax 逐渐的扩展成为 Java API 的组成部分。但是,将扩展从 javax 包移动到 java 包将是太麻烦了,最终会破坏一堆现有的代码。因此,最终决定 javax 包将成为标准API的一部分。
所以,实际上java和javax没有区别。这都是一个名字。

1.10. Java

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/1022037
推荐阅读
相关标签
  

闽ICP备14008679号