《Java开发者技术人员升职应聘面试题.docx》由会员分享,可在线阅读,更多相关《Java开发者技术人员升职应聘面试题.docx(36页珍藏版)》请在优知文库上搜索。
1、Java面试题一、面向对戴的特征有那些?三大特征就是(缝承、封装、多态性)1、 抽象:抽缭就是忽略一个主题中与当前目标无关的那些方面,以便更充分的注.您与当前目标有关的方面。抽象并不打兑了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,是过程抽彖,二是数据抽象。2、 堆承:继承是一种联结类的层次模型,并且允许和鼓励类的用,它提供了一种明确表述共性的方法。对象的一个新类可以冲现有的类中派生.,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之
2、更适合特殊的需要。3、 封装I封装就是把过程和数据包闱起来,对数据的访问只能通过已定义的界面,面向对象计数始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象.这些对象通过一个受保护的接口访问我他对象。4、 多态性I是指允许不同的类的对象对同一消息做出响应。多态性包括参数化多态性和包含多态性。多态性语音具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名的问题。二、String是基本的数据类型吗?1- JaYa的基本数据类里包括byte、int、Char、Iong、f1.oat%doub1.e和ShOrto2、ja、,a.kmg.Siring类是fina1.类型
3、的,因此不能继承和修改这个类,为了提高效率节省空间,我们应该使用StringBuffer类。三、基本数据类型及转换char16-bi1.Unicode0UniCDde2161Characterbyte8-bit-128+127Byteshort16-bit-215+215-1Shortint32-bi1.-231+321-1Integer1.ong64-bi1.-263+263-11.ongf1.oat32-bitIEEE754IEEE754F1.oatdoub1.e64-bitIEEE7541EEE754Doub1.e四、String和StringBUffer,StringBUi1.d的区别
4、.1、S1.ring和SIringBUffer,它们可以存储和操作字符串,印包含多个字符的字符数据。2、这个String类提供了数值不可改变的字符申,而这个StringBUffer类提供的字符串可以进行修改,可以使用这个S1.ringBuffer来动态构造字符数据。3、StringBUiId是jdk1.5后用来替换StringBUffer的个类,大多数时候可以替换StringBuffere和StringBUffer的区别在于StringBUi1.d是一个单线程使用的类,不执行线程,同步所以比SIringBUffer速度快,效率高,是非线程安全的。4、OVerIorded是可以改变返回值的类型的
5、.九、abstractc1.ass和interface有什么区别?1、抽象类:抽象类是特殊的类,只是不能被实例化:除此之外,具有类的其他特性:Ot要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明在抽象类中,且不包含任何实现,派去类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以置i基类的抽彖方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。2、接口:接口是应用类型的,类似于类,更和抽象类有所相似,以至于很多人对抽象类和接口的区别比较模糊.接口除了可以包含方法外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的“除此之外,不能包含任何其他成员,例如:常量、域、
6、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但是只能继承一个类(包括抽象类)。3、抽象类与接口的相似之处a)不能实例化:b)包含未实现的方法声明;O派生类必须实现未实现的方法,抽象类是抽象方法,接口的所仃成员。4、抽象类与接口的区别a)接口可以多重继承,抽象类不可以:b)接口定义方法,不给实现,抽象类可以实现部分方法:C)接口中基本数据类型的数据成员,都默认为StaIiC和fina1.的,抽象类则不是:d)如果事先知道某种东西会成为基础类,那么第一选择就是把它变成一个接口:e)只有在必须使用方法定义或拧成员变量的时候,才考虑抽象类。十、short81=1;81=81+1;有什么借
7、?shorts1.=1.;s1.+=1;有什么错?shorts1.=1.;SI=S1.+1;(s1.+1.是int类型的,需进行强制转换)shorts1.=1.js1.+=1;(可以正确运行)I一、Math.round(11.5)等于多少?Math.round(-H.5)等于多少?Math,round(11.5)=12:Math,round(-11.5)=-11:Round方法返回与参数及近的长整数,参数加2后求其f1.oat.十二、Strings=newString(xyz);创建了几个StringObjeCt?JaVa有没有goto?1、创建了两个对象,个是“syz”,个是指向“syz”的
8、引用对象s.2、go1.o是JaVH中的保留字,现在没有在java中使用。十三、启动一个线程是用run还是StartO?启动一个线程是调用StartO方法,使线程所代表的虚拟处理机处丁可运行状态,这意味着它可以有JVY调度并执行。这并不意味着线程就好立即运行,run。方法可以产生必须退出的标志来停止一个线程。十四、JVM是什么?1、JYV是Java虚拟机,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JYv有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JaVa语言最重要的特点就是路平台运行,使用JVM就是为了支持与操作系统无关,实现跨平
9、台。2,JVM的原理:JW是JaVa的核心和基础,在java编译器和OS平台之间的虚拟处理器,它是一种利用软件方法实现的抽象的计算机基丁下届的操作系统和饭!件平台,可以在上面执行java的字节码程序。3、JYM执行程序的过程a)加我,c1.ass文件:b)管理并分配内存;c)执行垃圾收集:d)JRE(java运行时环境)由JVM构造的java程序的运行环境,也是java程序的运行环境,但是它同时个操作系统的个应用程序一个进程.因此它也有它白己的生命周期,也有自己的代码和数据空间。JVM在整个jdk中处于曲底必,负贡丁操作系统的交互,用来屏蔽操作系统环境,提供一个完整的JaVa运行环境,因此也就
10、是虚拟计第机。操作系统装入JVM是通过Jdk中的JaVa.exe来完成,通过卜.面4步来完成JYN环境:(1、创建JVM装载环境和配置:2、装载JVM.d1.1.;3、初始化JMd1.1.并挂界到jnienv(jni调用接口)实例:4、调用jnienv实例装载并处理CIaSS类)。4、JVM的声明周期1) JVM实例对应了一个独立运行的ja,a程序,它是进程级别a)启动:启动一个java程序时,一个JVM实例就产生任何一个拥有pub1.icstaticvoidInain(Stringargs)函数的CIaSS都可以作为JVM实例运行的起点。b)运行:main。作为该程序初始线程的起点,任何其他
11、线程都由该线程启动。Jw内部有两种线程:守护线程和非守护线程,main。屈于非守护线程,守护线程通常由JVM自己使用,java程序也可以表明自己创建的线程是守护线程。c)消亡:当程序中的所有非守护线程都终止时:JYM才退出,若安全管理泯允许,程序也可以使用RUntiBIe类或者使用SyStem.exi10;来退出。2) JVM执行引擎实例则对应了屈丁用户运行程序的线程它是线程级别的.十五、应用服务器都有哪些?BEAWeb1.QgiCServer,IBMWebSpheroApp1.icationServer,Orac1.eOiApp1.icationServer、JBossTomcat,十六、T
12、OeCat下部署项目在TOmCat中部署JaVaWeb应用程序仃两种方式:静态部署和动态部署。I、静态部署:静态部署指的是我们在服务器启动之前部署我们的程序,只有在启动服务器之后,我们的Web应用程序才能访问。2.动态部署:动态部署是指可以在启动服务器之后部署Web应用程序,而不用重新启动服务器。十七、heap和stack有什么区别?1、栈是一种线性集合,栈按照后进先出的方式进行处理2、第一,从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。这样分开,使得处理逻辑更为清晰。分而治之的思想。这种隔离、模块化的思想在软件设计的方方面面都有体现。3、第二,堆与栈的分离,使得堆中的内容可以被多个栈
13、共享(也可以理解为多个线程访问同一个对象)。这种共享的收益是很多的。一方面这种共享提供了一种有效的数据交Ef.方式(如:共享内存),另一方面,堆中的共享常量和缓存可以被所有栈访问,节省/空间。1、第三,栈因为运行时的需要,比如保存系统运行的上下文,需要进行地址段的划分。由于栈只能向上增长,因此就会限制住栈存储内容的能力。而堆不同,堆中的对象是可以根据需要动态增长的,因此栈和堆的拆分,使得动态增长成为可能,相应栈中只需记录堆中的一个地址即可。5、第四,面向对象方式的程序与以前结构化的程序在执行上没有任何区别。但是,面向时象的引入,使得对待问题的思考方式发生了改变,而更接近乎自然方式的思考,当我们
14、把对象拆开,你会发现,对级的属性其实就是数据,存放在堆中,而对彖的行为(方法),就是运行逻辑,放在栈中。我们编写对象的时候,其实即编写了数据结构,也编写了处理数据的逻辑。十八、forward和redirect的区别?1、forward是服务器请求资源,服务器直接访问目标地址的UR3把那个UR1.的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪来的,所以它的地址栏中还是原来的地址“2、redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,殷来说浏览潺会用刚才请求的所有参数重新请求,所以session,request参数都可以获取“
15、十九、Set里的元素是不能篁复的,那么用什么方法来区分重复与否呢?是用=还是equa1.s0?它们有何区别?1、使用iterator。方法来区分重复与否。2、equa1.s。是判断两个Set是否相等“3、CqUa1.So和一方法决定引用值是否指向同一对象equa1.s。在类中被置维,为的是当两个分离的对象的内容和类型相配的话,返向真值.二十、说出数据连接池的工作机制是什么?J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池第动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接.池驱动程序就新建定数量的连接,新建连接的数据由配置参数决定。当使用的池连接调用完成后.池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接.二十一、Java中的异常处理机制的简单原理和应用1、当JaVa程序违反了JaVa的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。违反语义规则包括两种情况。一种是JaVa类库内置的语义检杳。例如数组下标越界,会引发IndeXoUtofBOUndSEXCePtiOn;方法nu1.1.的对象时会引发Nu1.1.PointerExceptione2、另种情况就是Java允许