1)什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?

Java虚拟机是一个能够运行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机运行的字节码文件。

Java被设计成同意应用程序能够执行在随意的平台,而不须要程序猿为每个平台单独重写或者是又一次编译。

Java虚拟机让这个变为可能。由于它知道底层硬件平台的指令长度和其它特性。

2)JDK和JRE的差别是什么?

Java运行时环境(JRE)是将要运行Java程序的Java虚拟机。它同一时候也包括了运行applet须要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包括了JRE。编译器和其它的工具(比方:JavaDoc,Java调试器)。能够让开发人员开发、编译、运行Java应用程序。

3)”static”keyword是什么意思?Java中能否够覆盖(override)一个private或者是static的方法?

“static”keyword表明一个成员变量或者是成员方法能够在没有所属的类的实例变量的情况下被訪问。

Java中static方法不能被覆盖,由于方法覆盖是基于执行时动态绑定的。而static方法是编译时静态绑定的。static方法跟类的不论什么实例都不相关。所以概念上不适用。

4)能否够在static环境中訪问非static变量?

static变量在Java中是属于类的,它在全部的实例中的值是一样的。当类被Java虚拟机加载的时候。会对static变量进行初始化。

假设你的代码尝试不用实例来訪问非static的变量。编译器会报错,由于这些变量还没有被创建出来,还没有跟不论什么实例关联上。

5)Java支持的数据类型有哪些?什么是自己主动拆装箱?

Java语言支持的8中基本数据类型是:byte、short、int、long、float、double、boolean、char

自己主动装箱是Java编译器在基本数据类型和相应的对象包装类型之间做的一个转化。比方:把int转化成Integer,double转化成Double,等等。反之就是自己主动拆箱。

6)Java中的方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

Java中的方法重载发生在同一个类里面两个或者是多个方法的方法名同样可是參数不同的情况。与此相对,方法覆盖是说子类又一次定义了父类的方法。方法覆盖必须有同样的方法名,參数列表和返回类型。

覆盖者可能不会限制它所覆盖的方法的訪问。

7)Java中。什么是构造函数?什么是构造函数重载?什么是复制构造函数?

当新对象被创建的时候,构造函数会被调用。每个类都有构造函数。在程序猿没有给类提供构造函数的情况下。Java编译器会为这个类创建一个默认的构造函数。

Java中构造函数重载和方法重载非常相似。能够为一个类创建多个构造函数。每个构造函数必须有它自己唯一的參数列表。

Java不支持像C++中那样的复制构造函数,这个不同点是由于假设你不自己写构造函数的情况下。Java不会创建默认的复制构造函数。

8)Java支持多继承么?

Java中类不支持多继承,仅仅支持单继承(即一个类仅仅有一个父类)。
可是java中的接口支持多继承,,即一个子接口能够有多个父接口。

(接口的作用是用来扩展对象的功能。一个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了对应的功能)。

9)接口和抽象类的差别是什么?

Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:

接口中全部的方法隐含的都是抽象的。而抽象类则能够同一时候包括抽象和非抽象的方法。

类能够实现非常多个接口,可是仅仅能继承一个抽象类

类能够不实现抽象类和接口声明的全部方法。当然。在这样的情况下,类也必须得声明成是抽象的。

抽象类能够在不提供接口方法实现的情况下实现接口。

Java接口中声明的变量默认都是final的。抽象类能够包括非final的变量。

Java接口中的成员函数默认是public的。抽象类的成员函数能够是private,protected或者是public。

接口是绝对抽象的,不能够被实例化。抽象类也不能够被实例化,可是,假设它包括main方法的话是能够被调用的。

10)什么是值传递和引用传递?

对象被值传递,意味着传递了对象的一个副本。因此。就算是改变了对象副本。也不会影响源对象的值。

对象被引用传递,意味着传递的并非实际的对象。而是对象的引用。因此,外部对引用对象所做的改变会反映到全部的对象上。

11)进程和线程的差别是什么?

进程是运行着的应用程序,而线程是进程内部的一个运行序列。一个进程能够有多个线程。线程又叫做轻量级进程。

12)创建线程有几种不同的方式?你喜欢哪一种?为什么?

有三种方式能够用来创建线程:

继承Thread类

实现Runnable接口

应用程序能够使用Executor框架来创建线程池

实现Runnable接口这样的方式更受欢迎,由于这不须要继承Thread类。在应用设计中已经继承了别的对象的情况下。这须要多继承(而Java不支持多继承),仅仅能实现接口。

同一时候,线程池也是非常高效的,非常easy实现和使用。

13)概括的解释下线程的几种可用状态。

新建、可执行、执行、堵塞、死亡

14)同步方法和同步代码块的差别是什么?

差别:

同步方法默认用this或者当前类class对象作为锁;

同步代码块能够选择以什么来加锁,比同步方法要更细颗粒度。我们能够选择仅仅同步会发生同步问题的部分代码而不是整个方法;

15)在监视器(Monitor)内部,是怎样做线程同步的?程序应该做哪种级别的同步?

监视器和锁在Java虚拟机中是一块使用的。

监视器监视一块同步代码块。确保一次仅仅有一个线程运行同步代码块。每个监视器都和一个对象引用相关联。线程在获取锁之前不同意运行同步代码。

16)什么是死锁(deadlock)?

两个或多个进程都在等待其它部分进程运行完成才干继续往下运行的时候就发生了死锁。

结果就是全部进程都陷入了无限的等待中。

17)怎样确保N个线程能够訪问N个资源同一时候又不导致死锁?

使用多线程的时候,一种很easy的避免死锁的方式就是:指定获取锁的顺序。并强制线程依照指定的顺序获取锁。因此,假设全部的线程都是以相同的顺序加锁和释放锁,就不会出现死锁了。

18)Java集合类框架的基本接口有哪些?

集合类接口指定了一组叫做元素的对象。集合类接口的每一种详细的实现类都能够选择以它自己的方式对元素进行保存和排序。

有的集合类同意反复的键,有些不同意。

Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最主要的接口有:

Collection:代表一组对象。每个对象都是它的子元素。

Set:不包括反复元素的Collection。

List:有顺序的collection。而且能够包括反复元素。

Map:能够把键(key)映射到值(value)的对象,键不能反复。

19)为什么集合类没有实现Cloneable和Serializable接口?

克隆(cloning)或者是序列化(serialization)的语义和含义是跟详细的实现相关的。因此,应该由集合类的详细实现来决定怎样被克隆或者是序列化。

20)什么是迭代器(Iterator)?

Iterator接口提供了非常多对集合元素进行迭代的方法。每个集合类都包括了能够返回迭代器实例的迭代方法。迭代器能够在迭代的过程中删除底层集合的元素,可是不能够直接调用集合的remove(Object
Obj)删除,能够通过迭代器的remove()方法删除。

Java常见面试题汇总(一)的更多相关文章

  1. Java基础知识常见面试题汇总第一篇

    [Java面试题系列]:Java基础知识常见面试题汇总 第一篇 文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 ​ 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后 ...

  2. iOS常见面试题汇总

    iOS常见面试题汇总 1. 什么是 ARC? (ARC 是为了解决什么问题而诞生的?) ARC 是 Automatic Reference Counting 的缩写, 即自动引用计数. 这是苹果在 i ...

  3. PHP常见面试题汇总(二)

    PHP常见面试题汇总(二)   //第51题:统计一维数组中所有值出现的次数?返回一个数组,其元素的键名是原数组的值;键值是该值在原数组中出现的次数 $array=array(4,5,1,2,3,1, ...

  4. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  5. java常见面试题及答案

    java常见面试题及答案 来源 https://blog.csdn.net/hsk256/article/details/49052293 来源 https://blog.csdn.net/hsk25 ...

  6. Java 常见面试题(一)

    1)什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设 ...

  7. 【转载】JAVA常见面试题及解答(精华)

     JAVA常见面试题及解答(精华)       1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: ...

  8. Mybatis常见面试题汇总

    Mybatis常见面试题汇总 最近在复习整理Mybatis的相关知识,针对面试中的典型问题,结合相关书籍和网上相关帖子,做如下整理. ================================= ...

  9. JAVA常见面试题问题简述(持续更新中)

    JAVA常见面试题问题简述 1. springcloud和dubbo的区别 ①相比之下springcloud 的社区会更加活跃,解决问题的速度也会越来越快,dubbo相对来说如果碰到没有解决的问题,就 ...

随机推荐

  1. quarz spring boot

    package com.pkfare.task.manage.config; import org.quartz.spi.TriggerFiredBundle; import org.springfr ...

  2. selenium - 下拉框操作

    # 9. 下拉框操作# (1)等待下拉列表和下拉列表中值存在# (2)在下拉列表中选择一个值 # 三种方式# A. 获取所有的下拉列表值,然后用循环去匹配相同的值 select_by_index(下标 ...

  3. oracle 多表连接查询

    一.内连接(inner join (可简写为join)) 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值. 1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的 ...

  4. Facebook App 的头文件会有更多的收获

    最近在看一些 App 架构相关的文章,也看了 Facebook 分享的两个不同时期的架构(2013 和 2014),于是就想一窥 Facebook App 的头文件,看看会不会有更多的收获,确实有,还 ...

  5. EOJ Monthly 2018.4

    A. ultmaster 的小迷妹们 Time limit per test: 2.0 seconds Memory limit: 256 megabytes ultmaster 男神和他的小迷妹们准 ...

  6. 衡量线性回归法的指标MSE, RMSE,MAE和R Square

    衡量线性回归法的指标:MSE, RMSE和MAE 举个栗子: 对于简单线性回归,目标是找到a,b 使得尽可能小 其实相当于是对训练数据集而言的,即 当我们找到a,b后,对于测试数据集而言 ,理所当然, ...

  7. Oracle PL/SQL 语言(Procedural Language/SQL)

    Oracle PL/SQL 语言(Procedural Language/SQL)是结合了结构化查询与 Oracle 自身过程控制为一体的强大语言,PL/SQL 不但支持更多的数据类型,拥有自身的变量 ...

  8. Welcome-to-Swift-13继承(Inheritance)

    一个类可以继承(inherit)另一个类的方法(methods),属性(property)和其它特性.当一个类继承其它类时,继承类叫子类(subclass),被继承类叫超类(或父类,superclas ...

  9. hihoCoder #1157 建造金字塔

    这道题我想了一天才想清楚做法.AC 了之后去看别人写的题解,都是三言两语意识流式描述,我并不能读懂.我觉得很自卑,为何人家解这道题如此轻松.不过,我还是决定把我的解法写下来,并且一定要写清楚. 思路 ...

  10. NOJ——1649Find Sum(二分查找)

    [1649] Find Sum 时间限制: 1000 ms 内存限制: 65535 K 问题描述 This problem is really boring. You are given a numb ...