2016最新java面试题 详细版

合集下载

java面试的题目及答案

java面试的题目及答案

java面试的题目及答案Java面试题目及答案(共计2000字)1. 介绍一下Java的特点及优点。

Java是一种通用、高级、面向对象的编程语言,具有以下特点和优点:- 简单性:Java相对于其他编程语言来说较为简单,容易学习和使用。

- 面向对象:Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的特性。

- 跨平台性:Java程序可以在不同的操作系统上运行,这是由于Java编译器将Java代码编译成字节码,并在Java虚拟机(JVM)上执行。

- 安全性:Java具有强大的安全特性,包括内存管理、异常处理和安全检查等,能够防止内存泄漏和崩溃等问题的发生。

- 多线程支持:Java提供了多线程编程的支持,使得程序可以并发执行,提高了程序的执行效率。

- 开源生态系统:Java拥有庞大的开源生态系统,包括许多优秀的开源框架和工具,方便开发人员快速构建应用程序。

2. 什么是Java虚拟机(JVM)?它的作用是什么?Java虚拟机(JVM)是Java的核心组件之一,它是一个可以执行Java字节码的虚拟机程序。

JVM主要有以下作用:- 平台无关性:JVM解释并执行Java字节码,使得Java程序可以在不同的操作系统上运行,大大提高了程序的可移植性和跨平台性。

- 内存管理:JVM负责Java的内存管理,包括堆、栈和方法区等,使用垃圾回收机制来自动管理内存,防止内存泄漏和崩溃等问题的发生。

- 虚拟化:JVM提供了对Java程序的虚拟化支持,允许使用多线程并发执行Java程序,提高程序的执行效率。

- 安全性:JVM提供了严格的安全检查机制,确保Java程序的安全性,避免恶意代码的执行。

- 动态扩展:JVM支持动态加载和链接Java类和库,使得Java程序能够在运行时根据需要加载和使用外部类和库。

3. 什么是面向对象编程(OOP)?Java是一种面向对象的编程语言吗?面向对象编程(OOP)是一种编程范式,以对象为中心,将数据和行为封装在一起,并通过对象之间的交互来完成任务。

2016java面试题含答案

2016java面试题含答案

2016java面试题含答案2016java面试题目答案为蓝色小五号字体,题目部分为黑色字体----道阻且长1.j2ee是什么?它包含哪些技术?从整体来讲,J2EE是使用java开发技术开发企业级应用的工业标准,它是java技术不断适应和醋精企业级应用过程的产物。

适用于企业级应用的j2ee,提供一个平台独立的、可移植的、多用户的、安全的和基于标注呢企业级平台,从而简化企0业应用的开发、管理和部署。

J2EE是一个标准,而不是一个现成的产品。

主要包括以下这些技术:(1)Servlet servlet是java平台上的CGI技术。

Servlet在服务器端运行,动态的生成web 页面。

与传统的CGI和其他类似CGI的技术相比,Java Servlet具有更高的效率并更容易使用。

对于Servlet,从夫的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并访问的。

(2)JSP Jsp(java server page)是一种是实现普通静态HTML和动态页面输出混合编码的技术。

从这一点看,非常类似Microsoft ASP、PHP等技术。

借助形式上的内容和外观表现的分离,web页面制作的任务可以比较方便的话费给页面设计人员和程序员,并方便的通过JSP 来合成。

在运行时态,JSP将会被首先转换成Servlet,并以Servlet 的形态编译运行,因此它的效率和功能与Servlet相比没有差别,一样具有很高的效率。

(3)EJB EJB定义了一组可充用的组件:Enterprise Beans。

开发人员可以利用这些组件,像搭积木一样建立分布式应用。

(4)JDBC JDBC(Java DataBase Connectivity,java数据库连接)API 是一个标准SQL(Structured Query Language,结构化查询语句)数据库访问接口,它使数据库开发人员能够使用标准Java API编写数据库应用程序。

2016年Java面试题及回答

2016年Java面试题及回答

有关Java的一般问题1. 什么是JVM?为什么称Java为跨平台的编程语言Java虚拟机(Java Virtual Machine)是可以执行Java字节码的,每个Java源文件将被编译成文件,然后在JVM中执行。

Java之所以被设计成可以在任意的平台运行,而不需要重写或者在不同的平台下重新编译,这些都要归功于Java虚拟机(JVM),因为JVM非常了解特定的指令的长度以及底层硬件平台的特殊性。

2. JDK和JRE之间的差异是什么?Java运行环境(Java Runtime Enviroment) 是运行Java程序的基本的Java虚拟机,包括执行applet的浏览器插件。

JDK (Java Development Kit) 是为了开发,编译和执行Java应用程序,针对Java的全功能的软件开发包,包含了JRE,编译器和工具(比如说??和)。

3. “static” 关键字是什么意思?在Java里可以? override private 或static 的方法吗?keyword mean Can you override private or static method in Javastatic 关键字表示,访问这个成员变量或方法时,不必获取它属于的类的实例。

不能被override,因为override 的机制是运行时(runtime)的动态绑定,而static 方法是在编译时静态绑定的。

static 方法并不与任何类的具体实例有关,因此无法应用继承的概念。

4. 在静态方法里可以访问非静态变量吗Java?中的static 变量归相应的类所有,它的值对于类的所有实例都是相同的。

static 变量是在JVM 加载类的时候初始化的。

如果代码试图访问非静态的变量,而且不是通过类的实例去访问,编译器会报错,因为这些非静态变量还没有被创建呢,并且它们没有与实例相关联。

5. Java 支持哪些数据类型?什么是Autoboxing 和Unboxing?Java语言支持的8个基本数据类型如下:•byte•short•int•long•float•double•boolean•charAutoboxing 是指在基本数据类型和对应的包装(wrapper)类之间。

java面试题库java面试题目及答案(3篇)

java面试题库java面试题目及答案(3篇)

第1篇一、基础知识1. Java简介题目:请简述Java的基本特点。

答案:- 简单易学:Java设计之初就考虑了易学性,使用面向对象编程。

- 原生跨平台:Java通过JVM(Java虚拟机)实现跨平台运行。

- 安全性:Java提供了强大的安全机制,如沙箱安全模型。

- 体系结构中立:Java不依赖于特定的硬件或操作系统。

- 高效:Java的运行速度接近C/C++。

- 多线程:Java内置多线程支持,便于实现并发处理。

- 动态性:Java在运行时可以进行扩展和修改。

2. Java虚拟机题目:请解释Java虚拟机(JVM)的作用。

答案:JVM是Java程序的运行环境,其主要作用包括:- 将Java字节码转换为本地机器码。

- 管理内存,包括堆、栈、方法区等。

- 提供垃圾回收机制。

- 管理线程和同步。

3. Java内存模型题目:请简述Java内存模型的组成。

答案:Java内存模型主要由以下部分组成:- 堆(Heap):存储对象实例和数组。

- 栈(Stack):存储局部变量和方法调用。

- 方法区(Method Area):存储类信息、常量、静态变量等。

- 本地方法栈(Native Method Stack):存储本地方法调用的相关数据。

- 程序计数器(Program Counter Register):存储线程的当前指令地址。

4. Java关键字题目:请列举并解释Java中的几个关键字。

答案:- `public`:表示访问权限为公开。

- `private`:表示访问权限为私有。

- `protected`:表示访问权限为受保护。

- `static`:表示属于类本身,而非对象实例。

- `final`:表示常量或方法不能被修改。

- `synchronized`:表示线程同步。

- `transient`:表示数据在序列化时不会被持久化。

二、面向对象编程5. 类和对象题目:请解释类和对象之间的关系。

答案:类是对象的模板,对象是类的实例。

java模拟面试题目(3篇)

java模拟面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java语言的特点。

2. 什么是Java虚拟机(JVM)?它有什么作用?3. 什么是Java的内存模型?请解释Java内存模型中的几个关键概念:堆、栈、方法区、程序计数器、本地方法栈。

4. 什么是Java中的反射机制?请举例说明反射在Java中的应用。

5. 什么是Java中的泛型?请解释泛型的原理和作用。

6. 请简述Java中的四种访问控制符:public、protected、default、private。

7. 什么是Java中的继承和多态?请举例说明继承和多态在实际开发中的应用。

8. 什么是Java中的封装?请举例说明封装在实际开发中的应用。

9. 什么是Java中的接口和抽象类?它们之间有什么区别?10. 什么是Java中的异常处理?请解释try-catch-finally语句的执行顺序。

二、Java集合框架1. 请列举Java集合框架中的常用集合类及其特点。

2. 请简述ArrayList、LinkedList、HashMap、HashSet的区别。

3. 什么是Java中的泛型集合?请举例说明泛型集合的应用。

4. 什么是Java中的迭代器(Iterator)和枚举器(Enum)?请比较它们的区别。

5. 什么是Java中的List、Set、Map的遍历方法?6. 请解释Java中的ArrayList和LinkedList的内部实现原理。

7. 什么是Java中的HashMap的扩容机制?8. 什么是Java中的HashSet的内部实现原理?9. 请解释Java中的线程安全集合类,如CopyOnWriteArrayList、ConcurrentHashMap。

三、Java多线程与并发1. 什么是Java中的线程?请解释线程的创建、调度和同步。

2. 请简述Java中的线程状态,如新建、就绪、运行、阻塞、等待、超时等待、终止。

3. 什么是Java中的同步机制?请解释synchronized关键字的作用。

java跳槽面试题目(3篇)

java跳槽面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java的基本特点。

解析:Java具有“一次编写,到处运行”的特点,具有跨平台性;具有简单易学、面向对象、分布式、解释型、健壮性、安全性、体系结构中立、多线程、动态性等特点。

2. 什么是JVM?请简述JVM的作用。

解析:JVM(Java虚拟机)是运行所有Java应用程序的虚拟机。

它的作用是执行Java字节码,为Java程序提供运行环境,保证Java程序跨平台运行。

3. 请简述Java中的四种访问控制符及其作用。

解析:- public:表示公开的访问控制符,可以在任何地方访问。

- private:表示私有的访问控制符,只能在类内部访问。

- protected:表示受保护的访问控制符,可以在类内部和子类中访问。

- default(无修饰符):表示默认的访问控制符,只能在本包内访问。

4. 什么是封装?请举例说明。

解析:封装是将类的属性和行为封装在一起,对外只提供有限的接口。

例如,一个学生类,包含姓名、年龄、性别等属性,以及学习、休息等方法。

5. 什么是继承?请举例说明。

解析:继承是子类继承父类的方法和属性。

例如,一个动物类,包含行走、吃食等方法,一个猫类继承自动物类,则猫类具有行走、吃食等方法。

6. 什么是多态?请举例说明。

解析:多态是指同一个方法在不同对象上有不同的行为。

例如,一个形状类,包含计算面积的方法,一个圆形和正方形类继承自形状类,计算面积的方法在圆形和正方形类中有不同的实现。

7. 什么是接口?请举例说明。

解析:接口是一种规范,定义了类应该具有的方法,但不提供具体实现。

例如,一个Comparable接口,定义了compareTo方法,用于比较两个对象的大小。

8. 什么是泛型?请举例说明。

解析:泛型是一种类型参数化技术,可以在编译时进行类型检查,提高代码的安全性。

例如,一个List<T>泛型集合,可以存储任意类型的元素。

二、Java集合框架1. 请简述Java集合框架中的常用类及其特点。

2016Java面试题精编版—类型转换

2016Java面试题精编版—类型转换

阅读使人快乐,成长需要时间2016Java面试题精编版—类型转换面试题Which of the following will compile correctly? ( D )A short myshort=99SB int t=”abc”.length()C float z =1.0D char c=17c解析:short myshort=99S这句要执行自动装箱,调用shortvalue方法,显然99S无法得到值。

将float z =1.0;改为float z.of;就行了,系统默认的浮点数是double型。

在Java中,length是属性,一般用来说明数组的长度;length()是方法,用来求数组中某个元素的字符串长度。

length()是字符串的方法,返回字符串的长度S[1].length()就是”sdfgs”.length()值为5Length是数组的属性,s.length的值为2扩展知识:Java的数据类转换Java的数据类分为三大类,即布尔型、字符型、和数值型,其中,数值型又分为整型和浮点型。

相对于数据类型,java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型float、double。

其中四种整型变量和两种浮点型变量分别对应于不同的精度和范围。

此外,编程时还经常用到两种类变量,即string和date.(1)数据类型转换的种类Java数据类型的转换一般分为三种,分别是简单数据类型之间的转换、字符串与其他数据类型的转换、其他实用数据类型的转换。

(2)简单数据类型之间的转换在Java中,整型、实型、字符型被视为简单数据类型,这些类型由第几道高级分别为(byte,short,char)—int—long—float—double。

简单数据类型之间的转换又可分为:低级到高级的自动类型转换、高级到低级的强制类型转换、包装类过度类型能够转换。

2016_常规java面试题综合版

2016_常规java面试题综合版

选择题1:下列关于栈的描述中错误的是( )A. 栈是先进后出的线性表B 栈只能顺序存储C 栈具有记忆作用D 对栈的插入弓删除操作中,不需要改变栈底指针正确答案:B分析:栈是链式存储的2:对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )A 冒泡排序为n/2B 冒泡排序为nC 快速排序为nD 快速排序为n(n-l)/2正确答案:D分析:想想快速排序,每次都会选取线性表的轴值,随后以此轴值划分为两个子线性表再分别进行快排,在最坏情况下,也就是说每次选出的线性表轴值完全不能将这个线性表划分为两个子线性表。

那么此时快速排序退化为冒泡排序了。

那么第一趟排序时,轴值(线性表的中间位置)被选出,这个值绝对是这个线性表中最大的(不然也不能是最坏情况),其他值都比他小,那么线性表现在分为完全不对等的两段(一段是0,另一段是n - 1),一段是这个值,一段是其他值。

同样第二趟排序在刚才剩下的值中选中间值(剩余值中最大的那个),又分为不对等两段,依次递推。

也就是说每次都比较了N - 1个元素(轴值选出后都与它比较大小),那么肯定是比较了n - 1次(如第一次先挑了个轴值,然后剩下n - 1比较),n代表当前子线性表中元素个数由此最白痴的数列问题出现了,如下1 +2 +3 + .......... + n - 2 + n - 1 = n(n - 1) / 2还有一种投机取巧的方法,在最垃圾情况下既然快排变为冒泡,那由时间复杂度知其必为o(n ^ 2)的复杂度,答案中ABC都是线性时间复杂,显然错误3:下列对于线性链表的描述中正确的是( )A 存储空间间不一定是连续,且各元素的存储顺序是任意的B 存储空间不一定是连续,且前件元素一定存储在后件元素的前面C 存储定间必须连续,且前件元素一定存储在后件元素的前面D 存储空间必须连续,且各元素的存储顺序是任意的答案是A, 分析链接存储并不要求存储空间连续,存储位置也不用有序4:为了使模块爆可能独立,要求( )A 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强答案:B分析:高内聚,低耦合。

最新的java面试题目及参考答案(2)

最新的java面试题目及参考答案(2)

最新的java面试题目及参考答案(2)最新的java面试题目及参考答案(2)时间:2016-12-23 09:27:04本文内容及图片来源于读者投稿,如有侵权请联系xuexila888@ 如英我要投稿forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

20、EJB与JAVA BEAN的区别?Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。

但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable 接口用于实现Bean的持久性。

Java Bean实际上相当于微软COM 模型中的本地进程内COM组件,它是不能被跨进程访问的。

Enterprise Java Bean 相当于DCOM,即分布式组件。

它是基于Java 的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。

但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。

EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。

客户通过容器来访问真正的EJB组件。

21、Static Nested Class 和Inner Class的不同。

Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。

java面试问题及答案

java面试问题及答案

java面试问题及答案java面试问题及答案「篇一」1)Java 中能创建 volatile 数组吗?能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。

我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护,但是如果多个线程同时改变数组的元素,volatile 标示符就不能起到之前的保护作用了。

2)volatile 能使得一个非原子操作变成原子操作吗?一个典型的例子是在类中有一个 long 类型的成员变量。

如果你知道该成员变量会被多个线程访问,如计数器、价格等,你最好是将其设置为 volatile。

为什么?因为 Java 中读取 long 类型变量不是原子的,需要分成两步,如果一个线程正在修改该 long 变量的值,另一个线程可能只能看到该值的一半(前 32 位)。

但是对一个 volatile 型的 long 或 double 变量的读写是原子。

3)volatile 修饰符的有过什么实践?一种实践是用 volatile 修饰 long 和 double 变量,使其能按原子类型来读写。

double 和 long 都是64位宽,因此对这两种类型的读是分为两部分的,第一次读取第一个 32 位,然后再读剩下的 32 位,这个过程不是原子的,但 Java 中volatile 型的 long 或 double 变量的读写是原子的。

volatile 修复符的另一个作用是提供内存屏障(memory barrier),例如在分布式框架中的'应用。

简单的说,就是当你写一个 volatile 变量之前,Java 内存模型会插入一个写屏障(write barrier),读一个 volatile 变量之前,会插入一个读屏障(read barrier)。

意思就是说,在你写一个 volatile 域时,能保证任何线程都能看到你写的值,同时,在写之前,也能保证任何数值的更新对所有线程是可见的,因为内存屏障会将其他所有写的值更新到缓存。

2016年java面试题(2)

2016年java面试题(2)

2016年java面试题(2)2016年java面试题之JVM 底层与 GC22)64 位 JVM 中,int 的长度是多数?Java 中,int 类型变量的长度是一个固定值,与平台无关,都是32 位。

意思就是说,在 32 位和 64 位的Java 虚拟机中,int 类型的长度是相同的。

23)Serial 与 Parallel GC之间的不同之处?Serial 与 Parallel 在GC执行的时候都会引起 stop-the-world。

它们之间主要不同serial 收集器是默认的复制收集器,执行GC 的时候只有一个线程,而 parallel 收集器使用多个 GC 线程来执行。

24)32 位和 64 位的 JVM,int 类型变量的长度是多数?32 位和 64 位的 JVM 中,int 类型变量的长度是相同的,都是 32 位或者 4 个字节。

25)Java 中 WeakReference 与 SoftReference的区别?虽然 WeakReference 与 SoftReference 都有利于提高 GC 和内存的效率,但是WeakReference ,一旦失去最后一个强引用,就会被 GC 回收,而软引用虽然不能阻止被回收,但是可以延迟到 JVM 内存不足的时候。

26)WeakHashMap 是怎么工作的?WeakHashMap 的工作与正常的 HashMap 类似,但是使用弱引用作为 key,意思就是当 key 对象没有任何引用时,key/value 将会被回收。

27)JVM 选项 -XX: UseCompressedOops 有什么作用?为什么要使用?当你将你的应用从 32 位的 JVM 迁移到 64 位的 JVM 时,由于对象的指针从 32 位增加到了 64 位,因此堆内存会突然增加,差不多要翻倍。

这也会对CPU 缓存(容量比内存小很多)的数据产生不利的影响。

因为,迁移到 64 位的 JVM 主要动机在于可以指定最大堆大小,通过压缩 OOP 可以节省一定的内存。

Java软件开发工程师面试题宝典2016版

Java软件开发工程师面试题宝典2016版

Java面试宝典2016版1、了解j2EE规范,选择几点进行重点消化。

2、异常分类,一般性异常和运行期异常,异常捕获。

3、了解spring mvc框架,和struts mvc框架的区别。

4、要对spring和ibatis非常熟悉,必须,熟知。

5、应适当关注需求分析和产品方面的知识。

6、了解多线程相关知识7、了解java5以及java6新特性8、熟悉linux相关命令操作。

9、工厂模式,简单工厂、抽象工厂的区别10、动态代理模式一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?二、VECTOR,ARRAYLIST, LINKEDLIST的区别是什么?三、HASHTABLE, HASGMAQ,TreeMap区别四、ConcurrentMap和HashMap的区别五、Tomcat,apache,jboss的区别六、GET POST区别七、SESSION, COOKIE区别八、Servlet的生命周期九、HTTP 报文包含内容十、Statement与PreparedStatement的区别,什么是SQL注入,如何防止SQL注入十一、redirect, foward区别十二、关于JAVA内存模型,一个对象(两个属性,四个方法)实例化100次,现在内存中的存储状态,几个对象,几个属性,几个方法。

十三、谈谈Hibernate的理解,一级和二级缓存的作用,在项目中Hibernate都是怎么使用缓存的十四、反射讲一讲,主要是概念,都在哪需要反射机制,反射的性能,如何优化十五、谈谈Hibernate与Ibatis的区别,哪个性能会更高一些十六、对Spring的理解,项目中都用什么?怎么用的?对IOC、和AOP的理解及实现原理十七、线程同步,并发操作怎么控制十八、描述struts的工作流程。

十九、Tomcat的session处理,如果让你实现一个tomcatserver,如何实现session 机制二十、关于Cache(Ehcache,Memcached)二一、sql的优化相关问题二二、oracle中rownum与rowid的理解,一千条记录我查200到300的记录怎么查?二三、如何分析ORACLE的执行计划?二四、DB中索引原理,种类,使用索引的好处和问题是什么?二五、JVM垃圾回收实现原理。

java校招面试题目(3篇)

java校招面试题目(3篇)

第1篇第一部分:基础知识1. Java基本概念(1)请解释Java中的面向对象编程(OOP)的特点。

解析:面向对象编程的特点包括封装、继承和多态。

封装是指将数据和对数据的操作封装在一个类中;继承是指允许一个类继承另一个类的属性和方法;多态是指同一个方法在不同对象上表现出不同的行为。

(2)简述Java中的四种访问控制符及其作用范围。

解析:Java中的四种访问控制符分别是public、protected、默认(不写)和private。

public可以访问任何类;protected可以在同一个包内和子类中访问;默认访问(不写)只能在同一个包内访问;private只能在类内部访问。

2. Java基本数据类型(1)请列出Java中的基本数据类型,并说明其特点和取值范围。

解析:Java中的基本数据类型包括byte、short、int、long、float、double、char和boolean。

byte和short为有符号整数类型,取值范围分别为-128到127和-32,768到32,767;int为基本整型,取值范围为-2,147,483,648到2,147,483,647;long为长整型,取值范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807;float和double为浮点数类型,取值范围分别为-3.4E38到3.4E38和-1.8E308到1.8E308;char为字符类型,取值范围为0到65,535;boolean为布尔类型,取值为true或false。

(2)简述Java中的自动装箱和拆箱。

解析:自动装箱是指将基本数据类型自动转换为包装类型(如int自动转换为Integer);自动拆箱是指将包装类型自动转换为基本数据类型。

在装箱和拆箱过程中,如果数据类型不匹配,会抛出ClassCastException异常。

3. Java关键字(1)请解释Java中的关键字final、static和synchronized。

Java软件开发常见面试题及答案

Java软件开发常见面试题及答案

Java软件开发常见面试题及答案Java软件开发常见面试题及答案时间:2016-10-14 14:32来源:未知作者:os 点击:101次1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java 虚拟机是一个可以执行Java 字节码的虚拟机进程。

Java 源文件被编译成能被Java 虚拟机执行的字节码文件。

Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。

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

2.JDK和JRE的区别是什么?JDK: java开发工具包,包含了JRE、编译器和其它工具(如:javaDOc、java调试器)JRE: java运行环境,包含java虚拟机和java程序所需的核心类库。

如果只是想跑java程序,那么只需安装JRE,如果要写java程序并且运行,那就需要JDK了。

3."static"关键字是什么意思?Java中是否可以覆盖一个private或者是static的方法?如果一个类的变量或者方法前面有static修饰,那么表明这个方法或者变量属于这个类,也就是说可以在不创建对象的情况下直接使用当父类的方法被private修饰时,表明该方法为父类私有,对其他任何类都是不可见的,因此如果子类定了一个与父类一样的方法,这对于子类来说相当于是一个新的私有方法,且如果要进行向上转型,然后去调用该“覆盖方法”,会产生编译错误public static void main(String[] args) {Parent c = new Child();c.fun(); //编译出错}}static方法时编译时静态绑定的,属于类,而覆盖是运行时动态绑定的(动态绑定的多态),因此不能覆盖.4.Java支持的基本数据类型有哪些?什么是自动拆装箱?java支持的基本数据类型有以下9种:byte,shot,int,long,float,double,char,boolean,void.自动拆装箱是java从jdk1.5引用,目的是将原始类型自动的装换为相对应的对象,也可以逆向进行,即拆箱。

Java2016年面试整理

Java2016年面试整理

一.Java基础1.JVM(原理,加载过程)(1). Java类的加载是动态的:为了节省内存开销。

它并不会一次性将所有类全部加载后再运行,而是保证程序运行的基础类(像是基类)完全加载到jvm中,至于其他类,则在需要的时候才加载。

(2).Java的类加载器有三个,对应Java的三种类:BootstrapLoader // 负责加载系统类ExtClassLoader //负责加载扩展类(就是继承类和实现类)AppClassLoader //负责加载应用类(程序员自定义的类)(3).类加载器协同工作,使用委托模型机制,当类加载器需要加载类的时候,先请示其Parent(即上一层加载器)在其搜索路径载入,如果找不到,才在自己的搜索路径搜索该类。

这样的顺序其实就是加载器层次上自顶而下的搜索,因为加载器必须保证基础类的加载。

之所以是这种机制,还有一个安全上的考虑:如果某人将一个恶意的基础类加载到jvm,委托模型机制会搜索其父类加载器,显然是不可能找到的,自然就不会将该类加载进来。

加载过程(1)装载:查找和导入class文件;(2)连接:a.检查:检查载入的class文件数据的正确性;b.准备:为类的静态变量分配存储空间;c.解析:将符号引用转换成直接引用(这一步是可选的)(3).初始化:初始化静态变量,静态代码块。

这样的过程在程序调用类的静态成员的时候开始执行,所以静态方法main()才会成为一般程序的入口方法。

类的构造器也会引发该动作。

请描述一下JVM加载class文件的原理机制在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备、解析装载:查找和导入类或接口的二进制数据;链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;校验:检查导入类或接口的二进制数据的正确性;准备:给类的静态变量分配并初始化存储空间;解析:将符号引用转成直接引用;初始化:激活类的静态变量,初始化Java代码和静态Java代码块单例模式为什么能保证只有一个实例存在原理在于它的构造函数是私有的,你不能去new 它,该单例类里面已经实例化好了一个了,并且是static的,并提供一个获取该实例的方法!客户端只能通过该方法获取这个已经实例化好了的,这样就保证了只有一个实例存在!建立sql索引应该遵循什么原则索引字段建议建立NOT NULL约束经常与其他表进行连接的表,在连接字段上应该建立索引;经常出现在Where子句中的字段且过滤性很强的,特别是大表的字段,应该建立索引;可选择性高的关键字,应该建立索引;可选择性低的关键字,但数据的值分布差异很大时,选择性数据比较少时仍然可以利用索引提高效率复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:A、正确选择复合索引中的第一个字段,一般是选择性较好的且在where子句中常用的字段上;B、复合索引的几个字段经常同时以AND方式出现在Where子句中可以建立复合索引;否则单字段索引;C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;频繁DML的表,不要建立太多的索引;不要将那些频繁修改的列作为索引列;== 与equals 的区别基本数据类型(也称原始数据类型):byte,short,char,int,long,float,double,boolean。

Java面试题集(最全版)(doc 69页)

Java面试题集(最全版)(doc 69页)

Java面试题集(最全版)(doc 69页)目录表第一章技巧篇3介绍自己 3行为 3第二章智力篇4微软面试题 4第三章Java篇 6Java基础方面--概念 6Java基础方面—线程编程方面14 Java基础方面—编程15第四章Jsp篇32第五章Servlet篇33第六章应用服务器篇39第七章J2EE,MVC篇40第八章设计模式方面篇43第九章Hibernate程序性能优化篇44 Hibernate程序性能优化46 Hibernate 优化 48Hibernate优化的几点建议51 Hibernate性能优化 53第十章数据库篇56第一套数据库笔试题及答案 56第二套数据库笔试题及答案 61第一章技巧篇介绍自己1、自我认识想一矢中的,首先必须认清自我,一定要弄清以下三个问题。

你现在是干什么的?你将来要干什么?你过去是干什么的?这三个问题不是按时间顺序从过去到现在再到将来,而是从现在到将来再到过去。

其奥妙在于:如果你被雇用,雇主选中的是现在的你,他希望利用的是将来的你,而这将来又基于你的历史和现状。

所以,第一个问题,你是干什么的?现在是干什么的?回答这个问题,要点是:你是你自己,不是别的什么人。

除非你把自己与别人区别开来,在共同点的基础上更强调不同点,否则你绝无可能在众多的应征求职者中夺魁。

对于这第一个问题,自我反省越深,自我鉴定就越成功。

随后,着手回答第二个问题:你将来要干什么?如果你申请的是一份举足轻重的工作,雇主肯定很关注你对未来的自我设计。

你的回答要具体,合理,并符合你现在的身份,要有一个更别致的风格。

然后,再着手回答最后一个问题:你过去是干什么的?你的过去当然都在履历上已有反映。

你在面试中再度回答这个问题时,不可忽略之处是:不要抖落一个与你的将来毫不相干的过去。

如果你中途彻底改行,更要在描述你的执着、职业目标的一贯性上下些功夫。

要做到这一点,又要忠实于事实和本人,最简单的方法是:找到过去与将来的联系点,收集过去的资料,再按目标主次排列。

java应届生面试题目(3篇)

java应届生面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java的基本特性和优势。

解析:Java具有简单性、面向对象、分布式、平台无关性、安全性、多线程、动态性、强类型、高效率、可移植性等特性。

其优势在于跨平台、安全性高、易于开发、有丰富的类库等。

2. 请解释Java中的基本数据类型和引用数据类型。

解析:基本数据类型包括byte、short、int、long、float、double、char、boolean;引用数据类型包括类、接口、数组等。

3. 请解释Java中的封装、继承、多态三个基本概念。

解析:封装是指将类的属性和方法封装在一个单元中,隐藏内部实现细节;继承是指子类继承父类的属性和方法,实现代码复用;多态是指同一方法在不同对象上表现不同的行为。

4. 请解释Java中的构造函数和析构函数。

解析:构造函数用于创建对象时初始化对象的属性,析构函数用于销毁对象时释放对象占用的资源。

5. 请解释Java中的static关键字。

解析:static关键字用于修饰成员变量和方法,表示该成员变量或方法属于类,而不是对象。

6. 请解释Java中的final关键字。

解析:final关键字用于修饰成员变量、方法和类,表示该成员变量、方法或类不可修改。

7. 请解释Java中的异常处理机制。

解析:Java中的异常处理机制包括try-catch-finally语句,用于捕获和处理程序中的异常。

8. 请解释Java中的泛型。

解析:泛型是一种参数化类型,允许在定义类、接口和泛型方法时指定类型参数,提高代码的复用性和安全性。

二、Java集合框架1. 请解释Java中的List、Set和Map接口。

解析:List接口表示有序集合,Set接口表示无序集合且元素不可重复,Map接口表示键值对映射。

2. 请解释Java中的ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等常用集合类。

解析:ArrayList和LinkedList实现List接口,ArrayList基于数组实现,LinkedList基于链表实现;HashSet和TreeSet实现Set接口,HashSet基于哈希表实现,TreeSet基于红黑树实现;HashMap和TreeMap实现Map接口,HashMap基于哈希表实现,TreeMap基于红黑树实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

详解笔试面试题集(1)下列各题ABCD四个选顼中,只有一个选项是正确的,请将正确选项填写在答题纸上(1)下列关于栈的描述中错误的是( )A. 栈是先进后出的线性表B 栈只能顺序存储C 栈具有记忆作用D 对栈的插入弓删除操作中,不需要改变栈底指针正确答案:B分析:栈是链式存储的(2)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )A 冒泡排序为n/2B 冒泡排序为nC 快速排序为nD 快速排序为n(n-l)/2正确答案:D分析:想想快速排序,每次都会选取线性表的轴值,随后以此轴值划分为两个子线性表再分别进行快排,在最坏情况下,也就是说每次选出的线性表轴值完全不能将这个线性表划分为两个子线性表。

那么此时快速排序退化为冒泡排序了。

那么第一趟排序时,轴值(线性表的中间位置)被选出,这个值绝对是这个线性表中最大的(不然也不能是最坏情况),其他值都比他小,那么线性表现在分为完全不对等的两段(一段是0,另一段是n - 1),一段是这个值,一段是其他值。

同样第二趟排序在刚才剩下的值中选中间值(剩余值中最大的那个),又分为不对等两段,依次递推。

也就是说每次都比较了N - 1个元素(轴值选出后都与它比较大小),那么肯定是比较了n - 1次(如第一次先挑了个轴值,然后剩下n - 1比较),n代表当前子线性表中元素个数由此最白痴的数列问题出现了,如下1 +2 +3 + .......... + n - 2 + n - 1 = n(n - 1) / 2还有一种投机取巧的方法,在最垃圾情况下既然快排变为冒泡,那由时间复杂度知其必为o(n ^ 2)的复杂度,答案中ABC都是线性时间复杂,显然错误(3)下列对于线性链表的描述中正确的是( )A 存储空间间不一定是连续,且各元素的存储顺序是任意的B 存储空间不一定是连续,且前件元素一定存储在后件元素的前面C 存储定间必须连续,且前件元素一定存储在后件元素的前面D 存储空间必须连续,且各元素的存储顺序是任意的答案是A, 分析链接存储并不要求存储空间连续,存储位置也不用有序(4)为了使模块爆可能独立,要求( )A 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强答案:B分析:高内聚,低耦合。

5)下列叙述中,正确的是( )A Java语言的标识符是区分大小写的B 源文件名与public类名可以不相同C 源文件扩展名为.jarD 源文件中public类的数目不限答案:A6)下列属于合法的Java标识符是( )A _catB 5booksC +staticD -3.14159答案:A7) 在Java中,表示换行符的转义字符是( )A \nB \fC ‘n’D \dd答案:A( 8)扯Java中,所有类的根类是( )A. ng.ObjectB.ng.ClassC.java.applet.AppletD.java.awt.Frame答案:A(9).在Java+中,用Package语句说明一个包时,该包的层次结构必须是( )A 与文件的结构相同B 与文件目录的层次相同C 与文件类型相同D 与文件大小相同答案:A(10)在读字符文件Employee.dat时,使用该文件作为参数的类是( )。

A BufferReaderB DatalnputStreamC DataOutoutStreamD FileInputStream答案:D(11)在Java中,能实现多重继承效果的方式是( )。

A 内部类B 适配器C 接口D 同步答案:C(12) char类型的取值范围是( )。

A 2-7~27-1B 0~216-1C -215~215—1D 0~28-1答案:A(13)下列方法中可以用来创建一个新线程的是( )。

A 实现ng.Runnable接口并重写start0方法B 实现java.iang.Runnable接口并重写run0方法C 继承ng.Thread类并重写run0方法D 继承ng.Thread类并重写start0方法答案:C(14)下列关于线程优先级的说法中,正确的是( )。

A.线程的优先级是不能改变的B.线程的优先级是在创建线程时设置的C.在创建线程后的任何时候都可以设置D. B和C答案:C(15)下列代码中,将引起一个编译错误的行是( )。

1) public class Test{2) int m, n;3) public Test(){}4) public Test(int a){ m=a;)5) public static void main(String args0){6) Test t1, t2;7) int j, k;8) j=0; k=0;9) t1 = new Test();10) t2 = new Test(j,k);11) }12)}A.第3行B.第5行C.第6行D.第10行答案:D(16)阅读下列代码后public class Person{int arr[]=new int[10];public static void main(String args[ ]){System.out.println(arr[l]);})正确的说法是( )。

A 编译时将产生错误B 编译时正确,运行时将产生错误C 输出零D 输出空答案:A(17) AIDL支持以下哪种数据类型?l)string 2)list 3)map 4)All native java datatype( ){,A.1,2和3B.4C.以上所有D.都不支持答案:C分析:AIDL 服务只支持有限的数据类型,如果用AIDL服务传递一些复杂的数据就需要做更一步处理,AIDL 服务支持的数据类型如下:1. Java 的原生类型2. String 和CharSequence3. List 和Map ,List和Map 对象的元素必须是AIDL支持的数据类型;以上三种类型都不需要导入(import)4. AIDL 自动生成的接口需要导入(import)5. 实现android.os.Parcelable 接口的类. 需要导入(import)。

二、多项选择题下列各题A.、B.、C.、D.四个选项中,有一个或多个选项是正确的,(l)下列说法正确的有( )。

A. 环境变量可在编译source code时指定.B.在编译程序时,所能指定的环境变盛不包括class pathC.javac -次可同时编译数个Java源文件D. javac.exe能指定编译结果要置于哪个目录(directory)答案:BCD(2)不能用来修饰interface的有( )A. privateB.publicC.protectedD.static答案:ACD(3)下列说法错误的有( )A.在类方法中可用this来调用本类的类方法B。

在类方法中调用本类的类方法时可直接调用C.在类方法中只能调用本类中的类方法D.在类方法中绝对不能调用实例方法答案:ACD请将正确选项填写在答题纸上(4)下列说法错误的有( )A. Java面向对象语言容许单独的过程与函数存在B.Java面向对象语言容许单独的方法存在C.Java语亩中的方法属于类中的成员(member)D. Java语言中的方法必定隶属于某…类(对象),调用方法与过程或函数相同答案:ABC(5)下列说法错误的有( )。

A.能被java.exe成功运行的java class文件必须有main()方法B.J2SDK就是Java APIC. Appletviewer.exe可利用jar选项运行Jar文件D.能被Appletviewer成功运行的java class文件必须有main()方法答案:BCD三、判断题请将每空的正确答案写在答题纸上,答在试卷上不得分。

(1)Java程序中的起始类名称必须与存放该类的文件名相同。

(对)(2)Unicode是用16位来表示一个字的。

(对)(3)原生类中的数据类型均可任意转换。

(对)三、填空题请将每空的正确答案写在答题纸上【l】至【25】序号的横线上,答在试卷上不得分。

(l)某二叉树中度为2的结点有18个,则该二叉树中有【1】19 个叶子结点。

二叉树的终端结点(叶子结点)数等于双分支结点数加1。

(2)在面向对象方法中,类的实例称为【2】对象(3)诊断和改正程序中错误的工作通常称为【3】Debug(4)在关系数据库中,把数据表示成二维表,每一个二维表称为【4】关系(5)Java 源文件中最多只能有一个【5】public类,其他类的个数不限。

(6)线程在生命周期中要经历5中状态,分别是新建状态、可运行状态、运行状态。

【6】暂停状态和终止状态。

(7)FileInputStream 是字节流;BufferedWriter是字符流,ObjectOutputStream是【7】对象序列化流(8)当使用Thread t = new Thread(r)创建一个线程时,表达式r instance of Thread 的值为【8】false 。

r instanceOf Runnable1.抽象类和接口的区别?抽象类:1)抽象方法,只有行为的概念,没有具体的行为实现。

使用abstract关键字修饰,没有方法体。

子类必须重写这些抽象方法。

2)包含抽象方法的类,一定是抽象类。

3)抽象类只能被继承,一个类只能继承一个抽象类。

接口:1)全部的方法都是抽象方法,属型都是常量2)不能实例化,可以定义变量。

3)接口变量可以引用具体实现类的实例4)接口只能被实现,一个具体类实现接口,必须实现全部的抽象方法5)接口之间可以多实现6)一个具体类可以实现多个接口,实现多继承现象2.列举你所知道的线程同步的方法:1)wait():让线程等待。

将线程存储到一个线程池中。

2)notify():唤醒被等待的线程。

通常都唤醒线程池中的第一个。

让被唤醒的线程处于临时阻塞状态。

3)notifyAll(): 唤醒所有的等待线程。

将线程池中的所有线程都唤醒。

3.equals()方法和“==”操作符的区别是什么?重写equals()方法的时候,我们还需要重写哪些方法?为什么?“==”比较的是一个对象在内存中的地址值,栈中的内容是否相同equals()是针对引用的,比较的是引用类型的内容一样不一样,堆中的内容是否相同重写equals()方法的时候,需重写hashcode方法,这样比较的时候,比较的是两个对象的hash值,不同对象的hash值不同。

7.写一个函数计算但参数为n(n很大)时的值1-2+3-4+5-6+7……+n。

相关文档
最新文档