Java开发者技术人员升职应聘面试题.docx
Java面试题一、面向对戴的特征有那些?三大特征就是(缝承、封装、多态性)1、 抽象:抽缭就是忽略一个主题中与当前目标无关的那些方面,以便更充分的注.您与当前目标有关的方面。抽象并不打兑了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,是过程抽彖,二是数据抽象。2、 堆承:继承是一种联结类的层次模型,并且允许和鼓励类的用,它提供了一种明确表述共性的方法。对象的一个新类可以冲现有的类中派生.,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。3、 封装I封装就是把过程和数据包闱起来,对数据的访问只能通过已定义的界面,面向对象计数始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象.这些对象通过一个受保护的接口访问我他对象。4、 多态性I是指允许不同的类的对象对同一消息做出响应。多态性包括参数化多态性和包含多态性。多态性语音具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名的问题。二、String是基本的数据类型吗?1- JaYa的基本数据类里包括byte、int、Char、Iong、f1.oat%doub1.e和ShOrto2、ja、,a.kmg.Siring类是fina1.类型的,因此不能继承和修改这个类,为了提高效率节省空间,我们应该使用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的区别.1、S1.ring和SIringBUffer,它们可以存储和操作字符串,印包含多个字符的字符数据。2、这个String类提供了数值不可改变的字符申,而这个StringBUffer类提供的字符串可以进行修改,可以使用这个S1.ringBuffer来动态构造字符数据。3、StringBUiId是jdk1.5后用来替换StringBUffer的个类,大多数时候可以替换StringBuffere和StringBUffer的区别在于StringBUi1.d是一个单线程使用的类,不执行线程,同步所以比SIringBUffer速度快,效率高,是非线程安全的。五、 说出Array1.i8t,Vector,1.inked1.ist的存储性能和特性Array1.ist和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,YeCtCr由下使用SynChrOniZCd方法(线程安全),通常性能上较Array1.ist差,而1.inked1.iS1.使用双向链表实现存储,按序号索引需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后即可,所以插入速度较快。大、HashMap和HashTab1.e的区别.1、HaShVaP是HaShTab1.e的轻量级实现(非线程安全的实现),它们走完成了MaP接口。2、HaShMaP允许空(nu1.1.)键值(key),由于非线程安全,效率上可一高于HaShTabIe.3、HashMap允许将nu1.1.作为一个entry的key或者va1.ue,HashTab1.e不允许>4、HashMap把HashTab1.e的contains方法去撞了,改成ContainsKey和ContainsVau1.ee因为contains方法容易让人误会。5、HaShTabIe维承自DiCtiOnary类,而HaShMaP是java1.2引进的MaPinterface的一个实现。6、HashTab1.e的方法是Synchronize的,而IiashMap的不是,在多个线程访问HashTab1.e时,不需要自己为它的方法实现同步,而HaShMaP就必须为之提供外同步。七、fina1.,fina1.1.y*fina1.ize的区别1、fina1.-修饰符(关键字)如果一个类被声明为fina1.,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为abstract的,又被声明为fina1.的.将变量或方法声明为fina1.,可以保证它们在使用过程中不被改变.被声明为fina1.变量必须在声明时给定初值,而在以后的引用中只能读取,不能修改。被声明为fina1.的方法也是只能使用,不能重载。2、fina1.1.y-在异常处理时提供fina1.1.y块来执行任何清除操作。如果抛出一个异常,那么相匹配的CatCh子句就会执行,然后控制就会进入fina1.1.y块(如果有的话)。3、fina1.ize-方法名.Java技术允许使用fina1.ize。方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在ObjeCt类中定义的,因此所有的类都继承了它。子类覆盖fina1.ize。方法以整理系统资源或执行其他清理工作。fina1.ize()方法是在垃圾收集器删除对象之前对这个对象调用的。八、OVer1.ord和OVerride的区别.OVer1.orded的方法是否可以改变返回值的类型?1、方法选写overriding和正栽over1.ording是JaVU多态性的不同表现。2、重写Oyerriding是父类与了类之间多态性的种表现:如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写r如子类的对象使用这个方法时,将调用子类中定义的,对它而言,父类中的方法如同被屏蔽了。3、重敌OVer1.ording是个类中多态性的种表现:如果在个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,这样称为方法的重载.4、OVerIorded是可以改变返回值的类型的.九、abstractc1.ass和interface有什么区别?1、抽象类:抽象类是特殊的类,只是不能被实例化:除此之外,具有类的其他特性:Ot要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明在抽象类中,且不包含任何实现,派去类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以置i基类的抽彖方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。2、接口:接口是应用类型的,类似于类,更和抽象类有所相似,以至于很多人对抽象类和接口的区别比较模糊.接口除了可以包含方法外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的“除此之外,不能包含任何其他成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但是只能继承一个类(包括抽象类)。3、抽象类与接口的相似之处a)不能实例化:b)包含未实现的方法声明;O派生类必须实现未实现的方法,抽象类是抽象方法,接口的所仃成员。4、抽象类与接口的区别a)接口可以多重继承,抽象类不可以:b)接口定义方法,不给实现,抽象类可以实现部分方法:C)接口中基本数据类型的数据成员,都默认为StaIiC和fina1.的,抽象类则不是:d)如果事先知道某种东西会成为基础类,那么第一选择就是把它变成一个接口:e)只有在必须使用方法定义或拧成员变量的时候,才考虑抽象类。十、short81=1;81=81+1;有什么借?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”的引用对象s.2、go1.o是JaVH中的保留字,现在没有在java中使用。十三、启动一个线程是用run还是StartO?启动一个线程是调用StartO方法,使线程所代表的虚拟处理机处丁可运行状态,这意味着它可以有JVY调度并执行。这并不意味着线程就好立即运行,run。方法可以产生必须退出的标志来停止一个线程。十四、JVM是什么?1、JYV是Java虚拟机,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JYv有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JaVa语言最重要的特点就是路平台运行,使用JVM就是为了支持与操作系统无关,实现跨平台。2,JVM的原理:JW是JaVa的核心和基础,在java编译器和OS平台之间的虚拟处理器,它是一种利用软件方法实现的抽象的计算机基丁下届的操作系统和饭!件平台,可以在上面执行java的字节码程序。3、JYM执行程序的过程a)加我,c1.ass文件:b)管理并分配内存;c)执行垃圾收集:d)JRE(java运行时环境)由JVM构造的java程序的运行环境,也是java程序的运行环境,但是它同时个操作系统的个应用程序一个进程.因此它也有它白己的生命周期,也有自己的代码和数据空间。JVM在整个jdk中处于曲底必,负贡丁操作系统的交互,用来屏蔽操作系统环境,提供一个完整的JaVa运行环境,因此也就是虚拟计第机。操作系统装入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。作为该程序初始线程的起点,任何其他线程都由该线程启动。Jw内部有两种线程:守护线程和非守护线程,main。屈于非守护线程,守护线程通常由JVM自己使用,java程序也可以表明自己创建的线程是守护线程。c)消亡:当程序中的所有非守护线程都终止时:JYM才退出,若安全管理泯允许,程序也可以使用RUntiBIe类或者使用SyStem.exi10;来退出。2) JVM执行引擎实例则对应了屈丁用户运行程序的线程它是线程级别的.十五、应用服务器都有哪些?BEAWeb1.QgiCServer,IBMWebSpheroApp1.icationServer,Orac1.eOiApp1.