文档章节

Java面试

Bug-Killer
 Bug-Killer
发布于 2016/04/20 23:39
字数 1669
阅读 147
收藏 14

1,ArrayList,Vector与LinkedList的区别?

    ArrayList和Vector都是以数组形式存储数据,此数组元素数大于实际存储的数据,以便增加和插入元素。它们都允许通过索引号来查找元素。但是插入元素要涉及数组元素移动等内存操作,所以索引快而插入元素慢。Vector使用synchronized方法(线程安全),通常比ArrayList性能差,

    LinkedList使用双向链表进行存储,按序号索引数据需要向前或向后遍历,按时插入数据时只需要记录本项的前后位置即可,所以插入块,索引慢。

2,HashMap和HashTable的区别?

    HashMap是HashTable轻量级的实现(非线程安全的),他们都完成了Map接口,HashMap允许空(null)键(key),允许一条记录为空key但是任意数量的条目可以是空的value,由于非线程安全,所以效率比HashTable高。

    最大的区别,HashTabel是synchronized的,而HashMap不是,在多个线程访问HashTable的时候,不需要自己为他的方法实现同步,而HashMap必须为之实现同步。

3,sleep()和wait()有什么区别?

    sleep()是线程类(Thread)的方法,导致此线程暂停执行并指定时间,把执行机会给其他线程,但是监控状态会一直保持,到时间后会自动恢复。调用sleep()方法不会释放对象锁。

    wait()是Object类的方法,调用wait()方法导致本线程放弃对象锁,进入等待此对象的等待锁定值。只有针对此对象发出notify方法或(notifyAll)方法后,本线程才会进入对象锁定池,准备获得对象锁进入运行状态。

4,error和Exception的区别?

    error表示系统级的错误和程序不必处理的异常,是JAVA运行环境或者硬件问题。遇着error。不能指望程序处理这种问题。

    Exception表示需要捕捉或者需要程序处理的异常,程序必须处理,也就是说如果程序正常运行,则不会发生的情况。

5,abstract class和interface有什么区别?

    abstract class为抽象类,声明方法的存在而不会实现的类为抽象类。不能创建abstract类的实例对象。含有抽象方法的类必须是抽象类,而抽象类中的方法不必是抽象方法。

    抽象类中定义的抽象方法必须在具体子类中实现,所以不能有抽象构造方法和抽象静态方法。

    抽象类的子类为父类中所有抽象方法提供实现,否则子类也为抽象类。

    interface(接口)接口中所有的方法都是抽象的,接口中的方法定义默认为public abstract类型,接口中成员变量类型默认为public static final类型。

    1,抽象类中可以有构造方法,接口中不能有构造方法

    2,抽象类包含非抽象的普通方法,而接口中必须是抽象方法,不能有非抽象的普通方法。

    3,抽象类可以包含静态方法,而接口中不能包含静态方法。

    4,抽象类中的抽象方法的访问类型可以是public和protect,但接口中的抽象方法必须是public类型的,而且默认为public abstract类型

    4,一个类可以实现多个接口,但是只能继承一个抽象类。

6,forward和redirect的区别?

    1,forward是服务器发送请求,服务器直接访问目标地址的URL,把那个URL的响应内容读取出来,发送给浏览器,浏览器不知道服务器发送的内容来自哪,所以URL地址栏不变

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

7,JSP和Servlet的异同点,他们之间的联系?

    JSP是Servlet技术的扩展,本质上是Servlet的简易模式,更强调应用的外部表达。JSP是编译后的“类Servlet”。

    不同点:Servlet的应用逻辑在Java中,从表示层HTML中分离开来,而JSP是Java和Html可以组合成一个.jsp文件,

    JSP侧重于视图,而Servlet更侧重于业务逻辑。

8,启动一个线程是用run()还是start()?

    启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,以为这有JVM调用和执行。但这并不意味着线程会立即执行。run()方法,可以产生一个可以退出的标志来停止一个线程。

9,Set里边的元素是不能重复的,用什么方法来区分重复与否呢?是用==还是equals()?

    Set里边的元素是不能重复的,使用iterator()方法来区别重复。equals()方法是判断两个Set是否相等。

10,线程同步的方法?

    1,wait():使线程处于等待状态,并且释放所持有的对象锁。

    2,sleep():使一个正在运行的线程处于睡眠状态,调用此方法要捕捉InterrupuException异常。

    3,notify():唤醒一个正在处于等待状态的线程,注意,调用此方法的时候,并不能确切的唤醒某一个处于等待状态的线程,而是由JVM确定唤醒哪个线程,不按优先级。

    4,Allnotify():唤醒所有处于等待状态的线程,注意并不是给所有唤醒线程一个对象锁,而是让他们竞争。

11,synchronized?(同步代码块)

    Java语言的关键字。用它来修饰一个方法或代码块时,能够保证在同一时刻只能有一个线程执行该代码。

    1,当两个并发线程访问同一个对象中的synchronized同步代码块时,一定时间内,只能有一个线程得到执行,当一个线程执行完毕后,另一个线程才能被执行;

    2,当一个线程访问一个对象中的synchronized同步代码块时,另一个线程可以可以访问该对象中的非sychronized同步代码块。

12,java中实现多态的机制是什么?

    方法重写(overriding)和方法重载(overloading)是java实现多态机制的表现。重写,是父类与子类之间多态性的表现,重载,是一个类中多态性的表现。



© 著作权归作者所有

上一篇: SSH框架
下一篇: Hibernate
Bug-Killer
粉丝 5
博文 75
码字总数 49106
作品 0
海淀
程序员
私信 提问
15个顶级Java多线程面试题及回答

Java 线程面试问题 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多...

LCZ777
2014/05/27
500
0
java中高级大公司多线程面试题

1)在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它? lock接口在多线程和并发编...

java成功之路
2018/10/30
0
0
提给程序员和开发者的 10 道 Java 泛型面试题

关于泛型的面试题在 Java面试中变得越来越常见,因为 Java 5问世已经有相当长的时间了,越来越多的应用已经迁移到Java 5上来了,并且几乎所有新的Java开发工作也都是在Tiger(Java 5的项目代号...

lwei
2013/10/18
13.5K
30
阿里巴巴菜鸟Java一面11个问题,你会几个呢?

近日,w3cschool app开发者头条上分享了阿里菜鸟Java程序员一些面试题。 这吸引了不少程序员小伙伴们的注意。 在分享阿里菜鸟Java程序员面经前,来看下Java面试一些面试经验分享: 0、Java高...

W3Cschool
2018/04/03
0
0
Java 200+ 面试题补充 ThreadLocal 模块

让我们每天都有进步,老王带你打造最全的 Java 面试清单,认真把一件事做到极致。 本文是前文《Java 最常见的 200+ 面试题》的第一个补充模块。 1.ThreadLocal 是什么? ThreadLocal 是一个本...

王磊的博客
03/08
492
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
今天
9
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
今天
6
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
今天
8
0
Flutter 系列之Dart语言概述

Dart语言与其他语言究竟有什么不同呢?在已有的编程语言经验的基础上,我们该如何快速上手呢?本篇文章从编程语言中最重要的组成部分,也就是基础语法与类型变量出发,一起来学习Dart吧 一、...

過愙
今天
5
0
rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部