Java面试题(一)

JAVA笔试题

1. 请简述String和StringBuffer的区别

a)String是不变的字符串常量,每次赋值的时候都会生成新的String引用

b)StringBuffer使用的是同一个实例,每次改变的是stringbuffer对象的内容

2.ArrayList,Vector, LinkedList,set的区别

a)arraylist,linkedlist是非同步的,允许为空, vector是同步的,线程安全的,不允许为空

b)ArrayList 和Vector是采用数组方式存储数据, LinkedList使用双向链表实现存储

c) List 队列里边的元素是有顺序的,可重复的,根据下标可以获取元素。set 是个接口,set里边的元素是不可重复的,而且没有指定的顺序,就是个集合。

3.OverLoad和Override的区别,Overloaded的方法是否可以改变返回值的类型?

a)Overload是重写(覆盖),子类的方法跟父类方法名字一样,子类的方法把父类的覆盖了。

b)Override是重载,不同的方法参数、返回值不一样,紧紧返回值不一样的两个函数不叫重载,编译不会通过的。

4.Anonymous inner class是否可以extends(继承)其他类,是否可以实现接口?

a) 匿名内部类在实现时必须借助一个类或一个接口,从这个层次上讲它是可以继承其他类也可以实现接口的,但若是通过extends或implements关键字那是不可能的

5. Match.round(11.5)与match.round(-11.5)的返回结果

a)Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

6. 数组有没有length()这个方法?String有没有length()这个方法?

a)数组没有length()这个方法,有length的属性。String有有length()这个方法。

7. 线程的基本概念,线程的基本状态以及状态之间的关系

a)线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身.Java中的线程有四种状态分别是:运行,就绪,挂起,结束.

8. Sleep()与wait()区别

a) sleep()不释放同步锁,wait()释放同步缩.sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起

9. Forward和redirect的区别

a)容器中控制权的转向,url不变,效率较高,能得到request的共享资源;后者则是完全的跳转,改变url,效率较低,不能得到共享资源

10.JSp中动态include与静态include的区别?

a)静态include的结果是把其他jsp引入当前jsp,两者合为一体不会检查所含文件的变化,适用于包含静态页面

b)动态include的结构是两者独立,直到输出时才合并( 每个jsp生成一个class) ,适合用于包含动态页面,并且可以带参数

11.列举JSp的内置对象及方法

a)request,response,out,pageContext,session,applicaton,config,page

12.servlet的生命周期,如何实现servlet的单线程模式

a)实例化:Servlet容器创建Servlet类的实例。

b)初始化:该容器调用init()方法,通常会申请资源。

c)服务:由容器调用service()方法,(也就是doGet()和dopost())。

d)破坏:在释放Servlet实例之前调用destroy()方法,通常会释放资源。

e)不可用:释放内存的实例。

13.简述Struts1与struts2的区别

a)1.action struts1使用抽象编程,不是接口.必须继承action类,struts2可以实现接口,可是不实现接口.

b)2.线程 struts1只有一个并且是单例模式,必须是线程安全的.struts2为每一个请求创建一个action

c)3.servlet strut1依赖与servlet api 单独测试比较麻烦.struts2 不依赖于容器.允许脱离容器,单独测试

d)4.form strut1得到属性必须用action form接受.struts直接在action里面定义属性接受

e)5.struts1没有interception,

14.Srping的bean有哪些作用域

a)singleton作用域,当一个bean的作用域设置为singleton, 那么Spring IOC容器中只会存在一个共享的bean实例

b)prototype作用域,每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都会产生一个新的bean实例

c)request作用域表示该针对每一次HTTp请求都会产生一个新的bean,同时该bean仅在当前HTTp request内有效

15.简述spring的事务传播行为和隔离级别

16.简述hibernate的缓存机制和延时加载

17.Hibernate中的update()和saveorupdate()的区别

a)saveOrUpdate()会根据所给对象的id不同,来选择使用save或者update

18.Hibernate中的Session的load()和get()的区别

a)load()方法在你想load的对象不存在时,会throw exception,而get方法就返回一个null给你

19.Js中的三种弹出式消息提醒()如:警告,确认,信息输入) 的命令是什么?

a)alert(\警告\);yesOrNo = confirm(\确认?\);inputValue = prompt(\输入内容提示\, \默认值\);

20.js如何取当前日期时间/格式为:yyyy-mm-dd hh:mm:ss

var today =new Date() alert((today.toLocaleString().replace(/年|月/g,\-\)).replace(/日/g,\\))

21.悲观锁和乐观锁各是什么.

a)在更新的过程中,数据库处于加锁状态,任何其他的针对本条数据的操作都将被延迟。本次事务提交后解锁。

b)短暂的时间里不会有事务来修改此数据库的数据!

22.为什么使用数据库索引,使用索引需要注意哪些事项

a)索引通常能提高select/update/的性能,会降低的速度

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

s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1=(short)(s1+1)
short s1=1; s1+=1正确

24.构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

25.运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

26.error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况

27.Static Nested Class 和 Inner Class的不同。

Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化.而通常的内部类需要在外部类实例化后才能实例化

28.构造器Constructor是否可被override?

构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

30.Java中的异常处理机制的简单原理和应用。
当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullpointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

31.描述一下JVM加载class文件的原理机制?
JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件.它负责在运行时查找和装入类文件的类
32.多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

33.线程的基本概念、线程的基本状态以及状态之间的关系
线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身.Java中的线程有四种状态分别是:运行、就绪、挂起、结束

34.XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
a:两种形式 dtd schema,b:本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等

35.简述synchronized和java.util.concurrent.locks.Lock的异同 ?
主要相同点:Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。

你可能感兴趣的:(面试,程序员,面试题,文档)