Java面试题-JAVA程序员JAVA工程师面试必看.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Java面试题-JAVA程序员JAVA工程师面试必看.docx》由会员分享,可在线阅读,更多相关《Java面试题-JAVA程序员JAVA工程师面试必看.docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-JAVA程序员JAVA工程师面试必看Java面试题:第一锦一、面向对象的特征有哪些方面1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽 象并不打算了解全部问题,而只是选择其中的一局部,暂时不用局部细节。抽象包括两个方面,一是过程 抽象,二是数据抽象。2继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象 的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的 派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并 且类可以修
2、改或增加新的方法使之更适合特殊的需要。3,封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概 念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对 象。4多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性 语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。二、String是最基本的数据类型吗?基本数据类型包括 byte、int、char、long、floaty double、boolean 和 short java lang Strin
3、g 类是 final 类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffero三、int和Integer有什么区别?3提供两种不同的类型:引用类型和原始类型(或内置类型)。int是如巴的原始数据类型,Integer 是Java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类boolean Booleanchar Characterbyte Byteshort ShortintIntegerlong Longfloat Floatdouble Double引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原
4、始类型具有不同的特 征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用* /public static void main(StringD args) for Gnti=101;i 200; i+=2) boolean f = true;for (intj = 2; j 3)return;System out printing);public static void m3(int i, int j) System out printing + j);)public static int m4(int i, int j) (return i j ? i:
5、 j;public class Test Method /* 方法说明:JAVA的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,* 声明格式:修饰符1修饰符2返回值类型方法名(形式参数列表)Java语句;* 形式参数:在方法被调用时用于接收外界输入的数据。* 实参:调用方法时实际传给方法的数据。* 返回值:方法在执行完毕后返还给调用它的环境的数据。* 返回值类型:事先约定的返回值的数据类型,如无返回值,必须给出返回值类型void。* JAVA语言使用下述形式调用方法:对象名.方法名(实参列表)* 实参的数目、数据类型和次序必须和所调用方法声明的形参列表匹配。* return语句终
6、止方法的运行并指定要返回的数据。* Java中进行函数调用中传递参数时,遵循传递的原那么:* 基本类型传递的是该数据值本身,引用类型传递的是对对象的引用,而不是对象本身。* param args*/public static void main (String口 args) m();m 2;m3(3, 4);m4(4, 6);int i = m4 (4, 6);Systein out printing);public static void mO return;如果这里使用了 return,下面的语句将永远无法执行System out println(OK);public static voi
7、d m2 (int i) if (i 3)return;System out println0;)public static void m3(int i, int j) System out printin(i + j);public static int m4 (int i, int j) return i j ? i: j;算法程序题:该公司笔试题就1个,要求在10分钟内作完。题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如: 512234、412345等,要求:4不能在第三位,3与5不能相连。基本思路:1把问题归结为图结构的遍历问题。实
8、际上6个数字就是六个结点,把六个结点连接成无向连通图,对于每 一个结点求这个图形的遍历路径,所有结点的遍历路径就是最后对这6个数字的排列组合结果集。2显然这个结果集还未到达题目的要求。从以下几个方面考虑:1. 3. 5不能相连:实际要求这个连通图的结点3, 5之间不能连通 可在构造图结构时就满足改条件,然 后再遍历图。2. 不能有重复:考虑到有两个2,明显会存在重复结果,可以把结果集放在TreeSet中过滤重复结果3. 4不能在第三位:仍旧在结果集中去除满足此条件的结果。采用二维数组定义图结构,最后的代码是:i mport java util Iterator;import java util
9、 TreeSet;public class Test Question private String口 b = new StringD2,“2, 3,4,5;private int n = h length;private boolean0 visited = new booleann;visited =falsh;private intDD a = new intn n;private String result 二;private TreeSet TreeSet = new TreeSet0;public static void main(StringQ args) new Test Qu
10、estion。, start。;private void startO for (int i = 0; i n; i+) for (int j = 0; j n; j+) if (i = j) aij| = 0; else = 1;)/=0;a53 =0;for (inti = 0; i n; i+) this depthFirstSearch (i);)Iterator it = set iterator 0;while (it hasNextO) String string =(String) it nextO;if (string index Of (4)!= 2) System, ou
11、t printin (string);)private void depthFirstSearch(int startindex) visited startindex = true;result = result + b startindex;if (result length 0 = n) TreeSet. add (result);!for(int j = 0; j n; j+) if (astartlndexj = 1 & visitedj = false) depthFirstSearch (j); else continue;)!result = result substring
12、(0, result length 0 -1); vi sited startTndex = false;)注:郁闷,花了半个多小时才能写出来还是看的提示 无向图,学数据结构时对他就不是很感冒内存里面分成四局部:1.代码区CODE SEGMENT :存放代码2数据区DATA SEGMENT :存放静态变量和字符串常量3 .栈区STACK :局部变量.堆HEAP : NEW出来的东西方法体内(包括方法的参数,即形参)叫局部变量,类内部,方法外部叫成员变量JAVA是纯面向对象语言,没有象C+的全局变量Java面试题:第二锦2 1 Hash Map 和 Hashtable 的区别。Hash Map是
13、Hashtable的轻量级实现(非线程平安的实现),他们者院成了 Map接口,主要区别在于 Hash Map允许空(null)键值(key),由于非线程平安,效率上可能高于HashtableHash Map允许将null作为一个entry的key或者value,而Hashtable不允许。Hash Map 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 contains Key.因为 contains 方法 容 易让人引起误解。Hashtable 继承自 Dictionary 类,而HashMap 是2引进的Map interface 的一个实现
14、。最大的不同是,Hashtable的方法是Synchronize的,而Hash Map不是,在多个线程访问Hashtable时, 不需要自己为它的方法 实现同步,而HashMap就必须为之提供外同步。Hashtable和Hash Map采用的 haslVrehash算法都大概一样,所以性能不会有很大的差异。2 2 final, finally, finalize 的区别。final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一局部,表示总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法
15、,可以覆盖此方 法提供垃圾收集时的其他资源回收,例如关闭文件等。2 3 sleep ()和wait ()有什么区别?sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控 状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定 池,只有针对此对象发出notify方法(或notify All)后本线程才进入对象锁定池准备获得对象锁进入运行 状态。2 4 Overload和Override的区别。Overloaded的方法是否可以改变返回值的类
16、型?方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类 之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父 类有相同的名称和参数,我们说该方法被重写(Overriding) o子类的对象使用这个方法时,将调用子类 中的定义,对它而言,父类中的定义如同被屏蔽了。如果在一个类中定义了多个同名的方法,它们或有 不同的参数个数或有不同的参数类型,那么称为方法的重载(Overloading)。Overloaded的方法是可以改变返 回值的类型。2 5 error和exceptio
17、n有什么区别?error表示恢复不是不可能但很困难的情况下的一种严重问题。比方说内存溢出。不可能指望程序能处 理这样的情况。exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。2 6同步和异步有何异同,在什么情况下分别使用他们?举例说明。如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已 经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回 时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。2. 7 a
18、bstract class 和 interface 有什么区别?声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创立一个表达某些基本行 为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创立abstract类的实例。然而可以创 建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方 法。Abstract类的子类为它们父类中的所有抽象方法提供实现,否那么它们也是抽象类为。取而代之,在子 类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口 (interface)是抽象类的变体。在接口中,所有方法都是抽象
19、的。多继承性可通过实现这样的接口 而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口 的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序 体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有 抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从 接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。2 8 heap和stack有什么区别。栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈
20、按照后进先出的方式进行处理。 堆是栈的一个组成元素。2 9 forward 和 redirect 的区别forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然 后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是 原来的地址。redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会 用刚才请求的所有参数重新请求,所以session, request参数都可以获取。2 10 EJB 与 Java Bean 的区别?Java Bean是可复用的组件,对Java Bean并没
21、有严格的规范,理论上讲,任何一个Java类都可以是一 个Bean,但通常情况下,由于Java Bean是被容器所创立(如Tomcat)的,所以Java Bean应具有一个无参 的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相 当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean相当于 DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进 程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这
22、样的容器中,EJB客户从不直接访问真 正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创立和管理。客 户通过容器来访问真正的EJB组件。Java面试题:第三锦1.1 Static Nested Class 和 Inner Class 的不同。Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常 的内部类需要在外部类实例化后才能实例化。1.2 JSP中动态INCLUDE与静态INCLUDE的区别?动态 INCLUDE 用 jsp : include 动作实现 它总是会检查 所含文件中的变化,适合
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 试题 程序员 工程师 面试
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内