Java常见面试题汇总(一)
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常见面试题汇总(一)的更多相关文章
- Java基础知识常见面试题汇总第一篇
[Java面试题系列]:Java基础知识常见面试题汇总 第一篇 文中面试题从茫茫网海中精心筛选,如有错误,欢迎指正! 1.前言 参加过社招的同学都了解,进入一家公司面试开发岗位时,填写完个人信息后 ...
- iOS常见面试题汇总
iOS常见面试题汇总 1. 什么是 ARC? (ARC 是为了解决什么问题而诞生的?) ARC 是 Automatic Reference Counting 的缩写, 即自动引用计数. 这是苹果在 i ...
- PHP常见面试题汇总(二)
PHP常见面试题汇总(二) //第51题:统计一维数组中所有值出现的次数?返回一个数组,其元素的键名是原数组的值;键值是该值在原数组中出现的次数 $array=array(4,5,1,2,3,1, ...
- java常见面试题及答案 1-10(基础篇)
java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...
- java常见面试题及答案
java常见面试题及答案 来源 https://blog.csdn.net/hsk256/article/details/49052293 来源 https://blog.csdn.net/hsk25 ...
- Java 常见面试题(一)
1)什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设 ...
- 【转载】JAVA常见面试题及解答(精华)
JAVA常见面试题及解答(精华) 1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: ...
- Mybatis常见面试题汇总
Mybatis常见面试题汇总 最近在复习整理Mybatis的相关知识,针对面试中的典型问题,结合相关书籍和网上相关帖子,做如下整理. ================================= ...
- JAVA常见面试题问题简述(持续更新中)
JAVA常见面试题问题简述 1. springcloud和dubbo的区别 ①相比之下springcloud 的社区会更加活跃,解决问题的速度也会越来越快,dubbo相对来说如果碰到没有解决的问题,就 ...
随机推荐
- LiveScript 函数
The LiveScript Book The LiveScript Book 函数 定义函数是非常轻量级的. 1.(x, y) -> x + y2.3.-> # an empty ...
- ASP.NET MVC下使用SWFUpload完成剪切头像功能
首先介绍SWFUpload组件 SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术 为WEB开发者提供了一个具有丰富功能继 ...
- Map容器——HashMap及常用API,及put,get方法解析,哈希码的产生和使用
Map接口 ① 映射(map)是一个存储键/值对的对象.给定一个键,可以查询到它的值,键和值都是对象; ② 键必须是唯一的,值可以重复; ③ 有些映射可以接收null键和null值,而有的 ...
- Swift UI控件详细介绍(上)
UI控件 首先介绍一下AppDelegate.swift@UIApplicationMain 调用了OC中的UIApplicationMain函数:UIApplicationMain是iOS应用程序的 ...
- [luoguP2764] 最小路径覆盖问题(最大流 || 二分图最大匹配)
传送门 可惜洛谷上没有special judge,不然用匈牙利也可以过的,因为匈牙利在增广上有一个顺序问题,所以没有special judge就过不了了. 好在这个题的测试数据比较特殊,如果是网络流的 ...
- UVa1476 Error Curves
画出函数图像后,发现是一个类似V字型的图. 可以用三分法找图像最低点 WA了一串,之后发现是读入优化迷之被卡. /*by SilverN*/ #include<iostream> #inc ...
- net3:DropDownList的动态绑定
原文发布时间为:2008-07-29 -- 来源于本人的百度文章 [由搬家工具导入] using System.Data;using System.Configuration;using System ...
- 标准C程序设计七---105
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- hdu 1250(大整数)
Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- bzero 字符数组清零
原来bzero()是这个功能,学习啦.下面的文章可以好好参考,出处:http://hi.baidu.com/wg_wang/item/5fa42c15c73b8efa9c778af8 bzero &a ...