Java面试题-Java核心基础

简介: Java面试题-Java核心基础

目录

一、Java语言有什么特点

二、JDK、JRE、JVM的区别

三、JavaSE和JavaEE的区别

四、什么是字节码,使用字节码的好处

五、为什么说Java语言是编译与解释并行

六、OpenJDK和OracleJDK的区别

七、Java和C++的区别

一、Java语言有什么特点
答:

  1. 面向对象 具备面向对象的三大特性(封装、继承、多态)

  2. 其次最大的特点就是简单,相较于c++来说已经很简单了。而且Java语言的设计初衷就是为了提供一种比c++容易学,而且各方面也不错的一种面向对象的语言,所以就诞生了Java

....可以扯上它两的区别 指针 释放要自己管理内存 继承

  1. 其次还有跨平台,由于Jvm的存在,使得只需要生成一次字节码,就能够到处运行

  2. 安全

3.1 最大的就是使用jvm的垃圾回收机制 不需要我们程序员手动的去管理内存,降低了内存泄漏的风险

3.2 从Java语言本身的特性语法来考虑

异常机制、封装使用权限修饰符

  1. 多线程

可以很简单进行多线程编程

二、JDK、JRE、JVM的区别
先说JVM JVM就是java虚拟机 它的作用就是起到一个翻译的作用

然后加上核心内库 = JRE JRE就已经有了Java代码的运行环境了 所以说如果只是单纯的跑代码 安装JRE就行了

在JRE的基础再加上一点Java的工具 就变成了JDK了 Java的工具就是bin包下面的一些命令 java javac javap javadock jconsole jms

三、JavaSE和JavaEE的区别
JavaSE是Java基础类库JVM的核心组件

JavaEE是JavaSE的升级版 Java企业级类库 包含一些规范(Servlet、JSP)专为企业开发打造

还有一个JavaME Java微型类库 为了小电器里面运行

四、什么是字节码,使用字节码的好处
字节码就是通过javac命令得到的这样一种文本 还不能直接运行

字节码就只面向JVM,只有JVM才懂它 交由JVM翻译成机器码与操作系统打交道

好处:就是实现跨平台性 具体就是说我这个代码只要生成了一个字节码,这个字节码就可以只需要一份 然后交由不同操作系统上面的JVM翻译成对应的操作系统所能理解的机器码

五、为什么说Java语言是编译与解释并行
首先就是要理解什么是编译型语言什么又是解释型语言

编译型语言

很直接 可以直接将源代码一次编译成机器码 所以效率很高 但是开发效率低 c系语言

解释型语言

它是需要逐行进行解释运行,就是解释一行我就运行一行 没有编译的这一说 只有解释

执行效率低下 但是开发效率高

到底为什么Java是编译与解释并行的呢?

因为Java代码首先需要使用javac命令将其编译成字节码 然后需要使用JVM的执行引擎来进行解释

虽然是解释 但是对于热点代码 JVM使用jJIT即时编译器 可以将热点代码直接编译成机器码 以后就不需要再次解释了 直接运行机器码就行了

六、OpenJDK和OracleJDK的区别

  1. 是否开源 前者完全开源 后者部分开源

  2. 是否免费 前者完全免费 后者部分版本需要收费 但是随着Java版本的推进 就比如JDK11也是免费的

  3. 功能性 OpenJDK肯定功能没有OrecleJDK强的 就比如说一些Java工具 OpenJDK就没有

JFR、JMC监控工具

七、Java和C++的区别

  1. Java更简单 舍弃了C++中的指针 并且不支持多继承 c++还支持运算符重载 Java不支持

  2. Java语言是可以使用JVM的垃圾回收机制自动的进行内存管理 而C++则需要程序员手动的释放内存

  3. 安全性 c++可以手动的操作内存 而Java不行
    ————————————————
    版权声明:本文为CSDN博主「渣瓦攻城狮」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/m0_63445035/article/details/133781236

目录
相关文章
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
71 2
|
21天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
53 14
|
1月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
1月前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
26天前
|
Java 编译器 程序员
Java面试高频题:用最优解法算出2乘以8!
本文探讨了面试中一个看似简单的数学问题——如何高效计算2×8。从直接使用乘法、位运算优化、编译器优化、加法实现到大整数场景下的处理,全面解析了不同方法的原理和适用场景,帮助读者深入理解计算效率优化的重要性。
30 6
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
57 4
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
114 4
|
2月前
|
存储 安全 算法
Java面试题之Java集合面试题 50道(带答案)
这篇文章提供了50道Java集合框架的面试题及其答案,涵盖了集合的基础知识、底层数据结构、不同集合类的特点和用法,以及一些高级主题如并发集合的使用。
116 1
Java面试题之Java集合面试题 50道(带答案)
|
2月前
|
存储 Java 程序员
Java面试加分点!一文读懂HashMap底层实现与扩容机制
本文详细解析了Java中经典的HashMap数据结构,包括其底层实现、扩容机制、put和查找过程、哈希函数以及JDK 1.7与1.8的差异。通过数组、链表和红黑树的组合,HashMap实现了高效的键值对存储与检索。文章还介绍了HashMap在不同版本中的优化,帮助读者更好地理解和应用这一重要工具。
66 5
下一篇
DataWorks