每天10道Java面试题,跟我走,offer有!

1.简述JDK、JRE、JVM?

一、JDK
JDK(Java Development Kit) 是整个JAVA的核心,
包括了Java运行环境(Java Runtime Envirnment),
一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JDK是java开发工具包,
基本上每个学java的人都会先在机器 上装一个JDK,
那他都包含哪几部分呢?
在目录下面有 六个文件夹、一个src类库源码压缩包、和其他几个声明文件。
其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。
有这样一个关系,JDK包含JRE,而JRE包 含JVM。
bin:最主要的是编译器(javac.exe)
include:java和JVM交互用的头文件
lib:类库
jre:java运行环境 

二、JRE
JRE(Java Runtime Environment,Java运行环境)
包含JVM标准实现及Java核心类库。
JRE是Java运行环境,并不是一个开发环境,
所以没有包含任何开发工具(如编译器和调试器)
JRE是指java运行环境。
光有JVM还不能成class的 执行,
因为在解释class的时候
JVM需要调用解释所需要的类库lib。 (
jre里有运行.class的java.exe)
JRE ( Java Runtime Environment ),
是运行 Java 程序必不可少的
(除非用其他一些编译环境编译成.exe可执行文件……),
JRE的 地位就象一台PC机一样,
我们写好的Win64应用程序需要操作系统帮 我们运行,
同样的,我们编写的Java程序也必须要JRE才能运行。

三、JVM
JVM(Java Virtual Machine),
即java虚拟机, java运行时的环境,
JVM是一种用于计算设备的规范,
它是一个虚构出来的计算机,
是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
针对java用户,
也就是拥有可运行的.class文件包(jar或者war)的用户。
里面主要包含了jvm和java运行时基本类库(rt.jar)。
rt.jar可以简单粗暴地理解为:
它就是java源码编译成的jar包。
Java虚拟机在执行字节码时,
把字节码解释成具体平台上的机器指令执行。
这就是Java的能够“一次编译,
到处运行”的原因。

2.JDK、JRE、JVM三者的有什么联系和区别?

1.三者联系:
JVM不能单独搞定class的执行,
解释class的时候JVM需要调用解释所需要的类库lib。
在JDK下面的的jre目录里面
有两个文件夹bin和lib,
在这里可以认为bin里的就是jvm,
lib中则是jvm工作所需要的类库,
而jvm和 lib和起来就称为jre。
JVM+Lib=JRE。
总体来说就是,
我们利用JDK(调用JAVA API)开发了属于
我们自己的JAVA程序后,
通过JDK中的编译程序(javac)
将我们的文本java文件编译成JAVA字节码,
在JRE上运行这些JAVA字节码,
JVM解析这些字节码,
映射到CPU指令集或OS的系统调用。

2.三者区别:
JDK和JRE区别:
在bin文件夹下会发现,
JDK有javac.exe而JRE里面没有,
javac指令是用来将java文件编译成class文件的,
这是开发者需要的,
而用户(只需要运行的人)是不需要的。
JDK还有jar.exe, javadoc.exe等等
用于开发的可执行指令文件。
这也证实了一个是开发环境,
一个是运行环境。
b.JRE和JVM区别:
JVM并不代表就可以执行class了,
JVM执行.class还需要JRE下的lib类库的支持,
尤其是rt.jar。

3、简述Java程序编译和运行的过程?

Java程序从源文件创建到程序运行要经过两大步骤:
1、源文件由编译器编译成字节码(ByteCode);
2、字节码由java虚拟机解释运行。
因为java程序既要编译同时
也要经过JVM的解释运行,
所以说Java被称为半解释语言

第一步(编译):
创建完源文件之后,
程序先要被JVM中的java编译器
进行编译为.class文件。
java编译一个类时,
如果这个类所依赖的类还没有被编译,

编译器会自动的先编译这个所依赖的类,
然后引用。
如果java编译器在指定的目录下
找不到该类所依赖的类的 .class文件或者 .java源文件,
就会报"Cant found sysbol"的异常错误。

编译后的字节码文件格式
主要分为两部分:
常量池和方法字节码。
常量池记录的是代码出现过的(常量、类名、成员变量等)
以及符号引用(类引用、方法引用,成员变量引用等);
方法字节码中放的是各个方法的字节码。

第二步(运行):
java类运行的过程大概分为两个步骤:
(1)类的加载
(2)类的执行。
需要说明的一点的是:
JVM主要在程序第一次运行时主动使用类的时候,
才会立即去加载。
换言之,
JVM并不是在运行时就会把所有使用到的类
都加载到内存中,
而是用到,不得不加载的时候,
才加载进来,而且只加载一次!

4、请说出八种基础数据类型及字节大小?

1. byte                  8位

2. short                16位

3. int                  32位

4. long                 64位

5. float                32位

6. double               64位

7. boolean               1位

8. char                 16位

顺便在此给大家推荐一个Java架构方面的交流学习群:698581634,里面会分享一些资深架构师录制的视频资料:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系,主要针对Java开发人员提升自己,突破瓶颈,相信你来交流学习,会有提升和收获。

5.说说&和&&的区别?

&和&&都是逻辑运算符,
都是判断两边同时真则为真,否则为假;
但是&&当第一个条件不成之后,
后面的条件都不执行了,
而&则还是继续执行,
直到整个条件语句执行完为止。

6.float型float f=3.4是否正确?

答:
不正确;
精度不准确,
应该用强制类型转换,
如下所示:float f=(float)3.4

7.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

short s1 = 1; s1 = s1 + 1; s1+1
运算结果是int型,
需要强制转换类型; 

short s1 = 1; s1 += 1;
可以正确编译,自动类型提升。

8.int 和 Integer 有什么区别?

Java 提供两种不同的类型:
引用类型和原始类型(或内置类型);
int是java的原始数据类型,
Integer是java为int提供的封装类。 

引用类型和原始类型的行为完全不同,
并且它们具有不同的语义。
引用类型和原始类型具有不同的特征和用法,

它们包括:大小和速度问题,
这种类型以哪种类型的数据结构存储,

当引用类型和原始类型
用作某个类的实例数据时所指定的缺省值。

对象引用实例变量的缺省值为 null,
而原始类型实例变量的缺省值
与它们的类型有关。

9.在JAVA中,如何跳出当前的多重嵌套循环?

在最外层循环前加label标识,
然后用break:label方法即可跳出多重循环。
ok:while(true){
    while(true){
        break ok;
    }
}

10.使用嵌套的for循环打印九九乘法表。

public class test {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + i * j + " ");
            }
            System.out.println();
        }
    }

原文地址:https://www.cnblogs.com/gp666/p/9906019.html

时间: 2024-10-10 22:08:03

每天10道Java面试题,跟我走,offer有!的相关文章

90%的Java程序员不会的10到Java面试题

先来看看这10道Java面试题你会几道?1.为什么等待和通知是在 Object 类而不是 Thread 中声明的?2.为什么Java中不支持多重继承?3.为什么Java不支持运算符重载?4.为什么 String 在 Java 中是不可变的?5.为什么 char 数组比 Java 中的 String 更适合存储密码?6.如何使用双重检查锁定在 Java 中创建线程安全的单例? 编写 Java 程序时, 如何在 Java 中创建死锁并修复它? 如果你的Serializable类包含一个不可序列化的成

Java程序员的10道XML面试题

如今,面对web开发人员的Java各种面试中,XML面试题在各种编程工作的面试中很常见.XML是一种成熟的技术,经常作为从一个平台到其他平台传输数据的标准.XML面试问题包括用于转换XML文件的XSLT技术,以及XPATH,XQuery等各种XML技术和XML基础知识. 笔者从论坛收集看到常见的XML面试问答题.这些问题大部分在Java面试中会问到,同时在C,C++,Scala或其他语言的编程面试中同样很有用处.作为编程人员所需要的技能之一,在任何技术工作面试之前准备一些XML问题是很有意义的.

黑马程序员 &nbsp; 两道java面试题

1.List,Set,Map是否都继承了Collection接口?  List,Map比较常用:List是通过下标来访问元素,Map是通过键值进行访问元素.应该不会同时都实现了Collection接口.  Collection是一个什么概念?还有Set在java中是怎样定义的?他是通过下标来访问元素还是通过键值来访问元素?两者谁继承了Collection接口呢?或者有没有可能两者都继承了Collection接口?时间不多了,我是这样写的:  Set,Map实现了Collection接口.而Lis

10道java经典算法题,每一题都能提升你的java水平!第二弹!

10道java经典算法! 持续更新java小知识,跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发! [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去   掉不满足条件的排列. public class Wanshu { public static void main(String[] args) { int i=0; int j=

蓝鸥成都整理Java程序员的10道XML面试题

蓝鸥成都给大家整理了10道常见的XML面试问答题,这些问题大部分在Java面试中会问到.XML并不依赖于其他编程语言,同SQL一样是编程人员所需要的技能之一,因此在任何技术工作面试之前准备一些XML问题是很有意义的. XML面试问答 这些问题并不很难但涵盖了XML技术的一些重要领域,比如DTD,XML Schema,XSLT转换,XPATH检索,XML绑定,XML解析器以及XML的基本知识,比如命名空间,校验,属性,元素等. 问题1:XML是什么? 答:XML即可扩展标记语言(Extensibl

重点|183道Java面试题可以说很详细了

链接:http://t.cn/AiDMxg6g Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象.因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别

精选30道Java笔试题解答

个人觉得整理的超级好的Java笔试题,原文请见 http://blog.csdn.net/lanxuezaipiao/article/details/16753743 1. 下面哪些是Thread类的方法() A start()       B run()       C exit()       D getPriority() 答案:ABD 解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方

100道Java面试题收集整理及参考答案

不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题. 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Client/Server),客户端/服务端,桌面应用程序 2.你所知道网络协议有那些? HTTP:超文本传输协议 FTP:文件传输协议 SMPT:简单邮件协议 TELNET:远程终端协议 POP3:邮件读取协议 3.Java都有那些开发平台? JAVA SE:主要用在客户端开发 JAVA EE:主要用

2019年自做407道 Java面试题 答案

基础与语法 JDK和JRE有什么区别? ==和equals的区别是什么? 基本类型和包装类对象使用 == 和 equals进行比较的结果? 什么是装箱?什么是拆箱?装箱和拆箱的执行过程?常见问题? hashCode()相同,equals()也一定为true吗? final在java中的作用 final finally finalize()区别 finally语句块一定执行吗? final与static的区别 return与finally的执行顺序对返回值的影响 String对象中的replace