您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > JAVA面试经典试题及答案1
一基础篇1.谈谈final,finally,finalize的区别final是一个修饰符,修饰类的时候表示类不可继承,所以一个类不可能既是abstract又是final的;修饰变量的时候表示这个变量不可被更改并且必须赋初始值;修饰方法的时候表示方式不可被重写。finally通常和try-catch一起,在finally里代码无论是否发生异常都会执行到finalize是一个方法名。方式是定义在Object类中,在对象从内存中释放之前会调用此方法进行一些必要的清理工作。2.AnnoyInnerClass(匿名类)是否可以extends(继承)其他类,是否可以implements(实现)interface接口?AnnoyInnerClass由于没有类名所以不可以extends其他类;可以实现interface3.StaticNestedClass和InnerClass的不同StaticNestedClass不需要外部类的实例来创建内部类的实例;内部类不能访问外部类的非静态方法;它能具有静态的数据,属性,和匿名内部类。4.&和&&的不同&表示位运算符;&&表示逻辑运算符;5.HashMap和Hashtable的区别HashMap允许一个null或者多个null作为key,而Hashtable不行Hashtable是线程同步的,而HashMap不是的HashTable的原理:通过节点的关键码确定对象的存储位置。给定节点的关键码k,通过一定的散列函数H(k),得到散列值,这个值就是节点的存储地址6.Colleciton和Collections的区别Collection在java.util下面,是所有集合类的父接口Collections也在java.util下面,他封装了集合类的一些操作7.什么时候用assert?assert是一条包含布尔表达式的语句,程序运行到当前语句的时候假定布尔返回值是true,如果是false则会抛出异常。常用语保证程序的最基本的正确性。断言在默认情况下是禁用的,在编译时启用断言用-source1.4标记,在运行时启用可以用-ea来标记,在运行时禁用用-dsa来标记。8.GC是什么?为什么要用GC?GC是垃圾回收机制,使用GC程序员就不用关心程序的内存管理。使用System.gc()和Runtime.getRuntime().gc();能增加GC启动的优先级,但是不保证一定执行。9.Strings=newString(xyz);创建了几个StringObject.2个10.Math.round(11.5)等于多少?Math.round(-11.5)等于多少?12;-11;round表示4舍5入11.shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?s1=s1+1;有错,因为1是int型,所以s1+1后的类型是int,int隐形转化为short类型s1+=1;没有问题12.sleep()和wait()有什么区别?sleep()表示让当前运行的线程暂停一段时间,在时间满了后,这个线程被并不一定会被立即执行,除非这个线程的优先级比当前线程的优先级高,或者当前线程执行完毕,或者当前线程阻塞住了wait()如果线程对一个同步对象发出wait请求后,该线程会暂停执行,进入等待状态直到被唤醒或者等待时间到两者的另一个关键区别是:前者不会释放对象锁;后者会释放对象锁13.Java有没有goto?有但是没有用14.数组有没有length()方法?String有没有length()方法?数组没有length()方法,但是数组有length属性String有length()方法15.overload和override的区别。overload和override都是Java多态的一种表现,overload是同一个类中的多态性的表现,override是子类和父类多态的一种表现overload表示重载,一个类中同样一个方法名可以有不同的参数override表示重写,子类中可以重新实现父类的方法overload的返回值不可变16.Set里的元素是不能重复的,用什么方法来区分重复与否呢?用==还是equals()?他们有和区别?用equals方法,==方法是比较对象的引用地址,equal默认是比较引用,但是可以被重写是逻辑相等,一般重写equal也要修改相应的hashCode方法17.给我你最常见的一个runtimeexceptionNullpointException,IllegalArgumentException,IndexOutofBoundsException18.Object对象中的方法toString()/hashCode()/equals()/notify()/notifyAll()/getClass()/wait()19.error和exception有什么区别?error表示一种不是不可能但是很难恢复的一种错误,比如内存溢出;exception表示正常流程的情况下不会出现的错误20.List,Set,Map是否继承自Collection接口?List和Map是,Map不是21.abstractclass和interface有什么区别?我从两个角度看他们之间的区别:1,多态性:抽象类是通过集成的方式体现多态性的,这就意味着子类只能集成一个父类,并且子类和父类之间的关系式is-a的关系,而接口是通过实现的方式体现,这意味着实现类可以实现过个接口,实现类和接口的关系仅仅是实现了接口规定的方法而已。2,分析设计的角度:抽象类往往是我们对领域问题分析得出的抽象概念,而接口给一系列对象提供标准的行为22.abstractmethod是否同时是static,是否同时是native,是否同时synchronized?都不是23.接口是否可以继承接口?抽象类是否可实现接口?抽象类是否继承实体类(concreteclass)?接口可以继承接口,抽象类可以实现接口,抽象类可以继承实体类24.启动一个线程使用run()还是start()?启动线程是用start()方法25.构造器Constructor是否可以被override?构造器不可以被override26.是否可以继承String类?不可以27.当一个线程进入一个对象的synchronized方法后,其他线程是否可以进入此对象的其他方法?当线程进入一个对象的synchronize方法后,其他线程可以访问这个对象的非synchronized方法,但是不可以访问synchronized方法。28.try{}里有一个return语句,那么紧跟在try后finally{}里code会不会被执行,什么时候被执行,是在return前还是后?会被执行,在return前29.用最有效率的方法算出2乘以8等于几?2330.两个对象值相同(x.equals(y)==true),但却有不同的hashCode,这句话对不对?不对,equal方法必须和hashCode方法保持一致,如果实现者没有做到这一点,编译器也不会报错,但这是一个严重的隐患31.当以对象被当做参数传递一个方法后,此方法可改变这个对象的属性,并可返回变化的结果,那么这里到底是值传递还是引用传递?32.switch是否能用在byte上面,是否能作用在long上,是否能作用在String上?Switch能用在intshortcharbyte四个类型上,long和String都不对33.如果A引用了B,B引用了A,这种情况JVM如何经行垃圾回收?首先这种情况用countreference方法是回收不了的,采用跟踪法可以回收,即从GCroots开始遍历对象形成一个引用链,如果不在这个链中即垃圾。GCroots包含以下对象:栈里的临时变量;静态变量;JNI引用到的变量34.解释下列名词JNDI:提供一个目录系统,让其他各地的应用程序能在上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能JMS:主要实现各个应用程序之间的通讯,包括点对点和广播JTA:提供各种分布式事务服务。应用程序只需调用其提供的接口即可JAF:Java安全认证框架。提供一些安全控制方面的框架。让开发者通过部署和自定义自己的个性安全控制策略RMI:远程调用方法35.XML的定义形式和解析方法定义形式有两种:dtd和schema,区别是schema本身就是xml,可以被xml解析器解析解析有两种方法:一种是将整个xml文件读入内存建立一棵内容树,对这棵树的操作可以读出或者修改内容,代表为DOM;另一种是基于事件的模型,他它在解析xml文档的时候可以出发一系列的事件,当发现给定的tag的时候,他可以激活一个回调方法,改方法告诉指定的标签已经找到,代表为SAX。36.什么是WebService?WebService就是为了是原来孤立的站点之间的信息能够相互通讯、共享而提出的一种接口37.多线程有几种实现方法?都是什么?同步有几种实现方法?多线程有两种实现方法:分别是实现Thread类和Runnable接口同步有两种实现方法:分别是synchronized,wait和notify38.说一说设计模式设计模式有三大类:创建性模式,比如单例模式、工厂模式;行为模式:中介者模式、观察者模式;结构性模式,比如桥接模式,装饰这模式39.简述synchronized和java.concurrent.locks.Lock有何异同?主要相同点:Lock能完成synchronized所有能实现的功能主要不同点:Lock有比synchronized更精确的线程语义和更好的性能synchronized会自动释放锁,Lock一定要求程序员手动释放,并且必须在finally语句中释放40.Next二Web篇41.什么是web容器是实现J2EE中web协议的应用,该协议定义了web程序运行时的环境,包括:并发性、安全性、生命周期管理等42.forward和redirect的区别forward是服务器内部跳转,他比丢失request里的信息;redirect是服务端告诉浏览器一个状态码,让浏览器重新发出请求,他会丢失上次request里的信息43.EJB是哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。EJB包括SessionBean,EntityBean,MessageDrivenBean,基于JNDI,RMI,JAT等技术实现SessionBean在J2EE中被用来完成一些服务器端的操作,例如访问数据库、调用其他EJB组件。EntityBean被用来表示在应用系统中使用到的数据。对于客户机,SesssionBean是一种非持久的对象,它实现某些在服务器上运行的业务逻辑44.JSP中的动态INCLUDE和静态INCLUDE的区别?动态INCLUDE用jsp:include实现,适合包含动态页面,并且可以带参数静态INCLUDE用include伪代码实现,不会检查文件的变化,适合包含静态页面45.JSP内置对象JSP共有9大内置对象:pageContext,request,response,session,application,page,out,config,exception46.JSP有哪些动作?作用分别是什么?JSP共有6个动作:jsp:include+jsp:useBean+jsp:setProperty+jsp:getProperty+jsp:forward+jsp:pluginjsp:include:引入动态的jsp文件jsp:useBean:寻找或实例化一个javabeanjsp:setProperty设置javabean的属性jsp:getProperty输出javabean的属性jsp:forward把请求转到一个新页面jsp:plugin根据浏览器类型为java插件生成object或embed标记47.servlet的生命周期Web容器加载servlet,
本文标题:JAVA面试经典试题及答案1
链接地址:https://www.777doc.com/doc-4726039 .html