长沙达内面试题锦集


Alpha_Cook_Book Tarena 面试锦集 (CoreJava、SSH、Jsp/Servlet、Ajax、JS、UML、Oracle) 扎实的基本功+良好的口头表达=高薪工作 Alpha Tarena 长沙 2010 CoreJava 部分 1、面向对象的特征有哪些方面? 1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全 部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2)继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从 现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类 (父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3)封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可 以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4)多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、 抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、作用域 public,private,protected,以及不写时的区别? 区别如下: 作用域 当前类 同包 子孙类 其他 public √ √ √ √ protected √ √ √ × default √ √ × × private √ × × × 不写时默认为 default。 3、String 是最基本的数据类型吗? 不是。 4、float 型 float f=3.4 是否正确? 不正确;精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 。 5、语句 float f=1.3;编译能否通过? 不能;应该用强制类型转换,如下所示:float f=(float)1.3; 。 6、short s1 = 1; s1 = s1 + 1;有什么错?short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1;s1+1 运算结果是 int 型,需要强制转换类型; short s1 = 1; s1 += 1;可以正确编译,自动类型提升。 7、Java 有没有 goto? goto 是 java 中的保留字,现在没有在 java 中使用。 8、int 和 Integer 有什么区别? Java 提供两种不同的类型:引用类型和原始类型(或内置类型); int 是 java 的原始数据类型,Integer 是 java 为 int 提供的封装类。 Java 为每个原始类型提供了封装类: 原始类型: boolean,char,byte,short,int,long,float,double 封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大 小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用 实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 9、&和&&的区别? &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 10、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别? 区别主要有两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型 b.逻辑操作不会产生短路。 11、heap 和 stack 有什么区别? 栈是一种线形集合,其添加和删除元素的操作应在同一段完成,栈按照后进先出的方式进行处理;堆是栈的一个组成元素。 12、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? Math.round(11.5)==12 Math.round(-11.5)==-11 round 方法返回与参数最接近的长整数,参数加 1/2 后求其 floor。 13、swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上? switch(expr1)中,expr1 是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、short、char 或者 byte。long,string 都 不能作用于 swtich。 14、编程题: 用最有效率的方法算出 2 乘以 8 等於几? 2 << 3。 15、有没有 length()这个方法? String 有没有 length()这个方法? 数组没有 length()这个方法,有 length 的属性。String 有 length()这个方法。 16、在 JAVA 中,如何跳出当前的多重嵌套循环? 在最外层循环前加 label 标识,然后用 break:label 方法即可跳出多重循环。 17、构造器 Constructor 是否可被 override? 构造器 Constructor 不能被继承,因此不能重写 Overriding,但可以被重载 Overloading。 18、两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对? 不对,有相同的 hash code。 19、是否可以继承 String 类? String 类是 final 类,故不可以继承。 20、以下二条语句返回值为 true 的有: A:―beijing‖==―beijing‖; B:―beijing‖.equalsIgnoreCase(new String(―beijing‖)); A 和 B 。 21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这 里到底是值传递还是引用传递? 是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象 的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。 22、我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1 等,如何输出一个某种编码的字符 串? public String translate(String str){ String tempStr = ""; try{ tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim(); }catch (Exception e){ System.err.println(e.getMessage()); } return tempStr; } 23、String 和 StringBuffer 的区别? JAVA 平台提供了两个类:String 和 StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个 String 类提供了 数值不可改变的字符串。而这个 StringBuffer 类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用 StringBuffer。 典型地,你可以使用 StringBuffers 来动态构造字符数据。 24、String, StringBuffer StringBuilder 的区别。 String 的长度是不可变的; StringBuffer 的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用 StringBuffer,如果最后需要 String,那么使用 StringBuffer 的 toString()方法;线程安全; StringBuilder 是从 JDK 5 开始,为 StringBuffer 该类补充了一个单个线程使用的等价类;通常应该优先使用 StringBuilder 类,因为 它支持所有相同的操作,但由于它不执行同步,所以速度更快。 25、Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型? 方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现。重写 Overriding 是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被―屏蔽‖了。如果在一个类中定义 了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded 的方法是可以改 变返回值的类型。 26、定义类 A 和类 B 如下: class A { int a=1; double d=2.0; void show(){ System.out.println("Class A: a="+a +"\td="+d); } } class B extends A{ float a=3.0f; String d="Java program."; void show(){ super.show( ); System.out.println("Class B: a="+a +"\td="+d); } } (1) 若在应用程序的 main 方法中有以下语句: A a=new A(); a.show(); 则输出的结果如何? (2) 若在应用程序的 main 方法中定义类 B 的对象 b: A b=new B(); b.show(); 则输出的结果如何? 输出结果为: 1)Class A: a=1 d=2.0 ; 2)Class A: a=1 d=2.0 Class B: a=3.0 d=Java program。 27、描述一下 JVM 加载 class 文件的原理机制? JVM 中类的装载是由 ClassLoader 和它的子类来实现的,Java ClassLoader 是一个重要的 Java 运行时系统组件。它负责在运行时查找 和装入类文件的类。 28、char 型变量中能不能存贮一个中文汉字?为什么? 能够定义成为一个中文的,因为 java 中以 unicode 编码,一个 char 占 16 个字节,所以放一个中文是没问题的。 29、abstract class 和 interface 有什么区别? 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明 方法,但不能在该类中实现该类的情况。不能创建 abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向 具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们 也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。 新型多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,所有成员变量都是 public static final 的。一个类可以实 现多个接口,当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对 象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型 或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。 30、Static Nested Class 和 Inner Class 的不同? Static Nested Class 是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类 实例化后才能实例化。 31、java 中会存在内存泄漏吗,请简单描述。 会;存在无用但可达的对象,这些对象不能被 GC 回收,导致耗费内存资源。 32、abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是 synchronized? 都不能。 33、静态变量和实例变量的区别? 静态变量也称为类变量,归全类共有,它不依赖于某个对象,可通过类名直接访问;而实例变量必须依存于某一实例,只能通过对 象才能访问到它。 34、是否可以从一个 static 方法内部发出对非 static 方法的调用? 不可以,如果其中包含对象的 method(),不能保证对象初始化。 35、写 clone()方法时,通常都有一行代码,是什么? Clone 有缺省行为:super.clone(),他负责产生正确大小的空间,并逐位复制。 36、GC 是什么? 为什么要有 GC? GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统 的不稳定甚至崩溃,Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java 语言没有提供释放 已分配内存的显示操作方法。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的 方法之一:System.gc() 或 Runtime.getRuntime().gc() 。 37、垃圾回收的优点和原理。并考虑 2 种回收机制。 Java 语言中一个显著的特点就是引入了垃圾回收机制,使 c++程序员最头疼的内存管理的问题迎刃而解,它使得 Java 程序员在编写 程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java 中的对象不再有―作用域‖的概念,只有对象的引用才有―作用域‖。 垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知 的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有 对象进行垃圾回收。回 收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 38、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 对于 GC 来说,当程序员创建对象时,GC 就开始监控这个对象的地址、大小以及使用情况。通常,GC 采用有向图的方式记 录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当 GC 确定一些对象为"不可达" 时,GC 就有责任回收这些内存空间。可以。程序员可以手动执行 System.gc(),通知 GC 运行,但是 Java 语言规范并不保证 GC 一 定会执行。 39、String s=new String(―xyz‖);创建了几个 String Object? 两个对象,一个是"xyx",一个是指向"xyx"的引用对象 s。 40、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承实体类,但前提是实体类必须有明确的构造函数。 41、Java 的接口和 C++的虚类的相同和不同处。 由于 Java 不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。 与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和 属性,并且接口里面的属性在默认状态下面都是 public static,所有方法默认情况下是 public.一个类可以实现多个接口。 42、一个―.java‖源文件中是否可以包含多个类(不是内部类)?有什么限制? 可以;必须只有一个类名与文件名相同。 43、说出一些常用的类,包,接口,请各举 5 个。 常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer; 常用的包:java.lang java.awt java.io java.util java.sql; 常用的接口:Remote List Map Document NodeList 44、Anonymous Inner Class (匿名内部类) 是否可以 extends(继承)其它类?是否可以 implements(实现)interface(接口)? 可以继承其他类或实现其他接口,在 swing 编程中常用此方式。 45、内部类可以引用他包含类的成员吗?有没有什么限制? 一个内部类对象可以访问创建它的外部类对象的内容。 46、java 中实现多态的机制是什么? 方法的覆盖 Overriding 和重载 Overloading 是 java 多态性的不同表现;覆盖 Overriding 是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。 47、在 java 中一个类被声明为 final 类型,表示了什么意思? 表示该类不能被继承,是顶级类。 48、下面哪些类可以被继承? 1)java.lang.Thread (T) 2)java.lang.Number (T) 3)java.lang.Double (F) 4)java.lang.Math (F) 5)java.lang.Void (F) 6)java.lang.Class (F) 7)java.lang.ClassLoader (T) 1、2、7 可以被继承。 49、指出下面程序的运行结果: 【基础】 class A{ static{ System.out.print("1"); } public A(){ System.out.print("2"); } } class B extends A{ static{ System.out.print("a"); } public B(){ System.out.print("b"); } } public class Hello{ public static void main(String[] ars){ A ab = new B(); //执行到此处,结果: 1a2b ab = new B(); //执行到此处,结果: 1a2b2b } } 输出结果为 1a2b2b;类的 static 代码段,可以看作是类首次加载(虚拟机加载)执行的代码,而对于类加载,首先要执行其基类的构造,再执 行其本身的构造。 50、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 父类: package test; public class FatherClass { public FatherClass() { System.out.println("FatherClass Create"); } } 子类: package test; import test.FatherClass; public class ChildClass extends FatherClass { public ChildClass() { System.out.println("ChildClass Create"); } public static void main(String[] args) { FatherClass fc = new FatherClass(); ChildClass cc = new ChildClass(); } } 输出结果为: FatherClass Create FatherClass Create ChildClass Create 51、内部类的实现方式? 示例代码如下: package test; public class OuterClass { private class InterClass { public InterClass() { System.out.println("InterClass Create"); } } public OuterClass() { InterClass ic = new InterClass(); System.out.println("OuterClass Create"); } public static void main(String[] args) { OuterClass oc = new OuterClass(); } } 输出结果为: InterClass Create OuterClass Create 52、关于内部类: public class OuterClass { private double d1 = 1.0; //insert code here } You need to insert an inner class declaration at line 3,Which two inner class declarations are valid?(Choose two.) A. class InnerOne{ public static double methoda() {return d1;} } B. public class InnerOne{  static double methoda() {return d1;} } C. private class InnerOne{ double methoda() {return d1;} } D. static class InnerOne{ protected double methoda() {return d1;} } E. abstract class InnerOne{ public abstract double methoda();} 答案为 C、E;说明如下: 1)静态内部类可以有静态成员,而非静态内部类则不能有静态成员;故 A、B 错; 2)静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;故 D 错; 3)非静态内部类的非静态成员可以访问外部类的非静态变量;故 C 正确。 53、数据类型之间的转换: 1)如何将数值型字符转换为数字? 2)如何将数字转换为字符? 3)如何取小数点前两位并四舍五入? 1)调用数值类型相应包装类中的方法 parse***(String)或 valueOf(String)即可返回相应基本类型或包装类型数值; 2)将数字与空字符串相加即可获得其所对应的字符串;另外对于基本类型数字还可调用 String 类中的 valueOf(…)方法返回相应字符串, 而对于包装类型数字则可调用其 toString()方法获得相应字符串; 3)可用该数字构造一 java.math.BigDecimal 对象,再利用其 round()方法进行四舍五入到保留小数点后两位,再将其转换为字符串截取最 后两位。 54、字符串操作:如何实现字符串的反转及替换? 可用字符串构造一 StringBuffer 对象,然后调用 StringBuffer 中的 reverse 方法即可实现字符串的反转,调用 replace 方法即可实现字符 串的替换。 55、编码转换:怎样将 GB2312 编码的字符串转换为 ISO-8859-1 编码的字符串? 示例代码如下: String s1 = "你好"; String s2 = new String(s1.getBytes("GB2312"), "ISO-8859-1"); 56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 函数代码如下: public String[] split(String str, int chars){ int n = (str.length()+ chars - 1)/chars; String ret[] = new String[n]; for(int i=0; i 0); // throws an Assertionerror if a <= 0 断言可以有两种形式: assert Expression1 ; assert Expression1 : Expression2 ; Expression1 应该总是产生一个布尔值。 Expression2 可以是得出一个值的任意表达式;这个值用于生成显示更多调试信息的 String 消息。 断言在默认情况下是禁用的,要在编译时启用断言,需使用 source 1.4 标记: javac -source 1.4 Test.java 要在运行时启用断言,可使用-enableassertions 或者-ea 标记。 要在运行时选择禁用断言,可使用-da 或者-disableassertions 标记。 要在系统类中启用断言,可使用-esa 或者-dsa 标记。还可以在包的基础上启用或者禁用断言。可以在预计正常情况下不会到达 的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管 是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外, 断言不应该以任何方式改变程序的状态。 62、error 和 exception 有什么区别 error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况 63、ArrayList 和 Vector 的区别 主要从二方面来说. 一.同步性:Vector 是线程安全的,也就是说是同步的,而 ArrayList 是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector 默认增长为原来一培,而 ArrayList 却是原来的一半。 64、Collection 和 Collections 的区别 Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 65、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是 equals()? 它们有何区别 Set 里的元素是不能重复的,那么用 iterator()方法来区分重复与否。equals()是判读两个 Set 是否相等 equals()和==方法决定引用值是否指向同一对象 equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值 66、HashMap 和 Hashtable 的区别 HashMap 与 HashTable 主要从三方面来说。 一.历史原因:Hashtable 是基于陈旧的 Dictionary 类的,HashMap 是 Java 1.2 引进的 Map 接口的一个实现 二.同步性:Hashtable 是线程安全的,也就是说是同步的,而 HashMap 是线程序不安全的,不是同步的 三.值:只有 HashMap 可以让你将空值作为一个表的条目的 key 或 value。 67、说出 ArrayList,Vector, LinkedList 的存储性能和特性 ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索 引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了 synchronized 方法(线程 安全),通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据 时只需要记录本项的前后项即可,所以插入速度较快。 68、java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 字节流,字符流。字节流继承于 InputStream OutputStream,字符流继承于 InputStreamReader OutputStreamWriter。在 java.io 包中还有 许多其他的流,主要是为了提高性能和使用方便。 69、文件读写的基本类 File Reader 类和 FileWriter 类分别继承自 Reader 类和 Writer 类。FileReader 类用于读取文件,File Writer 类用于将数据写入文件,这 两各类在使用前,都必须要调用其构造方法创建相应的对象,然后调用相应的 read()或 write()方法。 70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 多线程有两种实现方法,分别是继承 Thread 类与实现 Runnable 接口,同步的实现方面有两种,分别是 synchronized,wait 与 notify。 71、启动一个线程是用 run()还是 start()? 启动一个线程是调用 start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由 JVM 调度并执行。这并不意味着 线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 72、当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法? 不能,一个对象的一个 synchronized 方法只能由一个线程访问。 73、线程的基本概念、线程的基本状态以及状态之间的关系 线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。 Java 中的线程有四种状态分别是:运行、就绪、挂起、结束。 74、sleep() 和 wait() 有什么区别? sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动 恢复。调用 sleep 不会释放对象锁。 wait 是 Object 类的方法,对此对象调用 wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出 notify 方法(或 notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 75、socket 通信(tcp/udp 区别及 JAVA 的实现方式) TCP——传输控制协议,具有极高的可靠性,保证数据包按照顺序准确到达,但其也有着很高的额外负担。UDP——使用者数据元 协议,并不能保证数据包会被成功的送达,也不保证数据包到达的顺序,但其传输速度很快。 大多数我们会使用 TCP,偶尔才会动用 UDP,如声音讯号,即使少量遗失,也无关紧要。 76、什么是 java 序列化,如何实现 java 序列化? 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流 化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现:将需要被序列化的类实现 Serializable 接口,该接口没有需要实现的方法,implements Serializable 只是为了标注该对 象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使用 ObjectOutputStream 对象的 writeObject(Object obj)方法就可以将参数为 obj 的对象写出(即保存其状态),要恢复的话则用输入流。 77、简述 synchronized 和 java.util.concurrent.locks.Lock 的异同 ? 主要相同点:Lock 能完成 synchronized 所实现的所有功能 主要不同点:Lock 有比 synchronized 更精确的线程语义和更好的性能。synchronized 会自动释放锁,而 Lock 一定要求程序员手工释 放,并且必须在 finally 从句中释放。 78、abstract class Name { private String name; public abstract boolean isStupidName(String name) {}}大侠们,这有何 错误? 错。abstract method 必须以分号结尾,且不带花括号。 79、public class Something { void doSomething () { private String s = ""; int l = s.length(); } }有错吗? 错。局部变量前不能放置任何访问修饰符 (private,public,和 protected)。final 可以用来修饰局部变量(final 如同 abstract 和 strictfp, 都是非访问修饰符,strictfp 只能修饰 class 和 method 而非 variable)。 80、abstract class Something { private abstract String doSomething ();}这好像没什么错吧? 错。abstract 的 methods 不能以 private 修饰。abstract 的 methods 就是让子类 implement(实现)具体细节的,怎么可以用 private 把 abstract method 封锁起来呢? (同理,abstract method 前不能加 final)。 81、public class Something { public int addOne(final int x) { return ++x; }}这个比较明显。 错。int x 被修饰成 final,意味着 x 不能在 addOne method 中被修改。 82、public class Something { public static void main(String[] args) { Other o = new Other(); new Something().addOne(o); } public void addOne(final Other o) { o.i++; }} class Other { public int i;} 和上面的很相似,都是关于 final 的问题,这有错吗? 正确。在 addOne method 中,参数 o 被修饰成 final。如果在 addOne method 里我们修改了 o 的 reference,(比如: o = new Other();),那 么如同上例这题也是错的。但这里修改的是 o 的 member vairable(成员变量),而 o 的 reference 并没有改变。 83、class Something { int i; public void doSomething() { System.out.println("i = " + i); }} 有什么错呢? 看不出来啊 正确。输出的是"i = 0"。int i 属於 instant variable (实例变量,或叫成员变量)。instant variable 有 default value。int 的 default value 是 0。 84、class Something { final int i; public void doSomething() { System.out.println("i = " + i); }}和上面一题只有一个地方 不同,就是多了一个 final。这难道就错了吗? 错。final int i 是个 final 的 instant variable (实例变量,或叫成员变量)。final 的 instant variable 没有 default value,必须在 constructor (构 造器)结束之前被赋予一个明确的值。可以修改为"final int i = 0;"。 85 、 public class Something { public static void main(String[] args) { Something s = new Something(); System.out.println("s.doSomething() returns " + doSomething()); } public String doSomething() { return "Do something ..."; }} 看上去很完美。 错。看上去在 main 里 call doSomething 没有什么问题,毕竟两个 methods 都在同一个 class 里。但仔细看,main 是 static 的。static method 不能直接 call non-static methods。可改成"System.out.println("s.doSomething() returns " + s.doSomething());"。同理,static method 不能访 问 non-static instant variable。 86、此处,Something 类的文件名叫 OtherThing.javaclass Something { private static void main(String[] something_to_do) { System.out.println("Do something ..."); }} 这个好像很明显。 正确。从来没有人说过 Java 的 Class 名字必须和其文件名相同。但 public class 的名字必须和文件名相同。 87 、 interface A{ int x = 0;} class B{ int x =1;} class C extends B implements A { public void pX(){ System.out.println(x); } public static void main(String[] args) { new C().pX(); }} 错误。在编译时会发生错误(错误描述不同的 JVM 有不同的信息,意思就是未明确的 x 调用,两个 x 都匹配(就象在同时 import java.util 和 java.sql 两个包时直接声明 Date 一样)。对于父类的变量,可以用 super.x 来明确,而接口的属性默认隐含为 public static final.所以可 以通过 A.x 来明确。 Hibernate 部分 88、在数据库中条件查询速度很慢的时候,如何优化? 1.建索引 2.减少表之间的关联 3.优化 sql,尽量让 sql 很快定位数据,不要让 sql 做全表查询,应该走索引,把数据量大的表排在前面 4.简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据 89、在 hibernate 中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应, 如何解决这个问题? 解决方案一,按照 Object[]数据取出数据,然后自己组 bean 解决方案二,对每个表的 bean 写构造函数,比如表一要查出 field1,field2 两个字段,那么有一个构造函数就是 Bean(type1 filed1,type2 field2) ,然后在 hql 里面就可以直接生成这个 bean 了。具体怎么用请看相关文档,我说的不是很清楚。 90、session.load()和 session.get()的区别 Session.load/get 方法均可以根据指定的实体类和 id 从数据库读取记录,并返回与之对应的实体对象。其区别在于:如果未能发现符 合条件的记录,get 方法返回 null,而 load 方法会抛出一个 ObjectNotFoundException。 Load 方法可返回实体的代理类实例,而 get 方法永远直接返回实体类。 load 方法可以充分利用内部缓存和二级缓存中的现有数据,而 get 方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将 越过二级缓存,直接调用 SQL 完成数据读取。 Session 在加载实体对象时,将经过的过程:首先,Hibernate 中维持了两级缓存。第一级缓存由 Session 实例维护,其中保持了 Session 当前所有关联实体的数据,也称为内部缓存。而第二级缓存则存在于 SessionFactory 层次,由当前所有由本 SessionFactory 构造的 Session 实例共享。出于性能考虑,避免无谓的数据库访问,Session 在调用数据库查询功能之前,会先在缓存中进行查询。首先在第 一级缓存中,通过实体类型和 id 进行查找,如果第一级缓存查找命中,且数据状态合法,则直接返回。 之后,Session 会在当前―NonExists‖记录中进行查找,如果―NonExists‖记录中存在同样的查询条件,则返回 null。 ―NonExists‖记录了 当前 Session 实例在之前所有查询操作中,未能查询到有效数据的查询条件(相当于一个查询黑名单列表)。如此一来,如果 Session 中一个无效的查询条件重复出现,即可迅速作出判断,从而获得最佳的性能表现。 对于 load 方法而言,如果内部缓存中未发现有效数据,则查询第二级缓存,如果第二级缓存命中,则返回。 如在缓存中未发现有效数据,则发起数据库查询操作(Select SQL),如经过查询未发现对应记录,则将此次查询的信息在―NonExists‖ 中加以记录,并返回 null。 根据映射配置和 Select SQL 得到的 ResultSet,创建对应的数据对象。 将其数据对象纳入当前 Session 实体管理容器(一级缓存)。 执行 Interceptor.onLoad 方法(如果有对应的 Interceptor)。 将数据对象纳入二级缓存。 如果数据对象实现了 LifeCycle 接口,则调用数据对象的 onLoad 方法。 91、Hibernate 的主键生成机制 1) assigned 主键由外部程序负责生成,无需 Hibernate 参与。 2) hilo 通过 hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。 3) seqhilo 与 hilo 类似,通过 hi/lo 算法实现的主键生成机制,只是主键历史状态保存在 Sequence 中,适用于支持 Sequence 的数据库,如 Oracle。 4) increment 主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时 候将此值加 1 作为主键。这种方式可能产生的问题是:如果当前有多个实例访问同一个数据库,那么由于各个实例各自维护主键状 态,不同实例可能生成同样的主键,从而造成主键重复异常。因此,如果同一数据库有多个实例访问,此方式必须避免使用。 5) identity 采用数据库提供的主键生成机制。如 DB2、SQL Server、MySQL 中的主键生成机制。 6) sequence 采用数据库提供的 sequence 机制生成主键。如 Oralce 中的 Sequence。 7) native 由 Hibernate 根据底层数据库自行判断采用 identity、hilo、sequence 其中一种作为主键生成方式。 8) uuid.hex 由 Hibernate 基于 128 位唯一值产生算法生成 16 进制数值(编码后以长度 32 的字符串表示)作为主键。 9) uuid.string 与 uuid.hex 类似,只是生成的主键未进行编码(长度 16)。在某些数据库中可能出现问题(如 PostgreSQL)。 10) foreign 使用外部表的字段作为主键。一般而言,利用 uuid.hex 方式生成主键将提供最好的性能和数据库平台适应性。 这 10 中生成 OID 标识符的方法,increment 比较常用,把标识符生成的权力交给 Hibernate 处理.但是当同时多个 Hibernate 应用操作同 一个数据库,甚至同一张表的时候.就推荐使用 identity 依赖底层数据库实现,但是数据库必须支持自动增长,当然针对不同的数据库选 择不同的方法.如果你不能确定你使用的数据库具体支持什么的情况下.可以选择用 native 让 Hibernate 来帮选择 identity,sequence,或 hilo. 另外由于常用的数据库,如 Oracle、DB2、SQLServer、MySql 等,都提供了易用的主键生成机制(Auto-Increase 字段或者 Sequence)。 我们可以在数据库提供的主键生成机制上,采用 generator-class=native 的主键生成方式。 不过值得注意的是,一些数据库提供的主键生成机制在效率上未必最佳,大量并发 insert 数据时可能会引起表之间的互锁。数据库提 供的主键生成机制,往往是通过在一个内部表中保存当前主键状态(如对于自增型主键而言,此内部表中就维护着当前的最大值和 递增量),之后每次插入数据会读取这个最大值,然后加上递增量作为新记录的主键,之后再把这个新的最大值更新回内部表中,这 样,一次 Insert 操作可能导致数据库内部多次表读写操作,同时伴随的还有数据的加锁解锁操作,这对性能产生了较大影响。因此, 对于并发 Insert 要求较高的系统,推荐采用 uuid.hex 作为主键生成机制 92、一般情况下,关系数据模型与对象模型之间有哪些匹配关系(A,B,C) A)表对应类 B)记录对应对象 C)表的字段对应类的属性 D)表之间的参考关系对应类之间的依赖关系 93、以下关于 SessionFactory 的说法哪些正确?(B,C) A)对于每个数据库事务,应该创建一个 SessionFactory 对象 B)一个 SessionFactory 对象对应一个数据库存储源。 C)SessionFactory 是重量级的对象,不应该随意创建。如果系统中只有一个数据库存储源,只需要创建一个。 D)SessionFactory 的 load()方法用于加载持久化对象 94、元素有一个 cascade 属性,如果希望 Hibernate 级联保存集合中的对象,casecade 属性应该取什么值?(单选) (D) A)none B)save C)delete D)save-update 95、以下哪些属于 Session 的方法?(A,B,C,D,F) A)load() B)save() C)delete() D)update() E)open() F)close() 96、Hibernate 工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建 SessionFactory 3.打开 Sesssion 4.创建事务 Transation 5.持久化操作 6.提交事务 7.关闭 Session 8.关闭 SesstionFactory 为什么要用: 1. 对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 2. Hibernate 是一个基于 JDBC 的主流持久化框架,是一个优秀的 ORM 实现。他很大程度的简化 DAO 层的编码工作 3. hibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性。 4. hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂 关系。 97、Hibernate 是如何延迟加载? 1. Hibernate2 延迟加载实现:a)实体对象 b)集合(Collection) 2. Hibernate3 提供了属性的延迟加载功能 当 Hibernate 在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载, 他节省了服务器的内存开销,从而提高了服务器的性能。 98、Hibernate 中怎样实现类之间的关系?(如:一对多、多对多的关系) 类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起, 它们通过配置文件中的 many-to-one、one-to-many、many-to-many、 99、说下 Hibernate 的缓存机制 1. 内部缓存存在 Hibernate 中又叫一级缓存,属于应用事物级缓存 2. 二级缓存: a) 应用及缓存 b) 分布式缓存 条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据 c) 第三方缓存的实现 100、Hibernate 的查询方式 Sql、Criteria,object comptosition Hql: 1、 属性查询 2、 参数查询、命名参数查询 3、 关联查询 4、 分页查询 5、 统计函数 101、如何优化 Hibernate? 1.使用双向一对多关联,不使用单向一对多 2.灵活使用单向一对多关联 3.不用一对一,用多对一取代 4.配置对象缓存,不使用集合缓存 5.一对多集合使用 Bag,多对多集合使用 Set 6. 继承类使用显式多态 7. 表字段要少,表关联不要怕多,有二级缓存撑腰 Struts 部分 102、Struts 工作机制?为什么要使用 Struts? 工作机制: Struts 的工作流程: 在 web 应用启动时就会加载初始化 ActionServlet,ActionServlet 从 struts-config.xml 文件中读取配置信息,把它们存放到各种配置对象 当 ActionServlet 接收到一个客户请求时,将执行如下流程. -(1)检索和用户请求匹配的 ActionMapping 实例,如果不存在,就返回请求路径无效信息; -(2)如果 ActionForm 实例不存在,就创建一个 ActionForm 对象 把客户提交的表单数据保存到 ActionForm 对象中; -(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用 ActionForm 的 validate()方法; -(4)如果 ActionForm 的 validate()方法返回或返回一个不包含 ActionMessage 的 ActuibErrors 对象, 就表示表单验证成功; -(5)ActionServlet 根据 ActionMapping 所包含的映射信息决定将请求转发给哪个 Action 如果相应的 Action 实例不存在,就先创建这个实例,然后调用 Action 的 execute()方法; -(6)Action 的 execute()方法返回一个 ActionForward 对象 ActionServlet 在把客户请求转发给 ActionForward 对象指向的 JSP 组件; -(7)ActionForward 对象指向 JSP 组件生成动态网页,返回给客户; 为什么要用 Struts: JSP、Servlet、JavaBean 技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之 上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts 便应运而生。 103、Struts 的 validate 框架是如何验证的? 在 struts 配置文件中配置具体的错误提示,再在 FormBean 中的 validate()方法具体调用。 104、说下 Struts 的设计模式 MVC 模式: web 应用程序启动时就会加载并初始化 ActionServler。用户提交表单时,一个配置好的 ActionForm 对象被创建,并被填 入表单相应的数据,ActionServler 根据 Struts-config.xml 文件配置好的设置决定是否需要表单验证,如果需要就调用 ActionForm 的 Validate()验证后选择将请求发送到哪个 Action,如果 Action 不存在,ActionServlet 会先创建这个对象,然后调用 Action 的 execute ()方法。Execute()从 ActionForm 对象中获取数据,完成业务逻辑,返回一个 ActionForward 对象,ActionServlet 再把客户请求 转发给 ActionForward 对象指定的 jsp 组件,ActionForward 对象指定的 jsp 生成动态的网页,返回给客户。 Spring 部分 105、spring 工作机制及为什么要用? 1.spring mvc 请所有的请求都提交给 DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的 Controller. 3.DispatcherServlet 请请求提交到目标 Controller 4.Controller 进行业务逻辑处理后,会返回一个 ModelAndView 5.Dispathcher 查询一个或多个 ViewResolver 视图解析器,找到 ModelAndView 对象指定的视图对象 6.视图对象负责渲染返回给客户端。 为什么用: AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务 (比 如 日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。 IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反 过来 的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作 对象构造的。因此是由容器管理协作对象(collaborator)。 Spring 即使一个 AOP 框架,也是一 IOC 容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和 配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。 106、HttpSession session = request.getSession() 与 HttpSession session = request.getSession(true)的区别? getSession(true)的函数原型为::HttpSession session = request.getSession (Boolean create) 如果有与当前的 request 先关联的 HttpSession,那么返回 request 相关联的 HttpSession,如果还没有,那么: 如果 create==true, 那么返回一个新建的 HttpSession, 如果 create==false, 那么返回 null. 107、getParameter 与 getAttribute 的区别? Attribute 是指属性。 Parameter 是指参数,由 URL 传入或由 FORM 提交的内容 108、以下哪一个不是赋值符号? A. += B. <<= C. <<<= D. >>>= A.很明显是赋值符号 B.<<=左移赋值 C.不是 D.>>>= 右移赋值,左边空出的位以 0 填充 109、以下哪个不是 Collection 的子接口? A. List B. Set C. SortedSet D. Map 参考答案:D 110、.BufferedReader 的父类是以下哪个? A. FilterReader B. InputStreamReader C. PipedReader D. Reader 参考答案:D 111、子类A继承父类 B A a = new A(); 则 父类 B 构造函数、父类 B 静态代码块、父类B非静态代码块、子类A构造函数、子类 A 静态代码块、子类A 非静态代码块 执行的先后顺序是? 参考答案:父类B静态代码块->子类A静态代码块->父类B构造函数->父类B非静态代码块->子类A构造函数->子类A非静态代码块 112、div 与 span 区别? 一个用于多行 html 标签元素的显示,span 多用于文本显示 113、html 的框架是什么? html 框架只有 frameset 和 iframe 两个标签可以代表 html 框架 114、alert 怎样换行? \r\n 115、什么情况用 HTML 控件,什么情况用 WEB 控件,并比较两者差别 如果有数据提交到 server 端时用 web control 好。一般为了提高效率能用 html control 在客户端执行,就用 html control。 JavaScript 部分 116、JavaScript 中的对象. JavaScript 中的 Object 是一组数据的 key-value 的集合, 有点类似于 Java 中的有这些数据都是 Object 里的 property. 通常情况下, JavaScript 中建立一个对象用”new”加上 constructor function 来实现. 如 new Date(), new Object()等. var book = new Object(); book.name = "JavaScript is Cool"; book.author = "tom"; book.pages = 514;HashMap, 所 上面例子中的 name 和 page 就是名为 book 的对象中的 property. 我们可以用 delete 来删除 Object 中的 property: “delete book.name;”. 除了 Object, Date 等 buildin 的对象外, 我们可以写自己的 constructor function, 然后使用 new 就可以建立自己的对象. 如上面的 book 可以写成: function Book (name, author, page) { this.name = name; this.author = author; this.page = page; } var abook = new Book("JavaScript is Cool", "tom", 514); 117、function 的用法 在 JavaScript 中, function 是一种数据类型, 所有的function 都是从buildin 的Function object 衍生的对象. 所以在JavaScript 中function 可以作为参数传递, 可以作为 Object 的 property, 也可以当作函数返回值. function 在 JavaScript 中有两种用法, 一种是当作 constructor, 前面加上 new keyword 用来建立对象. 一种是当作 method, 为其他对象调用. 注意 function 和 method 在中文里的意思相当, 在有些语言里也可以通用. 但是在 JavaScript 中, 它们还是有所区别的. function 本身是 是一个对象, 而当作为一个方法他属于一个对象时, 就成为了一个这个对象的 method, 相当于一个对象种的属性. 也就是说 method 是相对于一个对象而言的, function 在某些情况下成为了一个对象的 method. function Book(name, author, page) { this.name = name; this.author = author; this.page = page; this.getReader = Book_getReader; } function Book_getReader() { //.... } 上面的例子种, function Book_getReader()就成为了 Book 的一个名为 getReader 的 method. call()和 apply()是 Function object 的两个方 法, 它们也可以使一个 function 作为另一个对象的 method 来调用用. call()和 apply()都需要参数, 而第一个参数就是调用对象, 也就是 当 function 内部出现 this 时, this 所指的对象. call()和 apply()的区别在于 call()可以传递任意长度参数, 只要第一个参数时调用对象. 而 apply 只接受两个参数, 需要将除调用对象外的所有参数放入一个数组中. 即: function getBooksWithSameAuthor(form, to) { var name = this.author; var books = ... //get books written by name and from year "from" to year "to" return books; } var abook = new Book("JavaScript is Cool", "tom", 514); var books = getBooksWithSameAuthor.call(abook, 1990, 2005); 或 var books = getBooksWithSameAuthor.apply(abook, [1990, 2005]); 当一个 function 不作为一个对象的 method 时, JavaScript 会认为它是属于一个 Globle Object 对象的 method, 这个 Globle Object 在 Browser 中就是 window 类. 所以从这个角度来说, function 和 method 又可以统一起来了. Function object 还有一个非常重要的 property: prototype. 它是一个 predefined 的 prototype object. 当一个 Function 用作对象的 constructor 时, protptype property 将发挥作用,中文翻译叫原型. JavaScript 的新对象就是通过 function 的原型来建立的. 同时我们还可以 利用 prototype 来动态的向对象中添加属性, 如: function Book (name, author, page) { this.name = name; this.author = author; this.page = page; } var abook = new Book("JavaScript is Cool", "tom", 514); Book.prototype.getInfo = getInfo; function getInfo() { return this.name + " written by " + this.author + " with " + this.page + " pages"; } alert(abook.getInfo()); 这里有一个例子, 用 prototype 方法来实现 callback: Function.prototype.andThen=function(g) { var f=this; return function() { f();g(); } }; function Manager() { this.callback=function () {}; // do nothing this.registerCallback=function(callbackFunction) { this.callback=(this.callback).andThen(callbackFunction); } } var manager=new Manager(); manager.registerCallback(sayHi); manager.registerCallback(sayBye); manager.callback(); 118、对象的继承 JavaScript 有多种方式模拟继承. 1. 利用 function: function superClass() { this.bye = superBye; this.hello = superHello; } function subClass() { this.inheritFrom = superClass; this.inheritFrom(); this.bye = subBye; } 或者: function subClass() { superClass.call(this); } 先定义 subClass 的 inheritFrom 方法, 再调用这个方法(方法名称并不重要), 或者直接使用 Function Object 的 call 方法将 this 做参数, 都可以模拟实现从 superClass 的继承. 注意调用 superClass 时的 this 指向. 这个方法就是在执行 subClass 的 cunstructor function 时, 先 执行supperClass的cunstructor function.这个方法的缺点在于子类仅仅是在自己的构造函数中, 将this作为参数调用了父类的构造函数, 将构造函数赋予父类的所有域赋予子类. 所以, 任何父类在构造函数之外(通过 prototype)定义的域, 子类都无法继承. 而且子类的构 造函数一定要在定义自己的域之前调用父类的构造函数, 免得子类的定义被父类覆盖. 使用这种方法子类也尽量不要使用 prototype 来定义子类的域, 因为prototype的定义在子类new的之后就执行, 所以它一定会在调用父类构造函数前, 同样会有被父类的定义覆盖 的危险. 2. 利用 prototype: function superClass() { this.bye = superBye; this.hello = superHello; } function subClass() { this.bye = subBye; } subClass.prototype = new superClass(); subClass.prototype.constructor = superClass; 这里将一个 superClass 的实例设置成 subclass 的原型:protytype, 由于 new superClass 实例一定会调用父类 prototype 定义的所有域, 所 以这种方法避免了上一种方法的一个问题, 父类可以通过 prototype 来描述域. 可以实现从 superClass 的继承. 而这个方法也有缺点, 由于子类的 peototype 已经是父类的实例(Object 实例), 不能再被实例化, 所以 new 子类实例的时候, 父类的所有非基本数据类型(见 JavaScript 数据类型)都将是 reference copy 而非数据 copy. 简单说就是所有的父类域在子类中虽然存在, 但看起来就像 Java 中的 static 域一样在子类间 share.被一个子类改变, 所有子类都会改变. 注意这里的最后一句, 改变了子类 prototype 中的 constructor 属性. 它对子类使用没有影响, 仅仅是为了在调用 instanceOf 方法时它使 得子类实例返回 subClass. 3. Parasitic Inheritance (寄生继承) function superClass() { this.bye = superBye; this.hello = superHello; } function subClass() { this.base = new supperClass(); base.sayBye = subBye; return base; } 这种继承其实是一种扩展, 因为在调用 instanceOf 时, 子类会返回父类名称, 它的好处在于在构造函数继承的基础上解放了父类, 父 类可以使用 prototype 定义自己的域, 但是子类仍然不建议使用 prototype, 以免被父类覆盖. 为了可以使子类的 instanceof 返回正确类 型, 我们可以再改进一下: function subClass() { this.base = new supperClass(); for ( var key in this.base ) { if ( !this[key] ) { this[key] = this.base[key]; } } this.sayBye = subBye; } 将所有的父类域拷贝给子类一份, 不再返回父类, instanceof 子类实例时就可以返回正确类型. 119、this 的用法 通常情况下, this 代表的是前面提到的 Globle Object.也就是 Browser 环境时的 window Object. 当 function 作为某一对象的 method 时, this 代表这个 function 所属的 object. 下面这段代码有格错误, 涉及到 this 的使用: function Employee(a) { this.name = a; } function init(){ John = Employee("Johnson"); alert(John.name); } 在 init()中我们少了一个 new keyword. 于是这个代码就会报错, 因为 Browser 把 Employee 当作是 window obect 的一个 method, 里面 的 this 指的就是 window object. init()应该改为: function init(){ John = new Employee("Johnson"); alert(John.name); } 同时我们也可以将 Employee 的 constructor 函数修改, 防止类似的错误: function Employee(a) { if (!(this instanceof Employee)) return new Employee(a); this.name = a; } 这样,我们即使使用原来的 init()方法, 也不会报错了. 120、Array in JavaScript Array 和 Object 本质上是一样的, 只是 Array 需要由 index 来索引它其中的属性. index 为>=0 的整数. Array 有一系列 buildin 的方法: 1. jion() 将 array 中的所有 element 以 string 的形式连在一起: 1 2 3 var a = [1,2,3]; s = a.join(); // s == "1,2,3" s = a.join(": "); // s == "1: 2: 3" 2. reverse() 将 Array 的 element 顺数颠倒 var a = [1,2,3]; a.reverse(); s = a.join(); // s == "3,2,1" 3. sort() 排序, 默认按字母顺序排序 case sensitive, 可以自定义排序方式. var a = [111,4,33,2]; a.sort(); // a == [111,2,33,4] a.sort(function(a,b) { // a == [2,4,33,111] return a-b; // Returns < 0, 0, or > 0 }); 4. concat()连接多个 Array var a = [1,2,3]; a.concat(4,5); // return [1,2,3,4,5] a.concat([4,5]); // return [1,2,3,4,5] a.concat([4,5], [6,7]) // return [1,2,3,4,5,6,7] a.concat(4,[5,[6,7]]); // return [1,2,3,4,5,6,7] 5. slice() 返回 Array 的切片, 原 Array 不变. var a = [1,2,3,4,5]; a.slice(0,3); // Returns [1,2,3] a.slice(3); // Returns [4,5] a.slice(1,-1); // Returns [2,3,4], -1 means the last index of the array a.slice(-3,-2); // Returns [3], from the third last index to the second last index 6. splice 向一个 Array 中添加或删除 element. 第一个参数表示位置, 第二个参数表示删除长度, 后面任意长的参数表示在 1 删除位置 添加的 elements. var a = [1,2,3,4,5,6,7,8]; a.splice(4); // Returns [5,6,7,8]; a is [1,2,3,4] a.splice(1,2); // Returns [2,3]; a is [1,4] a.splice(1,1); // Returns [4]; a is [1] var a = [1,2,3,4,5]; a.splice(2,0,'a','b'); // Returns []; a is [1,2,'a','b',3,4,5] a.splice(2,2,[1,2],3); // Returns ['a','b']; a is [1,2,[1,2],3,3,4,5] 7. push() and pop() 向 Array 末尾添加或删除 element 8. unshift() and shift() 向 Array 的开头添加或删除 eleme 9.用 js 实现时间控件、模态窗口、非空验证、非法字符验证。 10.用 js 实现主、二级页面刷新、传值以及实现页面跳转 Jsp 部分 121、jsp 有哪些内置对象?作用分别是什么? JSP 共有以下 9 种基本内置组件(可与 ASP 的 6 种内部组件相对应): request 用户端请求,此请求会包含来自 GET/POST 请求的参数 response 网页传回用户端的回应 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的内容 out 用来传送回应的输出 config servlet 的构架部件 page JSP 网页本身 exception 针对错误网页,未捕捉的例外 122、jsp 有哪些动作?作用分别是什么? JSP 共有以下 6 种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个 JavaBean。 jsp:setProperty:设置 JavaBean 的属性。 jsp:getProperty:输出某个 JavaBean 的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记 123、JSP 中动态 INCLUDE 与静态 INCLUDE 的区别? 动态 INCLUDE 用 jsp:include 动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 静态 INCLUDE 用 include 伪码实现,定不会检查所含文件的变化,适用于包含静态页面 <%@ include file="included.htm" %> 124、两种跳转方式分别是什么?有什么区别? 有两种,分别为: 前者页面不会转向 include 所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且 可以带参数.后者完全转向新页面,不会再回来。相当于 go to 语句。 125、如何执行一个线程安全的 JSP? 只需增加如下指令 <%@ page isThreadSafe="false" %> 126、JSP 如何处理 HTML FORM 中的数据? 通过内置的 request 对象即可,如下: <% String item = request.getParameter("item"); int howMany = new Integer(request.getParameter("units")).intValue(); %> 127、在 JSP 如何包含一个静态文件? 静态包含如下:<%@ include file="copyright.html" %> 动态包含如下: 128、在 JSP 中如何使用注释? 主要有四中方法: 1。<%-- 与 --%> 2。// 3。/**与**/ 4。 129、在 JSP 中如何执行浏览重定向? 使用如下方式即可:response.sendRedirect("http://ybwen.home.chinaren.com/index.h tml"); 也能物理地改变 HTTP HEADER 属性,如下: <% response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); String newLocn="/newpath/index.html"; response.setHeader("Location",newLocn); %> 130、如何防止在 JSP 或 SERVLET 中的输出不被 BROWSER 保存在 CACHE 中? 把如下脚本加入到 JSP 文件的开始即可: <% response.setHeader("Cache-Control","no-store"); //HTTP 1.1 response.setHeader("Pragma","no-cache"); //HTTP 1.0 response.setDateHeader ("Expires", 0); //prevents caching at the proxy server %> 131、在 JSP 中如何设置 COOKIE? COOKIE 是作为 HTTP HEADER 的一部分被发送的,如下方法即可设置: <% Cookie mycookie = new Cookie("aName","aValue"); response.addCookie(mycookie); %> 132、在 JSP 中如何删除一个 COOKIE? <% Cookie killMyCookie = new Cookie("mycookie", null); killMyCookie.setMaxAge(0); killMyCookie.setPath("/"); response.addCookie(killMyCookie); %> 133、在一个 JSP 的请求处理中如何停止 JSP 的执行 如下例: <% if (request.getParameter("wen") != null) { // do something } else { return; } %> 134、在 JSP 中如何定义方法 你可以定义方法,但是你不能直接访问 JSP 的内置对象,而是通过参数的方法传递。如下: <%! public String howBadFrom(HttpServletRequest req) { HttpSession ses = req.getSession(); ... return req.getRemoteHost(); } %> <% out.print("in general,lao lee is not baddie "); %> <%= howBadFrom(request) %> 如果 BROWSER 已关闭了 COOKIES,在 JSP 中我如何打开 SESSION 来跟踪 使用 URL 重写即可,如下: hello1.jsp <%@ page session="true" %> <% Integer num = new Integer(100); session.putValue("num",num); String url =response.encodeURL("hello2.jsp"); %> >hello2.jsp hello2.jsp <%@ page session="true" %> <% Integer i= (Integer )session.getValue("num"); out.println("Num value in session is "+i.intValue()); %> 135、在 JSP 中能发送 EMAIL 吗 可以使用 SUN 的专用包:sun.net.smtp 包。如下脚本使用 SmtpClient 类发送 EMAIL。 <%@ page import="sun.net.smtp.SmtpClient, java.io.*" %> <% String from="ybwen@sina.com"; String to="hewenjun@yeah.net, lei@who.com.cn"; try{ SmtpClient client = new SmtpClient("mail.xxxxx.xxx"); client.from(from); client.to(to); PrintStream message = client.startMessage(); message.println("To: " + to); message.println("Subject: Sending email from JSP!"); message.println("This was sent from a JSP page!"); message.println(); message.println("Cool! :-)"); message.println(); message.println("Good Boy"); message.println("Im in genius.com"); message.println(); client.closeServer(); } catch (IOException e){ System.out.println("ERROR SENDING EMAIL:"+e); } %> 136、在 SERVLET 中我能调用一个 JSP 错误页吗 当然没问题,如下展示了如何在一个 SERVLET 控制逻辑单元内调用一个 JSP 错误页面。 protected void sendErrorRedirect(HttpServletRequest request, HttpServletResponse response, String errorPageURL, Throwable e) throws ServletException, IOException { request.setAttribute ("javax.servlet.jsp.jspException", e); getServletConfig().getServletContext(). getRequestDispatcher(errorPageURL).forward(request, response); } public void doPost(HttpServletRequest request,HttpServletResponse response) { try { // do something } catch (Exception ex) { try { sendErrorRedirect(request,response,"/jsp/MyErrorPage.jsp",ex); } catch (Exception e) { e.printStackTrace(); } } } 137、APPLET 和 JSP 如何通讯 可以用 URLConnection 138、JSP 如何与 EJB SessionBean 通讯 下面的代码段作了很好的示范 <%@ page import="javax.naming.*, javax.rmi.PortableRemoteObject, foo.AccountHome, foo.Account" %> <%! //定义一个对 SessionBeanHome 接口实例的全局引用 AccountHome accHome=null; public void jspInit() { //获得 Home 接口实例 InitialContext cntxt = new InitialContext( ); Object ref= cntxt.lookup("java:comp/env/ejb/AccountEJB"); accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class); } %> <% //实例化 SessionBean Account acct = accHome.create(); //调用远程方法 acct.doWhatever(...); // 如此等等 %> 139、当我使用一个结果集时,如何防止字段为"null"的字域显示在我的 HTML 输入文本域中? 可以定义一个简单的函数来达到目的,如下: <%! String blanknull(String s) { return (s == null) ? "" : s; } %> 然后在 JSP 的 FORM 中,可以这样使用 140、如何中 SERVLET 或 JSP 下载一个文件(如:binary,text,executable)? 现提供两个解决方案: A:使用 HTTP, B:在 Servlet 中,通过设置 ContentType 和使用 java.io 包的 Stream 等类可作到.例如: response.setContentType("application/x-msword"); 然后想输出缓冲中写一些东东即可。 141、使用 useBean 标志初始化 BEAN 时如何接受初始化参数 使用如下两标签即可: 142、使用 JSP 如何获得客户浏览器的信息? 使用 request.getHeader(String)即可 143、能象调用子程序一样调用 JSP 吗? 当然可以,用 144、当我重编译我的 JSP 使用的一个类后,为什么 JVM 继续使用我的老 CLASS? 因为没有热替换。 145、<%@include file="abc.jsp"%>与之间的差别? 前一个为静态包含,而后一个为动态包含 146、JSP 的缺点? 1。对 JAVA 程序进行调试没有好东东 2。因大多数的 servlet 引擎不支持 connection pooling 3。Servlet 引擎没有标准 4。JSP 与其它脚本语言的交互 147、JSP 能进行递归调用吗? 当然可以,如对 form 的提交给本页 148、如何实现 JSP 的国际化? 为各种版本提供 resource bundles 属性文件即可 149、在 JSP 中如何写文本文件? 使用 PrintWriter 对象,如: <%@ page import="java.io.*" %> <% String str = "print me"; String nameOfTextFile = "/usr/anil/imp.txt"; try { PrintWriter pw = new PrintWriter(new FileOutputStream(nameOfTextFile)); pw.println(str); pw.close(); } catch(IOException e) { out.println(e.getMessage()); } %> 150、如何在 JSP 中包括绝对路径文件? 使用 URLConnection 即可。 151、在 servlets 和 JSP 之间能共享 session 对象吗? 当然可以, HttpSession session = request.getSession(true); session.putValue("variable","value"); 152、如何设置 cookie 在某一时间后过期? 用 Cookie.setMaxAge(int) 153、如何获得当前的 sessions 数? 可以使用 HttpSessionListeners 来跟踪 154、能设置一些代码在我所有的 JSP 文件之上运行?如果可以,能共享吗? 当然可以,可以为你的 JSP 文件定义一个别名:/jsp/=ybwen.genius.myPreprocessingServle t,而以/jsp/为前缀的文件可以使用 (lightning 案:??????) 155、对一个 JSP 页,如果多个客户端同时请求它,同步可能吗? 当然可能 156、在 jsp:useBean 语法中使用 beanName 有何好处? beanName 使用 Beans.instantiate()初始化 Bean 157、当我使用时,在浏览器的地址栏没有改变? 使用 response.sendRedirect("newURL") 158、如何转换 JSP 0.9 版本的文件到 JSP1.1? 可使用 sed/awk 即可 159、使用 JSP 连接到数据库连接缓冲池的最好方法是什么? 1.使用 JDBC2。0 中带有此服务的 Driver 2.使用提供有此服务的 Application server 3.自己写 160、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么? JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是"类 servlet"。 Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况 是 Java 和 HTML 可以组合成一个扩展名为.jsp 的文件。 JSP 侧重于视图,Servlet 主要用于控制逻辑。 Ajax 部分 161、AJAX 的全称是什么? 介绍一下 AJAX AJAX 的全称是 Asynchronous JavaScript And XML.AJAX 是 2005 年由 Google 发起并流行起来的编程方法, AJAX 不是一个新的编 程语言,但是它是一个使用已有标准的新的编程技术。使用 AJAX 可以创建更好,更快,更用户界面友好的 Web 应用。AJAX 技术 基于 Javascript 和 HTTP Request. 162、Ajax 主要包含了哪些技术? Ajax(Asynchronous JavaScript + XML)的定义 基于 web 标准(standards-based presentation)XHTML+CSS 的表示; 使用 DOM(Document Object Model)进行动态显示及交互; 使用 XML 和 XSLT 进行数据交换及相关操作; 使用 XMLHttpRequest 进行异步数据查询、检索; 使用 JavaScript 将所有的东西绑定在一起。英文参见 Ajax 的提出者 Jesse James Garrett 的原文,原文题目(Ajax: A New Approach to Web Applications)。 类似于 DHTML 或 LAMP,AJAX 不是指一种单一的技术,而是有机地利用了一系列相关的技术。事实上,一些基于 AJAX 的―派生 /合成‖式(derivative/composite)的技术正在出现,如―AFLAX‖。 AJAX的应用使用支持以上技术的web浏览器作为运行平台。这些浏览器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror 及 Safari。但是 Opera 不支持 XSL 格式对象,也不支持 XSLT。 163、主要的 Ajax 框架都有哪些? * Dojo(dojotoolkit.org); * Prototype 和 Scriptaculous (www.prototypejs.org 和 script.aculo.us); * Direct Web Reporting (getahead.org/dwr); * Yahoo! User Interface Library(developer.yahoo.com/yui); * Google Web Toolkit (code.google.com/webtoolkit)。 JQuery 部分 164、介绍一下 XMLHttpRequest 对象 通过 XMLHttpRequest 对象,Web 开发人员可以在页面加载以后进行页面的局部更新。AJAX 开始流行始于 Google 在 2005 年使用 的‖Google Suggest‖。―Google Suggest‖就是使用 XMLHttpRequest 对象来创建动态的 Web 接口:当用户开始输入 google 的搜索框, Javascript 发送用户输入的字符到服务器,然后服务器返回一个建议列表。XMLHttpRequest 对象在 IE5.0+, Safari 1.2, Mozilla 1.0/Firefox, Opera 8+ 和 NetScapt7 开始被支持。 165、AJAX 应用和传统 Web 应用有什么不同? 在传统的 Javascript 编程中,如果想得到服务器端数据库或文件上的信息,或者发送客户端信息到服务器,需要建立一个 HTML form 然后 GET 或者 POST 数据到服务器端。用户需要点击‖Submit‖按钮来发送或者接受数据信息,然后等待服务器响应请求,页面重新 加载。因为服务器每次都会返回一个新的页面, 所以传统的 web 应用有可能很慢而且用户交互不友好。使用 AJAX 技术, 就可以 使 Javascript 通过 XMLHttpRequest 对象直接与服务器进行交互。通过 HTTP Request, 一个 web 页面可以发送一个请求到 web 服务 器并且接受 web 服务器返回的信息(不用重新加载页面),展示给用户的还是通一个页面,用户感觉页面刷新,也看不到到 Javascript 后台进行的发送请求和接受响应。 166、如何用 JQuery 进行表单验证? 可以使用 jQuery 的插件–jQuery-validate 表单验证插件来进行表单验证 例子: $(‖#form‖).validate({ //验证规则 rules:{ author:{ required:true,//必需非空字段 minlength:2 //长度至少两字节 }, email:{ required:true, email:true //此字段为邮件地址 }, url:{ required:false, url:true //此字段为网址 }, content:{ required:true, minlength:4 } }, //错误消息 messages:{ author: { required: ‗用户名必须填写‘, minlength: jQuery.format(‖名称至少{0}两个字节‖) }, email: { required: ‗邮箱必须填写,做为联系方式‘, email: ‗邮箱格式不正确‘ }, content: { required: ‗网址必须填写‘, minlength: jQuery.format(‖名称至少{0}两个字节‖) } }, submitHandler: function(form) { //ajax 提交表单,需要 jQuery.Form 插件 $(form).ajaxSubmit({ dataType:‘json‘, success:function(res){ if(res.success){ $(‘.ajaxsubmit‘).html(‘发表成功!‘).addClass(‘ok‘); $(‘textarea‘).val(‖); $(‘#comments‘).prepend(res.msg); }else $(‘.ajaxsubmit‘).html(res.msg).addClass(‘fail‘); } }); return false; }, errorPlacement:function(error, element) { //放置错误提示消息的 Element error.appendTo(element.parent().find(‘b')); }, errorClass:‘fail‘,//错误消息样式 highlight: function(element, errorClass) { //黄褪显示错误字段,需要 jQuery.Highlight 插件 $(element).highlightFade({color:‘yellow‘,speed:1000,iterator:‘exponential‘}) } }); 167、Prototype 如何实现页面局部定时刷新? 可以使用 Prototype 的 Ajax.PeriodicalUpdater 来实现页面的局部刷新。 比如 如果页面上需要定时刷新的 部分为
那么可以按照如下代码定时刷新这一部份 new Ajax.PeriodicalUpdater(‘refresh‘, ‗/your_url‘, { method: ‗get‘, insertion: Insertion.Top, frequency: 1, decay: 2 }); 其中的两个参数 frequency 表示间隔的秒数,缺省情况下为 2。decay 表示如果返回的内容相同,则将 frequency 的间隔时间加倍,这 里第一次是 1 秒,如果返回内容相同则编程两秒,然后四秒,然后八秒。。。如果每次返回的结果都不一样 那么这个参数就不起作用 168、Prototype 如何为一个 Ajax 添加一个参数? 代码如下: new Ajax.Request(‘/your_url‘, { method: ‗get‘, parameters: {name: ‗rainman‘, limit: 12} }) 169、Ajax 请求总共有多少种 Callback? Ajax 请求总共有八种 Callback onSuccess onFailure onUninitialized onLoading onLoaded onInteractive onComplete onException 170、Javascript 如何发送一个 Ajax 请求? 代码: new Ajax.Request(‘/your_url‘), { method : ‗get‘, onSuccess : function(transport){ var response = transport.responseText || ―no response text‖; alert(‖Success!‖); } , onFailure : function(){ alert(‘failure‘)} }); 171、AJAX 都有哪些有点和缺点? 1、最大的一点是页面无刷新,用户的体验非常好。 2、使用异步方式与服务器通信,具有更加迅速的响应能力。 3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租 用成本。并且减轻服务器的负担,ajax 的原则是―按需取数据‖,可以最大程度的减少冗余请求,和响应对服务器造成的负担。 4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。 ajax 的缺点 1、ajax 不支持浏览器 back 按钮。 2、安全问题 AJAX 暴露了与服务器交互的细节。 3、对搜索引擎的支持比较弱。 4、破坏了程序的异常机制。 5、不容易调试。 172、Ajax 和 javascript 的区别? javascript 是一种在浏览器端执行的脚本语言,Ajax 是一种创建交互式网页应用的开发技术 ,它是利用了一系列相关的技术其中就 包括 javascript。 Javascript 是由网景公司开发的一种脚本语言,它和 sun 公司的 java 语言是没有任何关系的,它们相似的名称只是一种行销策略。 在一般的 web 开发中,javascript 是在浏览器端执行的,我们可以用 javascript 控制浏览器的行为和内容。 Servlet 部分 173、说一说 Servlet 的生命周期? servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。 Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自 动派遣 运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其 destroy 方法。与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每 个请求都产生新的进程,服务完成后就销毁,所以效率上低于 servlet。 174、JAVA SERVLET API 中 forward() 与 redirect()的区别? 前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的 地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要 时,尽量使用 forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源, 则必须使用 sendRedirect()方法。 175、Servlet 的基本架构 public class ServletName extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } 176、什么情况下调用 doGet()和 doPost()? Jsp 页面中的 form 标签里的 method 属性为 get 时调用 doGet(),为 post 时调用 doPost()。 177、servlet 的生命周期 web 容器加载 servlet,生命周期开始。通过调用 servlet 的 init()方法进行 servlet 的初始化。通过调用 service()方法实现,根据请求的 不同调用不同的 do***()方法。结束服务,web 容器调用 servlet 的 destroy()方法。 178、如何现实 servlet 的单线程模式 <%@ page isThreadSafe="false"%> 179、页面间对象传递的方法 request,session,application,cookie 等 180、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么? JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是"类 servlet"。Servlet 和 JSP 最主要 的不同 点在于,Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java 和 HTML 可以组合 成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑 181、四种会话跟踪技术 会话作用域 ServletsJSP 页面描述 page 否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有 任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面 request 是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系) session 是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求 application 是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的 一个全局作用域 182、Request 对象的主要方法 setAttribute(String name,Object):设置名字为 name 的 request 的参数值 getAttribute(String name):返回由 name 指定的属性值 getAttributeNames():返回 request 对象所有属性的名字集合,结果是一个枚举的实例 getCookies():返回客户端的所有 Cookie 对象,结果是一个 Cookie 数组 getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的 Body 的长度 getHeader(String name):获得 HTTP 协议定义的文件头信息 getHeaders(String name):返回指定名字的 request Header 的所有值,结果是一个枚举的实例 getHeaderNames():返回所以 request Header 的名字,结果是一个枚举的实例 getInputStream():返回请求的输入流,用于获得请求中的数据 getMethod():获得客户端向服务器端传送数据的方法 getParameter(String name):获得客户端传送给服务器端的有 name 指定的参数值 getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例 getParameterValues(String name):获得有 name 指定的参数的所有值 getProtocol():获取客户端向服务器端传送数据所依据的协议名称 getQueryString():获得查询字符串 getRequestURI():获取发出请求字符串的客户端地址 getRemoteAddr():获取客户端的 IP 地址 getRemoteHost():获取客户端的名字 getSession([Boolean create]):返回和请求相关 Session getServerName():获取服务器的名字 getServletPath():获取客户端所请求的脚本文件的路径 getServerPort():获取服务器的端口号 removeAttribute(String name):删除请求中的一个属性 183、我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1 等,如何输出一个某种编码的字符 串? Public String translate (String str) { String tempStr = ""; try { tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim(); } catch (Exception e) { System.err.println(e.getMessage()); } return tempStr; } 184、Servlet 执行时一般实现哪几个方法? public void init(ServletConfig config) public ServletConfig getServletConfig() public String getServletInfo() public void service(ServletRequest request,ServletResponse response) public void destroy() 185、getServletContext()和 getServletConfig()的意思 getServletConfig() 在 servlet 初始化时,容器传递进来一个 ServletConfig 对象并保存在 servlet 实例中,该对象允许访问两项内容:初始化参数和 ServletContext 对象,前者通常由容器在文件中指定,允许在运行时向 sevrlet 传递有关调度信息,比如说 getServletConfig().getInitParameter("debug")后者为 servlet 提供有关容器的信息。此方法可以让 servlet 在任何时候获得该对象及配置信 息。 getServletContext() 一个 servlet 可以使用 getServletContext()方法得到 web 应用的 servletContext 即而使用 getServletContext 的一些方法来获得一些值 比如说 getServletContext().getRealPath("/")来获得系统绝对路径 getServletContext().getResource("WEB-INF/config.xml")来获得 xml 文件的内容 186、Hashtable 和 HashMap Hashtable 继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map interface 的一个实现 HashMap 允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许 还有就是,HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。因为 contains 方法容易让人引起误解。 最大的不同是,Hashtable 的方法是 Synchronize 的,而 HashMap 不是,在 多个线程访问 Hashtable 时,不需要自己为它的方法实现同步,而 HashMap 就必须为之提供外同步。 Hashtable 和 HashMap 采用的 hash/rehash 算法都大概一样,所以性能不会有很大的差异。 187、JAVA SERVLET API 中 forward() 与 redirect()的区别? 前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的 地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要 时,尽量使用 forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源, 则必须使用 sendRedirect()方法。 188、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这 里到底是值传递还是引用传递? 是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象 的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。 189、Can a Java Thread be started from Servlet class, and what will be the implications? Ans: Yes, it is possible to write a Thread or start a Thread from Servlet. In fact a Servlet can be started on load of the web application by defining ―load-on-startup‖ tag value as ―1″ in the ―web.xml‖ file. One should not start/create a thread from a Servlet that is to be invoked by browser or Java client application. Reason is that web container has Threads running to delegate every client request to appropriate Servlet instance. If servlet instance starts a thread from every request, then it is like each thread spanning multiple threads. As HTTP is stateless protocol, and after response is sent back to client, job of servlet is over, and web container manages the lifecycle of the servlets, but not responsible for the lifecycle or management of the Threads those Servlets have created. If need is to to some kind of scheduling operation, then it is allows advisable to try for some good Scheduler frameworks available. If servlet instance starts a thread from every request, then it is like each thread spanning multiple threads. 190、What is HTTP Session tracking and why is it important? Ans: HTTP Session tracking is the way Web server knows that the request is not a fresh or new request, and has a session already created in the web context. So when a request reaches web server, it looks for a variable called jsessionid, that should be associated with the request either in form of cookies, or URL rewriting. If your site visitor has blocked all cookies then redirect to another JSP or Servlet, will not be able to carry the same session, and all the data/object reference stored in HttpSession is/are lost. But is this redirect is done by using encodeURL method of HttpServletResponse object, then session id is attached as a part of URL and webserver attaches already created session to the new request. 191、What is session management, and how is it different from session tracking? Ans: HTTP session management is related to the mechanism, by which application data or client state can be passed from one request to another request (As HTTP is stateless). Session Management is obviously comes after session tracking, as without session tracking, client request cannot be hooked onto one and only one session. But if requirement is to just pass reasonably small data/variables, from one request to another, then it can be done, by Hidden form field, and can be transported from browser to server, either by POST or GET as method in HTML FORM tag. 192、Can I use Hidden form field to track session? Ans: No, as Hidden form field sends its value as a request parameter, which is not same as URL rewriting (passing jsessionid as part of URL). 193、How can I pass method as request parameter to be called, instead of default doGet or doPost method of HttpServlet object, on submit of an URL? Ans: By overriding service method of HttpServlet object, and using reflection to invoke the desired method of the servlet that is passed as a request parameter. It is similar to the dispatcher mechanism implemented in Struts framework for dynamic dispatching of action. 194、In a architecture pattern like MVC, it is mandatory that Servlet should be the controller, why not JSP? Ans: As JSP cannot be configured as a default mapping to be called based on a URL pattern in web.xml file. In that case, not all request goes through a JSP controller, and the very purpose of controller is not achieved. As Servlet can be mapped to a particular URL in web.xml like, SampleController /* 195、Why JSP is used as View part of MVC ? Ans: As JSP is easily configurable at runtime and by using Tag library, XSL, and many more scripting language, productivity increases by using JSP instead of Servlet. 196、Can a database connection pool be instantiated in init method of servlet instead of server connection pool? What will be the problem? Ans: It is true that connection pool can be instantiated in init method of Servlet and is available for the web application to use, but generally there can be many web application required to use database connection pool, and multiple web applications do not have access beyond ServletContext.So it is desirable to have external resources defined at server level, not at an application level. If you feel any of the question and/or answer is not correct or incomplete, please write to us, your suggestions and after thorough review, it will be placed on this page. Add your suggestions at below. 综合部分 197、Class.forName 的作用?为什么要用? 调用该访问返回一个以字符串指定类名的类的对象。 198、Jdo 是什么? JDO 是 Java 对象持久化的新的规范,为 java data object 的简称,也是一个用于存取某种数据仓库中的对 象的标准化 API。JDO 提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代 码(如 JDBC API 的使用)。这些繁琐的例行工作已经转移到 JDO 产品提供商身上,使开发人员解脱出 来,从而集中时间和精力在业务逻辑上。另外,JDO 很灵活,因为它可以在任何数据底层上运行。JDBC 只是面向关系数据库(RDBMS)JDO 更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、 XML 以及对象数据库(ODBMS)等等,使得应用可移植性更强。 199、在 ORACLE 大数据量下的分页解决方法。一般用截取 ID 方法,还有是三层嵌套方法。 一种分页方法 <% int i=1; int numPages=14; String pages = request.getParameter("page") ; int currentPage = 1; currentPage=(pages==null)?(1):{Integer.parseInt(pages)} sql = "select count(*) from tables"; ResultSet rs = DBLink.executeQuery(sql) ; while(rs.next()) i = rs.getInt(1) ; int intPageCount=1; intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1); int nextPage ; int upPage; nextPage = currentPage+1; if (nextPage>=intPageCount) nextPage=intPageCount; upPage = currentPage-1; if (upPage<=1) upPage=1; rs.close(); sql="select * from tables"; rs=DBLink.executeQuery(sql); i=0; while((i //输出内容 //输出翻页连接 合计:<%=currentPage%>/<%=intPageCount%>第一页上一页 <% for(int j=1;j<=intPageCount;j++){ if(currentPage!=j){ %> [<%=j%>] <% }else{ out.println(j); } } %> 下一页最 后页 200、xml 有哪些解析技术?区别是什么? 有 DOM,SAX,STAX 等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由 DOM 的树结构所造成的,这种结构占用的内 存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解 析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到 像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入 处理代码来处理XML文件,适合对XML的顺序访问 STAX:Streaming API for XML (StAX) 201、你在项目中用到了 xml 技术的哪些方面?如何实现的? 用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后 将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进 行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。 202、用 jdom 解析 xml 文件时如何解决中文问题?如何解析? 看如下代码,用编码方式加以解决 package test; import java.io.*; public class DOMTest { private String inFile = "c:\people.xml"; private String outFile = "c:\people.xml"; public static void main(String args[]) { new DOMTest(); } public DOMTest() { try { javax.xml.parsers.DocumentBuilder builder = javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder(); org.w3c.dom.Document doc = builder.newDocument(); org.w3c.dom.Element root = doc.createElement("老师"); org.w3c.dom.Element wang = doc.createElement("王"); org.w3c.dom.Element liu = doc.createElement("刘"); wang.appendChild(doc.createTextNode("我是王老师")); root.appendChild(wang); doc.appendChild(root); javax.xml.transform.Transformer transformer = javax.xml.transform.TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312"); transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes"); transformer.transform(new javax.xml.transform.dom.DOMSource(doc), new javax.xml.transform.stream.StreamResult(outFile)); } catch (Exception e) { System.out.println (e.getMessage()); } } } 203、编程用 JAVA 解析 XML 的方式. 用SAX方式解析XML,XML文件如下: 王小明 信息学院 6258113 男,1955年生,博士,95年调入海南大学 事件回调类SAXHandler.java import java.io.*; import java.util.Hashtable; import org.xml.sax.*; public class SAXHandler extends HandlerBase { private Hashtable table = new Hashtable(); private String currentElement = null; private String currentValue = null; public void setTable(Hashtable table) { this.table = table; } public Hashtable getTable() { return table; } public void startElement(String tag, AttributeList attrs) throws SAXException { currentElement = tag; } public void characters(char[] ch, int start, int length) throws SAXException { currentValue = new String(ch, start, length); } public void endElement(String name) throws SAXException { if (currentElement.equals(name)) table.put(currentElement, currentValue); } } JSP内容显示源码,SaxXml.jsp: 剖析XML文件people.xml <%@ page errorPage="ErrPage.jsp" contentType="text/html;charset=GB2312" %> <%@ page import="java.io.*" %> <%@ page import="java.util.Hashtable" %> <%@ page import="org.w3c.dom.*" %> <%@ page import="org.xml.sax.*" %> <%@ page import="javax.xml.parsers.SAXParserFactory" %> <%@ page import="javax.xml.parsers.SAXParser" %> <%@ page import="SAXHandler" %> <% File file = new File("c:\people.xml"); FileReader reader = new FileReader(file); Parser parser; SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); SAXHandler handler = new SAXHandler(); sp.parse(new InputSource(reader), handler); Hashtable hashTable = handler.getTable(); out.println(""); out.println("" + ""); out.println("" + ""); out.println("" + ""); out.println("" + ""); out.println("
教师信息表
姓名" + (String)hashTable.get(new String("name")) + "
学院" + (String)hashTable.get(new String("college"))+"
电话" + (String)hashTable.get(new String("telephone")) + "
备注" + (String)hashTable.get(new String("notes")) + "
"); %> 204、EJB2.0 有哪些内容?分别用在什么场合? EJB2.0 和 EJB1.1 的区别? 规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理 员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与 数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS..... 205、EJB 与 JAVA BEAN 的区别? Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个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这样的容器中,EJB客户从不直接访 问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客 户通过容器来访问真正的EJB组件。 206、EJB 的基本架构 一个EJB包括三个部分: Remote Interface 接口的代码 package Beans; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Add extends EJBObject { //some method declare } Home Interface 接口的代码 package Beans; import java.rmi.RemoteException; import jaax.ejb.CreateException; import javax.ejb.EJBHome; public interface AddHome extends EJBHome { //some method declare } EJB类的代码 package Beans; import java.rmi.RemoteException; import javax.ejb.SessionBean; import javx.ejb.SessionContext; public class AddBean Implements SessionBean { //some method declare } 207、MVC 的各个部分都有那些技术来实现?如何实现? MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组 件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般 是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可 以进行交互和重用。 208、J2EE 是什么? Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用 模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件 又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组 件,Business层和组件,企业信息系统(EIS)层。 209、WEB SERVICE 名词解释。JSWDL 开发包的介绍。JAXP、JAXM 的解释。SOAP、UDDI,WSDL 解释。 Web Service描述语言WSDL SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。 UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息 注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够 发现的访问协议的实现标准。 210、STRUTS 的应用(如 STRUTS 架构) Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。 采 用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能: 一.包含一个controller servlet,能将用户的请求发送到相应的Action对象。 二.JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。 三.提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示 和消息。 211、开发中都用到了那些设计模式?用在什么场合? 每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过 这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模 式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。 212、UML 方面 标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图, 213、如何校验数字型? var re=/^d{1,8}$|.d{1,2}$/; var str=document.form1.all(i).value; var r=str.match(re); if (r==null) { sign=-4; break; } else{ document.form1.all(i).value=parseFloat(str); } 214、CORBA 是什么?用途是什么? CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理 组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定 (binding:也译为联编)和允许应用程序间互操作的协议。 其目的为: 用不同的程序设计语言书写 在不同的进程中运行为不同的操作系统开发 215、写一个方法,实现字符串的反转,如:输入 abc,输出 cba public static String reverse(String s){ int length=s.length(); StringBuffer result=new StringBuffer(length); for(int i=length-1;i>=0;i--) result.append(s.charAt(i)); return result.toString(); } 216、数据类型之间的转换 如何将数值型字符转换为数字(Integer,Double) 如何将数字转换为字符 如何去小数点前两位,并四舍五入。 217、如何取得年月日,小时分秒 Date dat=new Date(); dat.getYear();dat.getMonth();dat.getDay();dat.getHours();... 218、如何取得从1970年到现在的毫秒数 long now=dat.getTime(); 219、如何格式化日期 DateFormate df=DateFormate.getInstance(); df.Format(dat); 220、文件和目录(I/O)操作 如何列出某个目录下的所有文件 如何列出某个目录下的所有子目录 判断一个文件或目录是否存在 如何读写文件 相关名词解释 221、WEB容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器 中的环境变量接口交互,不必关注其它系统问题。主要有WEB服务器来实现。例如: TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。 222、EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规 范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管 理。 223、RMI/IIOP:远程方法调用/internet对象请求中介协议,他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个 程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行 通信。RMI是JAVA特有的。 224、JNDI:JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满 足快速查找和定位分布式应用程序的功能。 225、JMS:JAVA 消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。 226、JAVAMAIL:JAVA 邮件服务。提供邮件的存储、传输功能。他是 JAVA 编程中实现邮件功能的核心。相当 MS 中的 EXCHANGE 开发包。 227、JTA:JAVA 事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。 228、JAF:JAVA 安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。 229、EAI:企业应用集成。是一种概念,从而牵涉到好多技术。J2EE 技术是一种很好的集成实现。 230、J2EE 的优越性 1、 基于 JAVA 技术,平台无关性表现突出 2、 开放的标准,许多大型公司已经实现了对该规范支持的应用服务器。如 BEA ,IBM,ORACLE 等。 3、 提供相当专业的通用软件服务。 4、 提供了一个优秀的企业级应用程序框架,对快速高质量开发打下基础 231、Java 语言的 11 个关键特性. (1)Easy:Java 的语法比 C++的相对简单,另一个方面就是 Java 能使软件在很小的机器上运行,基础解释其和 类库的支持的大小约为 40kb,增加基本的标准库和线程支持的内存需要增加 125kb. (2)分布式:Java 带有很强大的 TCP/IP 协议族的例程库,Java 应用程序能够通过 URL 来穿过网络来访问远程对 象,由于 servlet 机制的出现,使 Java 编程非常的高效,现在许多的大的 web server 都支持 servlet. (3)OO:面向对象设计是把重点放在对象及对象的接口上的一个编程技术.其面向对象和 C++有很多不同,在 与多重继承的处理及 Java 的原类模型. (4)健壮特性:Java 采取了一个安全指针模型,能减小重写内存和数据崩溃的可能性。 (5)安全:Java 用来设计网路和分布系统,这带来了新的安全问题,Java 可以用来构建防病毒和防攻击的 System.事实证明 Java 在防毒这一方面做的比较好. (6)中立体系结构:Java 编译其生成体系结构中立的目标文件格式可以在很多处理器上执行,编译器产生的指 令字节码(Javabytecode)实现此特性,此字节码可以在任何机器上解释执行. (7)可移植性:Java 中对基本数据结构类型的大小和算法都有严格的规定所以可移植性很好. (8)多线程:Java 处理多线程的过程很简单,Java 把多线程实现交给底下操作系统或线程程序完成.所以多线程 是 Java 作为服务器端开发语言的流行原因之一 (9)Applet 和 servlet:能够在网页上执行的程序叫 Applet,需要支持 Java 的浏览器很多,而 applet 支持动态的网 页,这是很多其他语言所不能做到的. 232、说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别。 Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动派遣运 行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其 destroy 方法。 与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可以服务于 多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率 上低于 servlet。 233、说出在 JSP 页面里是怎么分页的? 页面需要保存以下参数: 总行数:根据 sql 语句得到总行数 每页显示行数:设定值 当前页数:请求参数 页面根据当前页数和每页行数计算出当前页第一行行数,定位结果集到此行,对结果集取出每页显示行数 的行即可。 234、存储过程和函数的区别 存储过程是用户定义的一系列 sql 语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义 的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。 235、事务是什么? 事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、 一致性、隔离性和持久性)属性,只有这样才能成为一个事务: 原子性 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。 一致性 事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修 改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是 正确的。 隔离性 由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么 是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。 这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事 务执行的状态相同。 持久性 事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。 236、游标的作用?如何知道游标已经到了最后? 游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS 可以判断是否到了最后,通常此变量 不等于 0 表示出错或到了最后。 237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取 事件之前和新的字段值。 语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。 238、EJB 容器提供的服务 主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。 239、EJB 的角色和三个对象 EJB 角色主要包括 Bean 开发者 应用组装者 部署者 系统管理员 EJB 容器提供者 EJB 服务器提供者 三个对象是 Remote(Local)接口、Home(LocalHome)接口,Bean 类 240、EJB 的几种类型 会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean 会话 Bean 又可分为有状态(Stateful)和无状态(Stateless)两种 实体 Bean 可分为 Bean 管理的持续性(BMP)和容器管理的持续性(CMP)两种 241、bean 实例的生命周期 对于 Stateless Session Bean、Entity Bean、Message Driven Bean 一般存在缓冲池管理,而对于 Entity Bean 和 Statefull Session Bean 存在 Cache 管理,通常包含创建实例,设置上下文、创建 EJB Object (create)、业务方法调用、remove 等过程,对于存在缓冲池管理的 Bean,在 create 之后实例并不从内存 清除,而是采用缓冲池调度机制不断重用实例,而对于存在 Cache 管理的 Bean 则通过激活和去激活机制保 持 Bean 的状态并限制内存中实例数量。 242、激活机制 以 Statefull Session Bean 为例:其 Cache 大小决定了内存中可以同时存在的 Bean 实例的数量,根据 MRU 或 NRU 算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个 EJB 实例业务方法时,如 果对应 EJB Object 发现自己没有绑定对应的 Bean 实例则从其去激活 Bean 存储中(通过序列化机制存储实 例)回复(激活)此实例。状态变迁前会调用对应的 ejbActive 和 ejbPassivate 方法。 243、remote 接口和 home 接口主要作用 remote 接口定义了业务方法,用于 EJB 客户端调用业务方法 home 接口是 EJB 工厂用于创建和移除查找 EJB 实例 244、客服端调用 EJB 对象的几个基本步骤 一、 设置 JNDI 服务工厂以及 JNDI 服务地址系统属性 二、 查找 Home 接口 三、 从 Home 接口调用 Create 方法创建 Remote 接口 四、 通过 Remote 接口调用其业务方法 245、 如何给 weblogic 指定大小的内存? 在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为 32M,最大 200M 246、如何设定的 weblogic 的热启动模式(开发模式)与产品发布模式? 可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者 commenv文件,增加set PRODUCTION_MODE=true。 247、如何启动时不需输入用户名与密码? 修改服务启动文件,增加 WLS_USER和WLS_PW项。也可以在boot.properties文件中增加加密过的用户 名和密码. 248、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配 置后,实际保存在什么文件中? 保存在此Domain的config.xml文件中,它是服务器的核心配置文件。 249、说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp放入何目录下,然的在浏览 器上就可打入http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其中用到了一个自己写的 javaBean该如何办? Domain目录\服务器目录\applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用, 应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的 WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。 250、如何查看在 weblogic 中已经发布的 EJB? 可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB 251、如何在 weblogic 中进行 ssl 配置与客户端的认证配置或说说 j2ee(标准)进行 ssl 的配置 缺省安装中使用DemoIdentity.jks和DemoTrust.jks KeyStore实现SSL,需要配置服务器使用Enable SSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创建identity和trust keystore,装 载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。 252、在 weblogic 中发布 ejb 需涉及到哪些配置文件 不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP实体 Bean一般还需要weblogic-cmp-rdbms-jar.xml 253、EJB 需直接实现它的业务接口或 Home 接口吗,请简述理由. 远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作 为对应接口类型的实例被使用。 254、说说在 weblogic 中开发消息 Bean 时的 persistent 与 non-persisten 的差别 persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消 息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃。 255、说说你所熟悉或听说过的 j2ee 中的几种常用模式?及对设计模式的一些看法 Session Facade Pattern:使用SessionBean访问EntityBean Message Facade Pattern:实现异步调用 EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问 Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性 Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性 Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性 EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越 复杂,项目队伍越庞大则越能体现良好设计的重要性 256、现在输入n个数字,以逗号,分开; 然后可选择升或者降序排序; 按提交键就在另一页面显示 按什么 排序,结果为, , 提供 reset public static String[] splitStringByComma(String source){ if(source==null||source.trim().equals("")) return null; StringTokenizer commaToker = new StringTokenizer(source,","); String[] result = new String[commaToker.countTokens()]; int i=0; while(commaToker.hasMoreTokens()){ result[i] = commaToker.nextToken(); i++; } return result; } 循环遍历String数组 Integer.parseInt(String s)变成int类型 组成int数组 Arrays.sort(int[] a), a数组升序 降序可以从尾部开始输出 257、金额转换,阿拉伯数字的金额转换成中国传统的形式如: (¥1011)->(一千零一拾一元整)输出。 258、如何配置spring+struts? 在struts-config.xml加入一个插件,通过它加载applicationContext.xml 在struts-config.xml修改action-mapping标记,具体action交给了DelegateActionProxy 通过DelegateActionProxy进入一spring的环境。 在spring的applicationContext.xml加入 259、Spring和Struts的区别? strusts:是一种基于MVC模式的一个web层的处理。 Spring:提供了通用的服务,ioc/di aop,关心的不仅仅web层,应当j2ee整体的一个服务,可以很容易融合不同的技术struts hibernate ibatis ejb remote springJDBC springMVC 260、如何用Struts实现国际化? 国际化:不用修改代码,就适用于不同的语言国家 本地化:如果要适应一个国家,要修改源代码 实现过程: 在struts-config.xml中用如下标签说明资源文件名,注意其只是文件名,没有语言_国家 在资源文件对应的目录struts中加入适应不同语言、国家的properties文件 ApplicationResources_zh_CN.properties 中国 ApplicationResources_en_US.properties us 如果不是英语要转码 native2ascii -encoding gb2312 源 ApplicationResources_zh_CN.properties 在jsp页面中用 取出信息 261、如何实现struts的validator框架? 手动: public class myForm extends ActionForm  { public ActionErrors validate() { actionErrors.add(ActionErrors.GLOBAL_MESSAGE,new ActionMessage(‖properties中的键名‖)); } }  struts-config.xml中修改action的标签validate=true input=‖错误页面‖ 如果validate方法中的ActionErrors不为空且size>0时 会回到input页面。 自动 public class myForm extends ValidateForm { 不能覆盖validate方法。 //public void validate() //{  //} }  在struts-config.xml文件中加入插件  修改validation.xml中的内容 errors.required={0} is required. errors.minlength={0} can not be less than {1} characters. 
minlength6
struts-config.xml中修改action的标签validate=true input=‖/错误页面‖ 262、如何在struts中配置数据源,在什么文件?用什么标签?如何取出DataSource? Struts-config.xml DataSource ds=(DataSource)this.getServlet().getServletContext().getAttribute(‖data‖); Connection con=ds.getConnection(); 263、Struts框架如何取得消息资源文件中的信息? 消息资源文件是一些简单的.properties文件,这些文件包含有可以被struts项目使用的消息信息,消息资源文件可以以 标签的形式添加到struts-config.xml文件,例如 264、Struts中如何基于validation.xml来启用客户端验证? 可以使用标签来进行基于validation.xml的客户端验证。 例如代码会按照validation.xml中的定义为logonForm生成客户端javascript代码。 265、struts Action 是不是线程安全的?如果不是,有什么方式可以保证 Action 的线程安全?如果是,说明原因 Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作 的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。 Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象, 并且不会导致性能和垃圾回收问题) 266、请你谈谈 SSH 整合 SSH: Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts: Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。 在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller: ActionServlet,struts-config.xml,Action) Hibernate: Hibernate是一个持久层框架,它只负责与关系数据库的操作。 Spring: Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。 267、ActionForm bean 的作用 ActionServlet使用ActionForm bean来保存请求的参数,这些bean的属性名称与HTTP请求参数的名称相对应,控制器将请求参数传递 到ActionForm bean的实例,然后将这个实例传送到Action类。 典型的ActionFrom bean只有属性的设置与读取方法(getXXX),而没有实现事务逻辑的方法。只有简单的输入检查逻辑,使用的目的 是为了存储用户在相关表单中输入的最新数据,以便可以将同一网页进行再生,同时提供一组错误信息,这样就可以让用户修改不 正确的输入数据。而真正对数据有效性进行检查的是ACTION类或适当的事务逻辑bean。 268、Spring 如何创建一个数据连接池 ${db.driver} ${db.url} ${db.username} ${db.password} 269、Spring 如何配置一个 bean 来从 JNDI 得到 DataSource java:comp/env/jdbc/myDatasource 270、Bean 的销毁 1、使用配置文件中的 destory-method 属性 与初始化属性 init-methods类似,在Bean的类中实现一个撤销Bean的方法,然后在配置文件中通过 destory-method指定,那么当bean 销毁时,Spring将自动调用指定的销毁方法。 2、实现 org.springframwork.bean.factory.DisposebleBean接口 如果实现了DisposebleBean接口,那么Spring将自动调用bean中的Destory方法进行销毁,所以,Bean中必须提供Destory方法。 271、Spring 如何获取 Bean 通过xml配置文件 bean配置在xml里面,spring提供多种方式读取配置文件得到ApplicationContext. 第一种方式:FileSystemXmlApplicationContext 通过程序在初始化的时候,导入Bean配置文件,然后得到Bean实例: ApplicationContext ac = new FileSystemXmlApplicationContext(‖applicationContext.xml‖) ac.getBean(‖beanName‖); 第二种方式:WebApplicationContextUtil 在B/S系统中,通常在web.xml初始化bean的配置文件,然后由WebAppliCationContextUtil得到ApplicationContext.例如: ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc); ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc); 其中 servletContext sc 可以具体 换成 servlet.getServletContext()或者 this.getServletContext() 或者 request.getSession().getServletContext(); 另外,由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出WebApplicationContext 对象: WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); 272、Spring 和 Struts 的区别? strusts:是一种基于MVC模式的一个web层的处理。 Spring:提供了通用的服务,ioc/di aop,关心的不仅仅web层,应当j2ee整体的一个服务,可以很容易融合不同的技术struts hibernate ibatis ejb remote springJDBC springMVC 273、什么是aop,aop的作用是什么? Oop:纵向的业务 Aop:oop的一个横向的服务,是对oop进一步的补充,提供安全、事务、日志等的集中式处理,相关的装备before、around、after exception 274、aop中的关键名词有些那些,相互关系是什么? 拦截器: 代理 装备(advice) 目标对象 关切点:条件 连接点:方法、属性 275、依赖注入的方式有几种,各是什么? Setter Interface constructor 276、spring中的核心类有那些,各有什么作用? BeanFactory:产生一个新的实例,可以实现单例模式 BeanWrapper:提供统一的get及set方法 ApplicationContext:提供框架的实现,包括BeanFactory的所有功能 277、ApplicationContext的作用 beanFactory 国际化(getMesage) 资源管理:可以直接读取一个文件的内容(getResource) 加入web框架中(加入一个servlet或监听器) 事件处理 278、如何实现资源管理 使用 applicationContext.getResource(“classpath:文件名”):在src根目录下,在类路径下 applicationContext.getResource(“classpath:/chap01/文件名”): 以src根目录下的基准往下走。 applicationContext.getResource(“file:c:/a.properties”):在系统文件目录下。 279、如何实现加入 web 框架中 在web.xml中加入如下同容,在启动web服务器时加载/WEB-INF/applicationContext.xml中的内容。 context org.springframework.web.context.ContextLoaderServlet 1 通过如下类得到ApplicationContext实例 WebApplicationContextUtils.getWebApplicationContext 280、如何实现事件处理 事件 Extends ApplicationEvent 监听器 Implements ApplicationListener 事件源 Implements ApplicationContextAware 在applicationContext.xml中配置事件源、监听器 先得到事件源,调用事件源的方法,通知监听器。 281、spring 的 ioc 及 di 代表什么意思? Ioc:程序在运行过程中,根据配置文件动态加载所依赖的配置类 282、如何在 spring 中实现国际化? 在 applicationContext.xml 加载一个 bean message 在 src 目录下建多个 properties 文件对于非英文的要用 native2ascii -encoding gb2312 源 目转化文件相关内容 其命名格式是 message_语言_国家。 页面中的中显示提示信息,键名取键值。 当给定国家,系统会自动加载对应的国家的 properties 信息。 通过 applictionContext.getMessage(“键名”,”参数”,”区域”)取出相关的信息。 283、spring 的配置的主要标签是什么?有什么作用? 284、spring 与 ejb2.0 的事务管理比较的优缺点? 测试: Spring:pojo Ejb:二个接口一个类,一堆配置文件 事务类型 Spring:jdbc jta hibernate Ejb:jta 成本 Spring:普通容器(tomcat jboss) Ejb:weblogic jboss 开发的周期: Spring 远比 ejb 快. 285、spring 的 jdbc 与传统的 jdbc 有什么区别,其核心类有那些? Spring 的 jdbc:节省代码,不管连接(Connection),不管事务、不管异常、不管关闭(con.close() ps.close ) JdbcTemplate(dataSource):增、删、改、查 TransactionTemplate(transactionManager):进行事务处理 286、在 spring 中有几种事务管理,分别是什么? 代码管理的事务处理 TransactonTemplate 的 execute 方法中的内部类 TransactionCallback 中的 doInTransaction 方法中使用。 public void make() { TransactionTemplate jtm=new TransactionTemplate(this.getTransactionManager()); jtm.execute(new myClass1()); } public class myClass1 implements TransactionCallback { public Object doInTransaction(TransactionStatus trans) { JdbcTemplate jdbc=new JdbcTemplate(dataSource); jdbc.execute("insert into customer(customerName) values('b')"); jdbc.execute("insert into customer(customerName) values('b')"); return null; } } 容器管理的事务处理 287、在 spring 中如何配代码的事务管理? Datasouce transactionManager userDao 要注入 Datasouce transactionManager 通过如下类实现 TransactionTemplate JdbcTemplate 288、在 spring 中如何配容器的事务管理,相关的类有那些? Datasouce transactionManager userDao 要注入 Datasouce Proxy 代理 Target:userDao:代理对象(目标对象) transactionAttributes(那些方法需要事务处理) transactionManager(事务处理服务) 289、如果 spring 与 hibernate 结合在一起可以不需要 hibernate.cfg.xml 文件是否正确? 不需要 290、spring+hibernate 的配置文件中的主要类有那些?如何配置? 在 myeclipse 中先加入 spring 环境再加入 hibernate 环境。 如果 spring 与 hibernate 结合在一起可以不需要 hibernate.cfg.xml 文件是否正确? spring+hibernate 的配置文件中的主要类有那些?如何配置? dataSource sessionFactory:hibernate.cfg.xml transactionManager userDao (extends HibernateDaoSupport) sessionFactory facade proxy sessionFactory transactionManager facade 291、spring+hibernate 的代码实现中,对于实现类一定继承于一个类是那一个,它有什么作用 extends HibernateDaoSupport,可以节省代码。 292、如何配置 spring+struts? 在 struts-config.xml 加入一个插件,通过它加载 applicationContext.xml 在 struts-config.xml 修改 action-mapping 标记,具体 action 交给了 DelegateActionProxy 通过 DelegateActionProxy 进入一 spring 的环境。 在 spring 的 applicationContext.xml 加入 293、如何在 web 环境中配置 applicationContext.xml 文件? org.springframework.web.context.ContextLoaderListener 或: context org.springframework.web.context.ContextLoaderServlet 1 通过如下方法取出 applicationContext 实例: ApplicationContext ac=WebApplicationContextUtils.getWebApplicationContext(this.getServletContext); 294、BS 与 CS 的联系与区别 C/S 是 Client/Server 的缩写。服务器通常采用高性能的 PC、工作站或小型机,并采用大型数据库系统,如 Oracle、 Sybase、Informix 或 SQL Server。客户端需要安装专用的客户端软件。B/S 是 Brower/Server 的缩写,客户机上只要安装 一个浏览器(Browser),如 Netscape Navigator 或 Internet Explorer,服务器安装 Oracle、Sybase、Informix 或 SQL Server 等数据库。在这种结构下,用户界面完全通过 WWW 浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端 实现。浏览器通过 web Server 同数据库进行数据交互。 C/S 与 B/S 区别: 1.硬件环境不同: C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比 C/S 更强的适 应范围, 一般只要有****作系统和浏览器就行 2.对安全要求不同 C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用 C/S 结构适宜. 可以通 过 B/S 发布部分可公开信息. B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。 3.对程序架构不同 C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比 C/S 有更高的要求 B/S 结构的程序架构 是发展的趋势, 从 MS 的.Net 系列的 BizTalk 2000 Exchange 2000 等, 全面支持网络的构件搭建的系统. SUN 和 IBM 推的 JavaBean 构件技术等,使 B/S 更加成熟. 4.软件重用不同 C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在 B/S 要求下的构件的重用性好. B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石 头桌子 5.系统维护不同 C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统 B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实 现升级. 6.处理问题不同 C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与****作系统相关. 应__________该都是相同的系统 B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是 C/S 无法作到的. 与****作系统平台关系最小. 7.用户接口不同 C/S 多是建立的 Window 平台上,表现方法有限,对程序员普遍要求较高 B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本. 8.信息流不同 C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低 B/S 信息流向可变化, B-B B-C B-G 等信息、流向的变化, 更像交易中心。 295、Servlet 的生命周期 web 容器加载 Servlet,生命周期开始。通过调用 Servlet 的 init()方法进行 Servlet 的初始化。通过调用 service() 方法实现,根据请求的不同调用不同的 do***()方法。结束服务,web 容器调用 Servlet 的 destroy()方法。 296、如何现实 Servlet 的单线程模式 <%@ page isThreadSafe="false"%> 297、Servlet 执行时一般实现哪几个方法? public void init(ServletConfig config) public ServletConfig getServletConfig() public String getServletInfo() public void service(ServletRequest request,ServletResponse response) public void destroy() 298、j2ee 常用的设计模式?说明工厂模式。 Java 中的 23 种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibility(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例, 通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的****作。首先需要 定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同 的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 299、应用服务器与 WEB SERVER 的区别? 应用服务器:Weblogic、Tomcat、Jboss WEB SERVER:IIS、 Apache 300、应用服务器有那些? BEA WebLogic Server,IBM WebSphere Application Server,Oracle9i Application Server,jBoss,Tomcat 301、说出数据连接池的工作机制是什么? J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动 程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的 数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。 302、页面间对象传递的方法 request,session,application,cookie 等 303、四种会话跟踪技术 会话作用域 ServletsJSP 页面描述 page 否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java Servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 Servlet 又包括被编译成 Servlet 的 JSP 页面。request 是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)。session 是是代表与用于某个 Web 客户机的一个用户体验相关的 对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求。application 是是代表与整个 Web 应用程序相关的对象和 属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。 304、J2EE 是技术还是平台还是框架? J2EE 本身是一个标准,一个为企业分布式应用的开发提供的标准平台。J2EE 也是一个框架,包括 JDBC、JNDI、RMI、 JMS、EJB、JTA 等技术。 305、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程 写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法, 并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 306、启动一个线程是用 run()还是 start()? 启动一个线程是调用 start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由 JVM 调度并执行。 这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 307、线程的基本概念、线程的基本状态以及状态之间的关系 线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。 Java 中的线程有四种状态分别是:运行、就绪、挂起、结束。 308、java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和 suspend()方法为何不推荐使 用? 有两种实现方法,分别是继承Thread类与实现Runnable接口 用 synchronized关键字修饰同步方法 反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程 能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候, 目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程 恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该 使用suspend(),而应在自己的Thread 类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用 wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。 309、JSP 中动态 INCLUDE 与静态 INCLUDE 的区别? 动态INCLUDE 用jsp:include动作实现 它总是会检查所含文 件中的变化,适合用于包含动态页面,并且可以带参数。静态INCLUDE 用include 伪码实现,定不会检查所含文件的变化, 适用于包含静态页面<%@ include file="included.htm" %> 310、JSP 的常用指令 <%@page language="java" contenType="text/html;charset=gb2312" session="true" buffer="64kb" autoFlush="true" isThreadSafe="true" info="text" errorPage="error.jsp" isErrorPage="true" isELIgnored="true" pageEncoding="gb2312" import="java.sql.*"%> isErrorPage(是否能使用Exception对象), isELIgnored(是否忽略表达式) <%@include file="filename"%> <%@taglib prefix="c"uri="http://......"%> 311、什么情况下调用 doGet()和 doPost()? Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。 312、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么? JSP 是Servlet 技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。 Servlet和JSP最主要的不同点在于,Servlet 的应用逻辑是在Java 文件中,并且完全从表示层中的HTML里分离开来。而 JSP的情况是Java 和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。 313、Request 对象的主要方法: setAttribute(String name,Object):设置名字为name 的request的参数值 getAttribute(String name):返回由name指定的属性值 getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例 getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组 getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的Body的长度 getHeader(String name):获得HTTP协议定义的文件头信息 getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例 getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例 getInputStream():返回请求的输入流,用于获得请求中的数据 getMethod():获得客户端向服务器端传送数据的方法 getParameter(String name):获得客户端传送给服务器端的有name 指定的参数值 getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例 getParameterValues(String name):获得有name指定的参数的所有值 getProtocol():获取客户端向服务器端传送数据所依据的协议名称 getQueryString():获得查询字符串 getRequestURI():获取发出请求字符串的客户端地址 getRemoteAddr():获取客户端的IP地址 getRemoteHost():获取客户端的名字 getSession([Boolean create]):返回和请求相关Session getServerName():获取服务器的名字 getServletPath():获取客户端所请求的脚本文件的路径 getServerPort():获取服务器的端口号 removeAttribute(String name):删除请求中的一个属性 314、JSP 有哪些动作?作用分别是什么? JSP 共有以下6种基本动作 jsp:inlude:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个JavaBean。 jsp:setProperty:设置JavaBean的属性。 jsp:getProperty:输出某个JavaBean的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。 315、JSP 的两种跳转方式分别是什么?有什么区别? 有两种,分别为: 前者页面不会转向include 所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调 用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。 316、EJB 是基于哪些技术实现的?并说出 SessionBean 和 EntityBean 的区别,StatefulBean 和 StatelessBean 的区别。 EJB 包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。 SessionBean在J2EE应用程序中被用来完成一些服务器端的业务****作,例如访问数据库、调用其他EJB组件。EntityBean 被用来代表应用系统中用到的数据。 对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。 对于客户机,EntityBean 是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序 实现的实体。 Session Bean 还可以再细分为Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在method 之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫Stateless Session Bean 的 时候,EJB Container 并不会找寻特定的Stateless SessionBean 的实体来执行这个method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个Bean 的Instance 在执行。从内存方面来看,Stateful Session Bean 与Stateless Session Bean 比较, StatefulSession Bean 会消耗J2EE Server 较多的内存,然而Stateful Session Bean 的优势却在于他可以维持使用者的状态。 317、EJB 与 JAVA BEAN 的区别? Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常JavaBean还要实现Serializable接口用于实 现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件, 它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java 的远程方法调用(RMI)技术的,所 以EJB 可以被远程访问(跨进程、跨计算机)。但EJB 必须被布署在诸如Webspere、WebLogic 这样的容器中,EJB客户从不直接访 问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理, EJB组件由容器所创建和管理。客户通过容器来访问真正的 EJB组件。 318、EJB 包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的? SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB 容器不一定要 创建一个新的Bean 的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会 把调用分派到与此客户机相关联的Bean 实例。EntityBean:Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中 的数据存在,Entity beans 就一直存活。而不是按照应用程序或者服务进程来说的。即使EJB容器崩溃了,Entity beans 也是存活的。 Entity Beans生命周期能够被容器或者 Beans自己管理。EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务服务(OTS), Sun Microsystems的Transaction Service (JTS)、 Java Transaction API(JTA),开发组(X/Open)的XA接口。 319、EJB 规范规定 EJB 中禁止的****作有哪些? 1.不能****作线程和线程API(线程API指非线程对象的方法如notify, wait等),2.不能****作awt,3.不能实现服务器功能,4.不能对静 态属生存取,5.不能使用IO****作直接存取文件系统,6.不能加载本地库.,7.不能将this 作为变量和返回,8.不能循环调用。 320、remote 接口和 home 接口主要作用 remote接口定义了业务方法,用于EJB 客户端调用业务方法。home接口是EJB工厂用于创建和移除查找EJB实例 321、bean 实例的生命周期 对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池管理,而对于Entity Bean和 Statefull Session Bean存在Cache 管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove等过程, 对于存在缓冲池管理的Bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的 Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。 322、EJB 的激活机制 以Stateful Session Bean 为例:其Cache大小决定了内存中可以同时存在的Bean实例的数量,根据MRU或NRU算法,实例在激活和去 激活状态之间迁移,激活机制是当客户端调用某个EJB实例业务方法时,如果对应EJB Object 发现自己没有绑定对应的Bean实例则 从其去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的ejbActive和ejbPassivate 方法。 323、EJB 的几种类型 会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean 会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种 实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种 324、客服端调用 EJB 对象的几个基本步骤 设置JNDI服务工厂以及JNDI服务地址系统属性,查找Home接口,从Home接口调用Create方法创建Remote接口,通过Remote接口调 用其业务方法。 325、EJB 需直接实现它的业务接口或 Home 接口吗,请简述理由。 远程接口和Home 接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被 使用。 326、说说 weblogic 中一个 Domain 的缺省目录结构?比如要将一个简单的 helloWorld.jsp 放入何目录下,然的在浏览 器上就可打入 http://主机:端口号//helloword.jsp 就可以看到运行结果了? 又比如这其中用到了一个自己写的 javaBean 该如何办? Domain 目录服务器目录applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web 应用 目录要求,jsp 文件可以直接放在应用目录中,Javabean 需要放在应用目录的WEB-INF 目录的classes目录中,设置服务器的缺省应 用将可以实现在浏览器上无需输入应用名。 327、说说在 weblogic 中开发消息 Bean 时的 persistent 与 non-persisten 的差别 persistent 方式的MDB 可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS 服务器依然会将消息在此MDB可用的时候 发送过来,而non-persistent方式的消息将被丢弃。 328、你在项目中用到了 xml 技术的哪些方面?如何实现的? 用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后 通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进 行,软件的各种配置参数都存贮在XML文件中。 329、JAVA SERVLET API 中 forward() 与 redirect()的区别? 前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的 地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要 时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源, 则必须使用sendRedirect()方法。 330、面向对象的特征? 主要有以下四方面: 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了 解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可 以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为 新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的 需要。 3.封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世 界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4.多态性:多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵 活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 331、Java 中的异常处理机制? 当JAVA 程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。 违反语义规则包括2种情况:一种是JAVA 类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访 问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的 异常,并自由选择在何时用throw 关键字引发异常。所有的异常都是java.lang.Thowable的子类。 332、java 语言如何进行异常处理,关键字 throws,throw,try,catch,finally 分别代表什么意义?在 try 块中可以抛出异 常吗? Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它 是Throwable 类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法 可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用 try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally) 由缺省处理器来处理。 用 try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。 throw语句用来明确地抛出一个"异常"。 throws用来标明一个成员函数可能抛出的各种"异常"。 Finally为确保一段代码不管发生什么"异常"都被执行一段代码。 可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常" 的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有 处理这种"异常"的try语句。 333、Java 中的事件处理机制? 事件从事件源到监听者的传递是通过对目标监听者对象的Java 方法调用进行的。对每个明确的事件的发生,都相应地定义一个明确 的Java 方法。这些方法都集中定义在事件监听者接口(EventListener Interface)中,这个接口要继承java.util.EventListener。实现了 事件监听者接口中一些或全部方法的类就是事件监听者。伴随着事件的发生,相应的状态通常都封装在事件状态对象(Event State Object)中,该对象必须继承自java.util.EventObject。事件状态对象作为单参传递给应响应该事件的监听者方法中。发出某种特定事 件的事件源的标识是:遵从规定的设计格式为事件监听者定义注册方法,并接受对指定事件监听者接口实例的引用。有时,事件监 听者不能直接实现事件监听者接口,或者还有其它的额外动作时,就要在一个源与其它一个或多个监听者之间插入一个事件适配器 类的实例,来建立它们之间的联系。 334、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回 收? 对于GC 来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC 采用有向图的方式记录和管 理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当 GC 确定一些对象为"不可达"时,GC 就 有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。 335、GC 是什么?为什么要有 GC (基础) ? GC是垃圾收集的意思(Garbage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统 的不稳定甚至崩溃,Java 提供的GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java 语言没有提供释放 已分配内存的显示操作方法。 要请求垃圾收集,可以调用下面的方法之一: System.gc() 和Runtime.getRuntime().gc()。 336、请说出你所知道的线程同步的方法。 wait():使一个线程处于等待状态,并且释放所持有的对象的lock。 sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由 JVM确定唤醒哪个线程,而且不是按优先级。 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 337、什么是 Java 序列化,如何实现 Java 序列化? 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流 化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实 现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流 (如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream 对象的writeObject(Object obj)方 法就可以将参数为obj 的对象写出(即保存其状态),要恢复的话则用输入流。 338、介绍 Java 中的 Collection Framework(包括如何写自己的数据结构)? Collection Framework 如下: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements) Map 提供key到value 的映射 339、String 是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 340、谈谈 final, finally, finalize 的区别? final:修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声 明为abstract 的,又被声明为final 的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明 时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finally:再异常处理时提供finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 finalize:方法名。Java 技术允许使用finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾 收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object 类中定义的,因此所有的类都继承了它。子类覆盖finalize() 方 法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。 341、Static Nested Class 和 Inner Class 的不同? Nested Class (一般是C++的说法),Inner Class (一般是JAVA 的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的 引用上。 注: 静态内部类(Inner Class)意味着1 创建一个static 内部类的对象,不需要一个外部类对象,2 不能从一个static内部类的一个对 象访问一个外部类对象 342、HashMap 和 Hashtable 的区别? HashMap 是Hashtable 的轻量级实现(非线程安全的实现),他们都完成了Map 接口,主要区别在于HashMap 允许空(null)键值(key), 由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者value,而Hashtable 不允许。 HashMap把Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey。因为contains 方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap 不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步, 而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。 343、ArrayList 和 Vector 的区别? 就ArrayList与Vector主要从二方面来说. 一.同步(Synchronization):Vector 是线程安全的,也就是说是可同步化的,而ArrayList 是线程序不安全的,不是同步的 二.数据增长:当内部数组空间不够需要增长时, Vector在默认情况下是产生一个双倍大小,而ArrayList 增加50%的大小。 344、Collection 和 Collections 的区别? Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 345、Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型? 方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。 如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。 Overloaded的方法是可以改变返回值的类型。 346、String 与 StringBuffer 的区别? String 的长度是不可变的,StringBuffer 的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用 StringBuffer,如果最后需要String,那么使用StringBuffer 的toString()方法 347、静态变量和实例变量的区别? static i = 10; //常量class A a; a.i =10;//可变 348、List、Map、Set 三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value 值,value 可多值。 349、说出 ArrayList,Vector, LinkedList 的存储性能和特性。 ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索 引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了synchronized 方法(线 程安全),通常性能上较ArrayList 差,而LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数 据时只需要记录本项的前后项即可,所以插入速度较快。 350、在 Java 中一个类被声明为 final 类型,表示了什么意思? 表示该类不能被继承,是顶级类。 351、Anonymous Inner Class (匿名内部类) 是否可以 extends(继承)其它类,是否可以 implements(实现)interface(接 口)? 匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 352、String s = new String("xyz");创建了几个 String Object? 两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。 353、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)==12;Math.round(-11.5)==-11;round 方法返回与参数最接近的长整数,参数加1/2后求其floor 354、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1;有错,s1是short 型,s1+1是int 型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。 short s1 = 1; s1 += 1正确。 355、数组有没有 length()这个方法? String 有没有 length()这个方法? 数组没有length()这个方法,有length 的属性。String 有有length()这个方法。 356、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是 equals()? 它们有何区别? Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。 equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。 357、List, Set, Map 是否继承自 Collection 接口? List,Set是Map不是 358、abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是 synchronized? 都不能 359、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。 360、构造器 Constructor 是否可被 override? 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。 361、当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法? 不能,一个对象的一个synchronized方法只能由一个线程访问。 362、try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行, 在 return 前还是后? 会执行,在return前执行。 363、描述一下 JVM 加载 class 文件的原理机制? JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装 入类文件的类。 364、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 365、Java 中会存在内存泄漏吗,请简单描述。 会。自己实现堆载的数据结构时有可能会出现内存泄露,如:int i,i2; return (i-i2); //when i为足够大的正数,i2为足够大的负数。结果会 造成溢位,导致错误。 366、是否可以从一个 static 方法内部发出对非 static 方法的调用? 不可以,如果其中包含对象的method();不能保证对象初始化. 367、写 clone()方法时,通常都有一行代码,是什么? Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。 368、在 Java 中,如何跳出当前的多重嵌套循环? 用break; return 方法。 369、你所知道的集合类都有哪些?主要方法? 最常用的集合类是List 和Map。List 的具体实现包括ArrayList 和Vector,它们是可变大小的列表,比较适合构建、存储和操作任何 类型对象的元素列表。List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。 370、给我一个你最常见到的 runtime exception。 ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFORMatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException 371、写一个 Singleton 出来 Singleton 模式主要作用是保证在 Java 应用程序中,一个类 Class 只有一个实例存在。 一般 Singleton 模式通常有几种种形式: 第一种形式: 定义一个类,它的构造函数为 private 的,它有一个 static 的 private 的该类变量,在类初始化时实例话, 通过一个 public 的 getInstance 方法获取对它的引用,继而调用其中的方法。 public class Singleton { private Singleton(){} //在自己内部定义自己一个实例,是不是很奇怪? //注意这是 private 只供内部调用 private static Singleton instance = new Singleton(); //这里提供了一个供外部访问本 class 的静态方法,可以直接访问 public static Singleton getInstance() { return instance; } } 第二种形式: public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率! if (instance==null) instance=new Singleton(); return instance; } } 其他形式:定义一个类,它的构造函数为 private 的,所有方法为 static 的。一般认为第一种形式要更加安全些 372、Java 的通信编程,编程题(或问答),用 JAVA SOCKET 编程,读服务器几个字符,再写入本地显示? Server 端程序: package test; import java.net.*; import java.io.*; public class Server { private ServerSocket ss; private Socket socket; private BufferedReader in; private PrintWriter out; public Server() { try { ss = new ServerSocket(10000); while(true) { socket = ss.accept(); String RemoteIP = socket.getInetAddress().getHostAddress(); String RemotePort = ":"+socket.getLocalPort(); System.out.println("A client come in!IP:"+RemoteIP+RemotePort); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line = in.readLine(); System.out.println("Cleint send is :" + line); out = new PrintWriter(socket.getOutputStream(),true); out.println("Your Message Received!"); out.close(); in.close(); socket.close(); } }catch (IOException e) { out.println("wrong"); } } public static void main(String[] args) { new Server(); } } Client 端程序: package test; import java.io.*; import java.net.*; public class Client { Socket socket; BufferedReader in; PrintWriter out; public Client() { try { System.out.println("Try to Connect to 127.0.0.1:10000"); socket = new Socket("127.0.0.1",10000); System.out.println("The Server Connected!"); System.out.println("Please enter some Character:"); BufferedReader line = new BufferedReader(new InputStreamReader(System.in)); out = new PrintWriter(socket.getOutputStream(),true); out.println(line.readLine()); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println(in.readLine()); out.close(); in.close(); socket.close(); }catch(IOException e) { out.println("Wrong"); } } public static void main(String[] args) { new Client(); } } 373、用 JAVA 实现一种排序,JAVA 类实现序列化的方法(二种)? 如在 COLLECTION 框架中,实现比较要实现 什么样的接口? package test; import java.util.*; class InsertSort { ArrayList al; public InsertSort(int num,int mod) { al = new ArrayList(num); Random rand = new Random(); System.out.println("The ArrayL{ al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1)); System.out.println("al["+i+"]="+al.get(i)); } } public void SortIt() { Integer tempInt; int MaxSize=1; for(int i=1;i=((Integer)al.get(MaxSize-1)).intValue()) { al.add(MaxSize,tempInt); MaxSize++; System.out.println(al.toString()); } else { for (int j=0;j=tempInt.intValue()) { al.add(j,tempInt); MaxSize++; System.out.println(al.toString()); break; } } } } System.out.println("The ArrayList Sort After:"); for(int i=0;i=intPageCount) nextPage=intPageCount; upPage = currentPage-1; if (upPage<=1) upPage=1; rs.close(); sql = "select * from tables"; rs = DBLink.executeQuery(sql); i = 0; while((i //输出内容 //输出翻页连接 合计:<%=currentPage%>/<%=intPageCount%>第一页上一页 <% for(int j=1;j<=intPageCount;j++){ if(currentPage!=j){ %> [<%=j%>] <% }else{ out.println(j); } } %> 下一页最后页 377、用 jdom 解析 xml 文件时如何解决中文问题?如何解析? package test; import java.io.*; public class DOMTest { private String inFile = "c:\people.xml"; private String outFile = "c:\people.xml"; public static void main(String args[]) { new DOMTest(); } public DOMTest() { try { javax.xml.parsers.DocumentBuilder builder = javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder(); org.w3c.dom.Document doc = builder.newDocument(); org.w3c.dom.Element root = doc.createElement("老师"); org.w3c.dom.Element wang = doc.createElement("王"); org.w3c.dom.Element liu = doc.createElement("刘"); wang.appendChild(doc.createTextNode("我是王老师")); root.appendChild(wang); doc.appendChild(root); javax.xml.transform.Transformer transformer = javax.xml.transform.TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312"); transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes"); transformer.transform(new javax.xml.transform.dom.DOMSource(doc), new javax.xml.transform.stream.StreamResult(outFile)); } catch (Exception e) { System.out.println (e.getMessage()); } } } 378、编程用 JAVA 解析 XML 的方式. 用 SAX 方式解析 XML,XML 文件如下: 王小明 信息学院 6258113 男,1955 年生,博士,95 年调入海南大学 事件回调类 SAXHandler.java import java.io.*; import java.util.Hashtable; import org.xml.sax.*; public class SAXHandler extends HandlerBase { private Hashtable table = new Hashtable(); private String currentElement = null; private String currentValue = null; public void setTable(Hashtable table) { this.table = table; } public Hashtable getTable() { return table; } public void startElement(String tag, AttributeList attrs) throws SAXException { currentElement = tag; } public void characters(char[] ch, int start, int length) throws SAXException { currentValue = new String(ch, start, length); } public void endElement(String name) throws SAXException { if (currentElement.equals(name)) table.put(currentElement, currentValue); } } JSP 内容显示源码,SaxXml.jsp: <%@ page errorPage="ErrPage.jsp" contentType="text/html;charset=GB2312" %> <%@ page import="java.io.*" %> <%@ page import="java.util.Hashtable" %> <%@ page import="org.w3c.dom.*" %> <%@ page import="org.xml.sax.*" %> <%@ page import="javax.xml.parsers.SAXParserFactory" %> <%@ page import="javax.xml.parsers.SAXParser" %> <%@ page import="SAXHandler" %> 剖析 XML 文件 people.xml <% File file = new File("c:\people.xml"); FileReader reader = new FileReader(file); Parser parser; SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); SAXHandler handler = new SAXHandler(); sp.parse(new InputSource(reader), handler); Hashtable hashTable = handler.getTable(); out.println(""); out.println("" + ""); out.println("" + ""); out.println("" + ""); out.println("" + ""); out.println("
教师信息表
姓名" + (String)hashTable.get(new String("name")) + "
学院" + (String)hashTable.get(new String("college"))+"
电话" + (String)hashTable.get(new String("telephone")) + "
备注" + (String)hashTable.get(new String("notes")) + "
"); %> 379、设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。写出程序。 public class ThreadTest1{ private int j; public static void main(String args[]){ ThreadTest1 tt=new ThreadTest1(); Inc inc=tt.new Inc(); Dec dec=tt.new Dec(); for(int i=0;i<2;i++){ Thread t=new Thread(inc); t.start(); t=new Thread(dec); t.start(); } } private synchronized void inc(){ j++; System.out.println(Thread.currentThread().getName()+"-inc:"+j); } private synchronized void dec(){ j--; System.out.println(Thread.currentThread().getName()+"-dec:"+j); } class Inc implements Runnable{ public void run(){ for(int i=0;i<100;i++){ inc(); } } } class Dec implements Runnable{ public void run(){ for(int i=0;i<100;i++){ dec(); } } } 380、ArrayList 和 Vector 的区别, HashMap 和 Hashtable 的区别 就 ArrayList 与 Vector 主要从二方面来说. 一.同步性:Vector 是线程安全的,也就是说是同步的,而 ArrayList 是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector 默认增长为原来一培,而 ArrayList 却是原来的一半 就 HashMap 与 HashTable 主要从三方面来说。 一.历史原因:Hashtable 是基于陈旧的 Dictionary 类的,HashMap 是 Java 1.2 引进的 Map 接口的一个实现 二.同步性:Hashtable 是线程安全的,也就是说是同步的,而 HashMap 是线程序不安全的,不是同步的 三.值:只有 HashMap 可以让你将空值作为一个表的条目的 key 或 value 381、== 与 equals 的区别: "==" 比较的是两个对象的引用 (references),并不是他们的内容. equals(Object) 方法与 "==" 相比的特殊之处就在于它可以覆盖,所以我们可以通过覆盖的办法让它不是比较引用而是比较数据内 容。当然 JDK 中也有覆盖过 equals(Object) 方法的类,如 java.lang.String,它就覆盖了从 Object 继承来的的 equals(Object) 方法, 用以比较字符串内容是否相同。 382、写一个 SQL Server 中的存储过程: 以下为一个带有一个输入参数 Vdeptno ,返回部门为 Vdeptnor 的所有职员的信息. create procedure Emp_dept @Vdeptno number(2) AS begin select * from emp where deptno=@Vdeptno end 383、写一个 Oracle 中的存储过程: 带 IN 参数的过程 create or replace procedure addnew(dno IN number, name IN varchar2, location IN varchar2)IS begin insert into dept values(dno,name,location); dbms_output.put_line(‗1 record inserted‘); end; 带 OUT 参数的过程 create or replace procedure getsal(name IN varchar2,salary OUT number)AS begin select sal into salary from emp where ename=name; end; 384、HTTP 的请求过程: 当点击一个链接时,浏览器首先找到站点的 IP 地址,这是通过 DNS 来实现的,在找到 IP 地址后就可以建立 TCP 连接了,连接建立后我们 就可以发送请求了.但这个请求是什么样子的呢 ? 我们现在假设点击了一个从 www.webmonkey.com/HTML/96/47/Index2A , HTML 点击了 WWW.GRIPY.ORG/MATTARG/ 这时浏览器会发出下面的请求: Get/MATTARG/HTML/1.0 User-Agent: Mozilla/2.0(macitosh;1;PPC) Accept: text/html: */* Cookie: name = value Refetet: http://www.webmonkey.com/html/96/47/index2a.html Host: www.gtippy.org 第一行称为请求,它告诉服务器从 MATTMARG 取得文件,这是的目录一般是要加 / 的,下面几行通知服务器你所使用的浏览器是 什么类型,你所接收的数据是什么类型,如果你以前访问过这个站点,站点可能向你发送了 Cookie ,如果你已经有了一个这样的 Cookie , 浏览器会将这个 Cookie 返回给服务器, referer 行通知服务器用户从哪一页到达此页的. 下面服务器就要返回文件了,每次服务器返回文件时,都要返回一个 Http/1.0 响应,同进带有状态码,在此之后是述内部的头信息,下 面就是一个响应: HTTP/1.0 200 Pound Data: Mon 10 Feb 1997 23:48:22 GMT Server: Apache/1.1 1 Hot&ired/1.0 Content-type: text/html Last-Moditied: Tues,11 Feb 1997 22:45:55 GMT 不同的数据可能返回不同的 Content-type ,因此不同的内容需要不同的 Content-type ,因此有时候这个过程是很慢的。 385、多线程的优点 可分两方面来答: 相对于单线程而言 : 可以响应多任务的并发操作。 多线程取消了主循环和轮流检测机制,一个线程可以暂停而不阻止系统其他的部分的执行,而且当程序中一个线程阻塞时,只有那 个被阻塞的线程暂停,所有其他的线程继续执行。 相对于进程而言:(可以答也可以不答) 它所要求的开销比较小,转换成本较小。 所有线程共享同一地址空间,相互协作。 彼此之间通信很容易。 386、在控制台中输入一个字符串,然后按照逆序打印出来 import java.io.*; public class test{ public static void main(String args[]){ String A=‖‖; String B=‖‖; String C=‖‖; Try{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); If ((B=br.readLine())!=null){ A=A+B; } for(int I=str.length()-1;I>=0;I--){ C=C+A.substring(I,I+1); } System.out.println(C); } catch(Exception e){ System.out.println(e.getMessage()); } } } 387、java 是否存在内存泄露 存在,当一个对象引用另一对象后,当另一对象为空时,会出现内存泄露 388、Corba 概述 通用对象请求代理,它的主要目标是解决面向对象的异构应用之间的互操作问题,并提供分布式计算所需的一些其他的服务。ORB 是 CORBA 的核心。 CORBA 重新调整了客户与服务器之间的关系。客户可以向服务器提出事务请求,同时也可以为下一个请求充当服务器角色。由 于 CORBA 系统引入了中间件的概念,即事件代理,由中间件完成客户机与服务器之间的通信,使得服务器对于客户机的位置相对 透明,取消了原有分布式计算机模型中客户机----服务器之间的一一对应关系,CORBA 客户机可以在运行时动态获得服务对象的位 置,并且可以对多个服务对象提交事务请求,所以它极大的推动了分布计算的发展。另外,CORBA 规范约束采用面向对象的分布式 方法,以接口定义语言的形式实现对象内部细节的完整封装,从而降低了软件系统的复杂度,增加了软件功能的可重用性。CORBA 提供到 C C++ JAVA 等高级语言的映射,极大程度地减小了程序设计语言的依赖性。 389、toString 方法的概述 因为每个类都继承了 Object 类,所以都实现了 toString()方法。 通过 toString()方法可以决定所创建对象的字符串表达形式。 390、Object 类的概述 Object 类是所有其他的类的超类,Object 的一个变量可以引用任何其他类的对象。因为数组是作为类实现的,所以 Object 的一 个变量也可以引用任何数组,它包括以下几种方法: clone() equals() finalize() getClass() hashCode() notify() notifyAll() toString() wait() 391、什么叫抽象类?抽象类跟接口有什么区别?为什么引进数据接口概念? 具有关键字 abstract ,在实现内容上没有完全定义的类就叫抽象类。 抽象类和接口的区别如下: ① 在类来继承抽象类时,只需实现部分具体方法和全部抽象方法,而实现接口则要实现里面的全部方法。 ②在接口中无成员变量,而抽象类中可有成员变量。 在 Java 中引进接口主要是为了解决多继承的问题。 392、doGet 与 doPut 的区别? doPut 会把地址作为一个文件写到服务器,而 doGet 不会,而只显示在地址栏。 393、多线程实现有那几种方法,同步有哪几种方法? 实现同步主要有两种方法:1.synchronized 2.wait notify 实现多线程主要继承 Thread 类和实现 Runnable 接口。 394、JSP 页面的跳转? jsp 页面实现跳转主要有 jsp:forward 和 sendRedirect 两种方法 jsp:forward:在本容器内跳转 。 跳转后,地址栏地址不变 。效率高。跳转后立即结束本页的内容。 sendRedirect:在容器之间的跳转,跳转后地址栏地址为跳转后的地址,效率较低。 通常采用 jsp:forward 方式跳转。 395、类变量的初始化 在 Java 中类变量在局部中一定要初始化,因为局部变量会覆盖全局变量,否则会报错:变量未初始化。全局变量则可以不初始 化,而到具体的内部方法或其他的类成员中初始化。 396、数组的定义 数组是作为一种对象实现的。数组元素可以包含作何类型值,但数组里面的每个元素的类型必须一致创建数组步聚如下: 声明 构造 初始化 397、说明 List 和 Set 的区别 两者主要区别如下: List 用来处理序列,而 Set 用来处理集。 List 中的内容可以重复,而 Set 则不行。 398、请用递归算法打印出 d:\test 目录下的所有文件名 399、请打印出文件 d:\test.txt 中的所有内容 400、请用 java 语言实现冒泡排序 401、给出一个驱动 A,数据源 B,用户名称 C,密码 D,数据库表 T,请用 JDBC 查找表中所有的数据。 402、简述工厂模式以及你对该模式的理解 403、使用迭代方法计算出 5!。 404、将文件 A.txt 复制到空文件 B.txt 中。 405、如何避免多个 SOCKET 的读写阻塞,JDK1.4 新增了那些方法解决这个问题? 406、如果一个变量的值为 NULL,观察以下程序: IF 变量=NULL THEN 分支 1; ELSE 分支 2; END IF 程序最终执行那一个分支? 407、在 ORACLE 数据库中,一个表被删除后,还能否将空间分配给其它表,SQL SERVER 哪? 408、在 ORACLE 数据库中,一个表有两千万条数据,怎样最有效的将其删除? 智力题部分 409、题目难度:简单 一个猎人带着一只羊,一只狼和一棵白菜回家,路上遇到一条河。河边只有一条船,但船太小,一次最多只可载 猎人和另一样东西过河。但猎人不在时,狼要吃羊,羊要吃白菜。请问怎样才能把狼,羊,白菜都安全运过河? 410、题目难度:中等 老师盒子里有 10 颗糖,正好学生有 10 人. 老师说:你们每人要分到颗糖,同时盒子里还要剩下一颗,请问怎么分? 411、题目难度:困难 小明和小华买了 10 斤蜂蜜,装在一个大瓶子里.要把蜂蜜平分,只有两个空瓶子,一个正好装 7 斤,另一个正好装 3 斤.怎样才能用最简单的方法把蜂蜜分出来. 412、题目难度:简单 有个猎人在森林里看见一只黄莺,他想得到黄莺 黄莺就对猎人说前面的大树后面有 5 朵花,其中 4 朵是真花,有一朵是我变的,你能找出我吗? 说完黄莺就变成一朵花 你能找出它吗? 413、题目难度:中等 有 100 个球,其中有个质量较轻, 现在只有个天平,你最少用几次把球找出来 414、题目难度:困难. 有口井不知有多深,现有一跟绳子,也不知道有多长. 把绳子折成 3 折,把一端垂下井底.当绳子的下端到达井底时,上端比井口低 1 尺. 如果把绳子折成 2 折.那下端到达井低时,上端高出 6 尺. 你知道井有多深,绳子有多长了吗? 415、题目难度:中等 小明,小华,小红三个人钓鱼. 钓完后,别人问他们今天钓了好多条鱼. 小明说一共 22 条. 小华比我多钓两条,小红比小华多钓 3 条 你知道他们三人各跳多少条吗? 416、题目难度:困难 有 4 条船,这 4 条船划到对岸所需的时间各不同,1 号船要 1 分钟,2 号船要 2 分钟,3 号船要 5 分钟,4 号船要 10 分钟. 怎样才能用最快时间把 4 条船划到对岸? [只有一个人划船,一次最多可划两条船走,但必须要划条回来.] 417、题目难度:困难 有 10 箱罐头,这 10 箱罐头每箱都是 20 盒,每盒有 1 斤. 但其中有一箱,每盒只有 9 两. 现在只有一个秤,而且只准秤一次 ,就要把有问题这箱找出来. [前提:不能说用手抬,看哪个轻些] 418、题目难度:简单 小明和小华去郊外玩,小明带了 3 张烧饼,小华带了 4 张. 这时小红来了,他们三人共分 7 张饼. 吃完后,小红拿了 1 元 4 角为饼钱,给小明和小华. 小明说一共 7 张饼,我出 3 张,你出 4 张,我们应该以 4:3 的比例把钱分了. 你认为怎样分饼钱了 419、题目难度:中等 有三个盒子:分别是红,绿,黄三种颜色. 只有一个盒子有奖品.每个盒子上贴着一张纸条.三张纸条写着三句话,只有一句是真话. 红盒子上写:奖品不在红盒子里 绿盒子上写:奖品不在绿盒子里 黄盒子上写:奖品不在红盒子里 奖品在哪个盒子了? 420、题目难度:变态 一个人在朋友家吃饭,问朋友这顿饭吃的什么肉。朋友说吃的企鹅肉,他就嚎啕大哭。为什么她吃了企鹅肉就哭 了? 421、题目难度:变态 有母女三人,母亲死了。姐妹俩去参加葬礼。妹妹在葬礼上遇见个英俊男子,并一见钟情。但葬礼完后那男子就 不见了,妹妹找不到他。一个月后,妹妹把姐姐杀了,为什么? 422、题目难度:变态 有一个人在沙漠中,头朝下死了,身边散落着几个行李箱子,而这个人手里紧紧抓着半跟火柴,请推理这个人是怎么死 的? 423、一个人坐火车去邻镇看病,看完之后病全好了。回来的路上火车经过一个隧道,这个人就跳车自杀了,为什 么? 424、有个男子跟他女友去河边散步,突然他的女友掉进河里了,那个男子就急忙跳到水里去找,可没找到他的女 友,他伤心的离开了这里。过了几年后,他故地重游,这时看到有个老人家在钓鱼,可那老人家钓上来的鱼身上 没有水草,他就问那老人家为什么鱼身上没有沾到一点水草,那老人家说:―你不知道啊,这河从没有长过水草。‖ 说到这时那男子突然跳到水里,自杀了,为什么? 425、马戏团里有两个侏儒,瞎子侏儒比另一个侏儒矮,马戏团只需要一个侏儒,马戏团里的侏儒当然是越矮越好了。 两个侏儒决定比谁的个子矮,个子高的就去自杀。可是,在约定比个子的前一天,瞎子侏儒也就是那个矮的侏儒已经 在家里自杀死了。在他的家里只发现木头做的家具和满地的木屑。问他为什么自杀? 426、一个人住在山顶的小屋里,半夜听见有敲门声音,但是他打开门却没有人,于是去睡了,等了一会儿又有敲 门声,去开门,还是没人,如是者几次。第二天,有人在山脚下发现死尸一具,警察来把山顶的那人带走了。为 什么? 427、爱因斯坦的难题 题目难度:超级难题 前提: 有 5 间房子排成一列 所有房屋外表一样颜色不一样 所有的屋主来自不同的国家 所有屋主养不同的宠物,喝不同的饮料,抽不同的香烟 提示: 英国人住红房子 瑞典人养狗 丹麦人喝茶 绿房子在白房子的左边 绿房子的屋主喝咖啡 抽 pall mall 香烟的屋主养鸟 黄房子屋主抽 Dunhill 香烟 最中间房屋的屋主喝牛奶 挪威人住第一间房屋 抽 blend 香烟的人住在养猫人的隔壁 养马的屋主在抽 Dunhill 香烟的隔壁 抽 blue mastrr 香烟的屋主喝啤酒 德国人抽 prince 香烟 挪威人住在蓝色的房子的隔壁 只喝开水的人住在抽 blend 香烟的隔壁 问:谁养鱼 428、题目难度:简单 一只熊向南走了 1 千米,又向东走 1 千米,然后向北走了 1 千米回到原地. 问:这熊是什么颜色 429、题目难度:困难 一快墓碑上写着: 过路人,这里埋着古代希腊数学家刁藩都的骨灰. 下面的数字可以告诉你他的寿命多长. 他生命的 6 分之 1 是幸福的童年.再活了 12 分之 1,开始长细细的胡须.他结婚了,还没有孩子,又度过了生命的 7 分之 1,再过了 5 年,他感到很幸福,得了头胎儿子.可是命运给了这孩子在这世界上的生命只有他父亲的一半.儿子死后,他 在深深的悲痛中活了 4 年,也结束了一生. 问:你知道这位数学家什么时候结婚?什么时候得子?什么时候去世吗? 430、题目难度:简单 在未来的一天夜里,地球上唯一存活下来的女人正在伏在书桌旁写遗书.就在这时传来敲门声.可是,此时地球上所有 的生物动物都死光了,也不是风吹起石头打在门上.那是谁在敲门了? 431、题目难度:中等 警察在盘问 5 个小偷嫌疑犯:ABCDE 他们当中有 3 个人说真话.根据他们的说法,你能判断出谁是小偷. A:D 是小偷 B:我是无辜的 C:E 不是小偷 D:A 说的全是谎话 E:B 说的全是真话 432、题目难度:困难 3 个人住宿,共交 300 元,每人出 100 元. 过后老板说今天住宿优惠,退 50 元.叫服务员退给他们 服务员贪了 20 元,给他们一人 10 元. 3 个人等于一人给 90 元,共 270 元.加上服务员贪的 20 元,共 290 元. 问;还有 1 元那去了 433、题目难度:中等 甲和已跑 100 米.甲到终点时,已跑了 90 米. 已又和丙跑 100 米,已到终点时,丙也只跑 90 米. 那甲和丙跑了,甲到终点时,丙跑了多少米? 434、题目难度:中等 如果有一辆车,上面坐着国王,王后,王子,公主.请问这辆车是谁的? 435、题目难度:中等 有 A,B,C,D,E,F,G,H,I 9 个人 他们中有一个是小偷 但只有 4 个人说真话 A:一定是 G,我感肯定 B:我觉得应该 G C:其实小偷是我 D:C 在说谎话 E:我认为 G 是不会说谎的 F:我想一定是 I G:我不是小偷,也不 I H:小偷是 C I:是我才对 谁是小偷 436、题目难度:困难 有两个人在讨论今天是星期几 一个人说:当后天变成明天的时候,那么[今天]距离星期天的日子,将和前天变成明天时的那个[今天]距离星期天的 日子相同. 437、题目难度:简单 一天有人坐车去 A 地,去的时候平均速度是每小时 30 公里. 返回时的平均速度是每小时 20 公里 问:他在整个旅程的平均速度是多少? 438、题目难度:困难 你开着一辆车,在一个暴风雨的晚上,经过一个公交车站.有三个人在等车. 一个是快要死了的老人,很可怜. 一个是救过你命的医生,你做梦都想报答他. 还有一个是个女人[男人]你很喜欢他[她]错过了今晚就没办法在见面了 但你的车只能坐一个人,你会如何选择? 请仔细考虑下: 老人快死了,你因该救他. 但你要报答医生,这是个好机会. 同时那位使你心动的人错过了就没有了. 439、题目难度:简单 5 只鸡 5 天生 5 个蛋.如果 100 天内要 100 个蛋,需要多少只鸡? 440、题目难度:困难 有个人要买香蕉,小贩有 100 公斤香蕉,每斤 1 元. 那买主说我要买你全部香蕉,但是必须要把皮和肉分开. 小贩想 皮每公斤 2 角,肉每公斤 8 角.反正我又不亏.就照办吧. 最后分出来皮 50 公斤 肉 50 公斤 买主说:皮每公斤 2 角,50 公斤就是 10 元.肉每公斤 8 角.50 公斤就是 40 元,我该给你 50 元. 小贩知道其中有诈,但有不知道哪里出错. 问:你知道怎么回事吗? 441、题目难度:超级难题 有两草块地,一块大,一块小.大草地是小草地的 1 倍. 有一组人去割草. 上午全部在大草地上割草 午后分为两组,一半继续在大草地割草,另一半去小草地割草. 晚上收工后,大草地已经全部割完,小草地还剩一小块.这小块只需要一个人一天就可以割完 问:割草的人一共有多少? 442、题目难度:中等 小明生病了,请了 4 天假,病好了但小明不想上学.就对妈妈说,我一天睡眠 8 小时,一年一共要睡 122 天.周六周日加起 来是 104 天.寒暑假一共有 60 天.吃饭要用 45 天.每天两小时游戏一共 30 天.在加这生病的 4 天时 间,122+104+60+45+30+4=365.刚好一年.我没有时间上学了. 到底怎么回事了? 443、题目难度:中等 2 5 7 4 7 5 3 6 ? 请找出规律填出?号的地方该填什么数字 444、题目难度:简单 一列满载火车从沈阳开到山海关要 7 个小时,那么列车在乘客只有一半的情况下,行驶 3 个小时,那么这列火车现在 在什么地方? 445、题目难度:超级难题 从 A 地到 B 地的距离为 189 英里.我有两个选择,一是坐火车,一是坐汽车.坐火车要比坐汽车快 12 小时到达目的地. 所以我选择做火车 当汽车从 B 地开出时,我们同时从 A 地出发,当火车与汽车相遇时,该地点[也就是相遇点]与 A 地的距离要比它与 B 地的距离大,相差的英里数正好等于我们已经在路上的小时数. 问:我们在路上遇到汽车时,我们距离 B 地还有多少路程? 446、题目难度:简单 一个人从 A 地出发,另一个从 B 地出发.在路上他们相遇了.谁离 A 地较近? 447、题目难度:困难 老王家住 A 市,但在 B 市上班,下班后,每天下午 5 点他都会准时出现在 A 市火车站,等着他夫人开车来接他. 有一天老王提前 1 小时下班,4 点就到火车站了,那天天气不错,他就自己沿着夫人来接他的路线回家.途中,他遇到了 开车来接他的夫人,然后坐着车和夫人一起回到家,结果比通常提前 10 分钟到家. 假设王夫人的驾车速度不变,和往常一样,并且这天也是准时出发去接通常 5 点钟到火车站的丈夫. 你能否算出老王在坐上汽车之前已经走了多长时间? 448、题目难度:困难 老王家住 A 市,但在 B 市上班,下班后,每天下午 5 点他都会准时出现在 A 市火车站,等着他夫人开车来接他. 有一天老王提前 1 小时下班,4 点就到火车站了,那天天气不错,他就自己沿着夫人来接他的路线回家.途中,他遇到了 开车来接他的夫人,然后坐着车和夫人一起回到家,结果比通常提前 10 分钟到家. 假设王夫人的驾车速度不变,和往常一样,并且这天也是准时出发去接通常 5 点钟到火车站的丈夫. 你能否算出老王在坐上汽车之前已经走了多长时间? 449、题目难度:简单 一个三位数,减去 7 后正好被 7 整除.减去 8 后正好被 8 整除.减去 9 后正好被 9 整除.这个三位数是什么? 450、题目难度:简单 有一只水壶,装得满满的时候有 8 公斤重.按照我们正常的喝法,一口只能喝半杯[还不到半斤],但小明确说他能在 10 秒内把水壶变空.请问他是怎样做到的? 451、题目难度:中等 在某城,假设以下关于该居民的断定都是事实: 1.没有两个居民的头发数量正好一样多. 2.没有一个居民的头发正好是 518 根. 3.居民的总数比任何一个居民头上的头发总数还要多. 那么,该城居民的总数最多不可能超过的多少人? 452、题目难度:困难 一个弹性小球从距离地面 179 英尺高的比萨斜塔上落下来.如果每次反弹起来的高度等于前一次的 10 分之一,试问: 它静止之前,总共弹跳了多少距离? 453、题目难度:困难 小明把他的油画买给小华,卖了 100 元. 过了一段时间小华不喜欢这画了,又把画卖还给小明,卖了 80 元. 小明又将这画卖给卖给小红,买了 90 元. 小明说:第一次我卖了得 100 元,,正好是用掉的时间和材料的费用,所以那是对等买卖.后来我买它用了 80 元,在买掉 得了 90 元,所以我赚了 10 元 小华却不怎么认为:小明把画买给我,得了 100 元,买回去花了 80 元,显然赚了 20 元,第二次买多少可以不管它,因为 90 元是那张画的价值. 小红却说:小明第一次买了得了 100 元,买回去 80 元,所以赚 20 元.从他买画花了 80 元,买画给我要了 90 元来看.他又 赚了 10 元.所以他共赚了 30 元. 问:小明到底赚了多少钱? 454、题目难度:困难 有 100 个残疾兵.其中 70 名失去一只眼,75 兵失去一只耳,80 名失去一只手,85 名失去一只脚. 问:同时失去一只眼,一只耳,一只手,一只脚的兵有多少人? 455、题目难度:简单 小张喝啤酒,他从上午 11 点喝到下午 1 点.以每 30 分钟喝一瓶来计算,那么这段时间小张一共喝了多少瓶子? 456、题目难度:简单 一个哑巴来商店买钉子,他先用右手食指立在柜台上,然后左手握拳做出向下敲击的动作.售货员明白了,他要买锤子. 不一会,来了个瞎子,他打算买把剪刀,请问他该怎么做? 457、题目难度:简单 [X Y Z] [B D ?] 从下面四个字母中选一个填进上面?号里: [C F E Y] 458、题目难度:超级难题 五个人一起卖报,AC 两人是一家的,BDE 三人是一家的. A 卖的报纸是总数的 4 分之 1,再加一张报纸. B 卖的报纸是剩下的 4 分之 1,再加一张报纸. C 卖的报纸是剩下的 4 分之 1,再加一张报纸. D 卖的报纸是剩下的 4 分之 1,再加一张报纸. 此时 AC 卖的报纸比 BD 卖的报纸多卖了 100 份. 但是当 E 把剩下所有报纸全部卖出去后,BDE 家又比 AC 家多多少份报纸? 459、题目难度:困难 一位卖牛奶的老头被两位妇人难到了. 这两位妇人请求在他的一只 5 斤和 4 斤的的小桶中.各倒入 2 斤牛奶.而这时只有两只罐子,每只装满牛奶正好 40 斤. 他用什么办法可以让两个妇人各得 2 斤牛奶了? 把牛奶倒进倒出,只准用两个罐子和两个小桶,不准使用其他容器.要求最后 5 斤小桶和 4 斤小桶中各有 2 斤牛奶,而 两个罐子中有一个还是有 40 斤牛奶. 460、题目难度:中等 在实验室有 A 细菌 1 个,B 细菌 20 个.每过一分钟,A 就吞噬一个 B.同时 A 和 B 又都分裂成原来数目的两倍.问:在第 几分钟时 B 细菌会被 A 细菌全部吞噬掉? 461、题目难度:简单 某部招一名侦察员.考试的方法是:所有人被关在一个房子里,有人看守.你要向看守人说句话,让他放你出去. 有人说头疼,看守人叫来医生. 有人说母亲生病了,看守人又用电话联系这人母亲证实没有生病. 其他人都说了不少理由,看守人就是不准他们出去. 问:你怎么说,才能逃脱出这个房间? 462、题目难度:中等 家里蛋糕被偷吃了,妈妈问家里三个孩子,得到如下回答: A:是我吃的 B:我看见 A 吃了,我也想吃 C:我和 B 都没有吃蛋糕 这三个孩子的回答中有一个是谎话,那么你知道是谁偷吃了蛋糕? 463、题目难度:困难 我国古代[孙子算经]中有道题,大概意思是:一个农妇在河边洗碗,邻居问:你家里来了多少客人,要用多少碗?她回答: 客人每两位合用一只饭碗,每三位合用一只汤碗,每四位合用一只菜碗,共用了 65 只碗.她家里究竟来了多少客人? 464、有一个岔路口,一条是通往上山的路,一条的通往悬崖的路,两个路口分别站着甲,乙,只能问一个人一个 问题,而且甲乙只有一个人说真话,另一个说假,问,怎样问一个人一个问题就能把上山的路问出来??? 465、题目难度:困难 杰克和他的妻子准备在郊外买一栋小别墅. 杰克说:如果把你的钱拿出 4 分之 3 给我,在加上我的钱,我们就可以买一栋价值 5000 美元的房子,而你剩下的钱可以 购买屋后的小溪. 他妻子说:如果把你的钱拿出 4 分之 3 给我,再加上我的钱,我们就可以买下那栋房子,而你手里剩下的钱,正好可以买 小溪 问:小溪值多少钱? 466、题目难度:困难 有位智者喜欢在林荫道上散步,他让弟子这样栽树:沿直线先朝东栽 100 米,接着朝北栽 100 米,然后朝西栽 100 米, 然后朝南栽 98 米,朝东 98 米,朝西 96 米等等,如此栽下去.最后,他便得到两排树木之间的一条 2 米宽的林荫道. 智者很喜欢沿着这条林荫道边散步边思考哲学,一直走到林荫道中心,那么,智者一共走了多少米? 467、鸡、蛤蟆和蝉,跑了一稻田,头有三千六,腿有一万三,请问有多少鸡、多少蛤蟆、多少蝉? 468、题目难度:简单 有对夫妇有两个孩子,并且他们告诉你其中有一个是女孩.假设一个孩子是男孩或女孩的概率相同,那么他们的另一 个孩子是女孩的概率是多少? 469、题目难度:简单 在一所旅馆里有三个房间,分别住着两名女人,两名男人,一名男人和一名女人.他们的房间门上也正确的悬挂着表示 男女的门牌.但是有天门牌被弄混了,现在住在房间里的人和门牌完全不符合. 现在只准敲其中一个门,得到里面一个人的回答,怎样把混乱的门牌又重新弄正? 470、题目难度:简单 大学的班级里要进行投票选举,选出三个班干部.选举的规则是每人只能投一票,而只有得票最多的前三个人才能当 选.这个班级人数是 49 人,候选人是 7 人.那么最少要获得多少票才能当选? 471、题目难度:简单 5 个盒子里面分别装着有红,黑,黄,绿和灰 5 种颜色的球 A 说:第 2 盒里是灰,第 3 盒里是黑 B 说:第 2 盒里是绿,第 4 盒里是红 C 说:第 1 盒里是红,第 5 盒里是黄 D 说:第 3 盒里是绿,第 4 盒里是黄 E 说:第 2 盒里是黑,第 5 盒里是灰 实际上,这 5 个人都说对了一盒,而且每个人说对的颜色都是不同的. 问:每个盒子里面装这什么颜色的球 472、题目难度:中等 小明在一家公司上班.工作一段时间后他发现一个规律:如果某天休息,而前一天不休息,那么第二天就休息.如果前 一天休息,那么第二天就要工作.如果某天要工作,而前两天休息,那么第二天也要工作.但如果前两天工作,那么第二 天就可以休息.问题是:如果没有星期假日,在这一年 365 天中小明要工作多少天? 473、题目难度:困难 99 45 39 36 28 21 72 27 18 21 ? 13 7 上面是偌布数列,你能找到规律,并填上?是什么数吗? 474、题目难度:简单 一天有人坐车去 A 地,去的时候平均速度是每小时 30 公里. 返回时的平均速度是每小时 20 公里 问:他在整个旅程的平均速度是多少? 475、题目难度:简单游戏题 把 9 枚硬币摆成 3 行,如下 A 表示硬币: A A A A A A A A A 双方轮流取走硬币,一次可以取一枚,也可以取多枚,但是这些被取走的硬币必须是同一行的. 如:你可以一来就取走第一行所有硬币,也可以取一枚,但绝对不能取另外两行的. 谁取走最后一枚算输.你认为是先取硬币的胜还是后取硬币的胜? 476、题目难度:简单游戏题 有一堆银币,有 88 枚,每次最少取 1 枚,最多取 4 枚,取到第 88 枚那个算赢,你若想获胜,应先取还是后取? 477、题目难度:简单 有天有位师傅在门上写上一个心字,他徒弟来看望他,当走到门口时他看到了那心字,便回去了.第二天师傅在门上写 个木字,这回他徒弟便直接进屋看望他师傅.你知道这一前一后有什么寓意吗? 478、[A T Y M U W] [C B K D E] 上面两组字母,各有什么共同点? 479、题目难度:简单 有 3 个孩子.分别以 ABC 来称呼,A 和 B 的年龄差 3 岁,B 和 C 的年龄差 2 岁,而且 A 不是家中长子.那么这三个孩子 的年龄顺序该怎么排了? 480、题目难度:困难 甲乙两个人同时从相距 100 公里的两地出发,相向而行.甲每小时走 6 公里,乙每小时走 4 公里.甲有只狗,它和甲同时 出发,狗以每小时 10 公里的速度向乙跑去,遇到乙即回头向甲跑去,遇到甲又回头向乙跑去,直到甲乙两人向遇时狗 才停住.问:这只狗工跑了多少公里? 481、题目难度:中等 在一个游戏里有 10 个人参加,他们全戴着有颜色的帽子,他们都看不到自己的帽子,但是能看都其他人的帽子,主持 人对这 10 个人说:你可以看看周围的人,如果你能看到是三个以上戴着黄帽子的人,就可以得到奖品.然后主持人将 其中 X 个人戴上黄帽子,结果 10 个人中有 X 个人没得到奖品. 问:有多少人得到奖品? 482、题目难度:中等 在家里有 A,B,C,D 四个孩子,其中有个孩子把花瓶打碎了,妈妈回来后问怎么回事: A 说:我没有打碎花瓶 B 说:是我打破的 C 说:不是 A 打破的 D 说:也不是 B 打破的 妈妈知道,打破花瓶那个孩子一定在撒谎.那么,是谁打碎了花瓶? 483、一位老师宣布说,在下个星期五天内[星期一到星期五]的某一天将进行一场考试,但他又告诉同学,你们无法知 道那一天,只有到了考试那天的早上 8 点钟才通知你们下午 1 点钟考.这时有位同学说:老师像你这样说那么这场考 试无法进行啊. 问:你能说出为什么这场考试无法进行吗? 484、题目难度:简单 小丽心中的白马王子是高个子,小麦肤色,相貌英俊的人,她认识 ABCD 四位男生,其中有位符合她要求的全部条件. [1].4 位男生中,只有三个是高个子,只有两个人是小麦肤色,只有一个人相貌英俊. [2].每位男生至少符合一个条件. [3].A 和 B 肤色相同. [4].B 和 C 身高相同. [5].C 和 D 并非都是高个子. 问:ABCD 中谁能符合小丽的全部条件了? 485、题目难度:中等 有两个部落,一个部落总是说谎,另一个部落总是说真话. 有天某人碰到两个部落的人,A 和 B. 那人问 A:你是说真话的吗? A 回答:是的.但 B 却说 A 是个说谎的部落. 你猜出 A 和 B 各是什么部落了吗? 486、题目难度:中等 牛顿曾编过一到数学题: 牧场上有一片青草,每天都生长得一样快.这片青草供给 10 头牛吃,可以吃 22 天,供给 16 头牛吃,可以吃 10 天,如果供 给 25 头牛吃,可以吃几天? 487、题目难度:简单 在一栋楼的楼道里有 3 个开关,其中一个可以打开楼上楼道里的灯.你的任务是找出哪一个开关能开灯,但是你只有 一次机会去楼上检查灯是否开了. 问:你能想出如何找到正确开关的方法吗? 488、题目难度:简单 4 个人坐在火车候车室的长椅上,1 位老人过来问时间,4 人同时看了自己表后,作出一下回答: A:现在是 12 点 45 分 B:不,是 12 点 57 分 C:我的表是 1 点零 3 分 D:我的表是 1 点零 2 分 事实上他们的表分别有 2,3,4 和 5 分钟的误差[这一顺序并非对应他们回答的顺序] 问:你能算出现在准确时间吗? 489、题目难度:简单 三个人垂直于墙的一条线上,眼睛被蒙上.然后拿出三顶红帽子和两顶黑帽子,并从这五顶帽子中取出三顶给他们戴 上,并将以上信息告诉他们,接着把眼睛上的布拿掉,要求每人确定各自所戴的帽子. 离墙最远的那个人看到前面两个人的帽子后说:我不知道我戴的是什么颜色的帽子.离墙第二远的那个人听到上面 回答,又看了前面一个人的帽子,说:我也不知道自己戴的是什么颜色的帽子.第三个人虽然只看到墙,但听了前面两 个人的回答后说:我知道自己所戴帽子的颜色了. 问:推断出他们三人各自戴的帽子颜色? 490、题目难度:中等 有家旅馆有 12 个房间,依次从 1 号到 12 号.有天来了 13 个客人,要求各自单独住一间房间. 老板就想出个办法,他先让两个客人暂时住进 1 号房间,然后把剩下的客人按顺序依次配到剩下的房间里.于是 1 号 房间住两个人, 3 号客人住 2 号房间,4 号客人住 3 号房间.....12 号客人住 11 号房间,在把最先安排的 13 号客人从 1 号房间转到空着 的 12 号房间. 结果 13 位客人都满意的单独住进了 12 个房间. 这样安排显然不对,可问题出在哪里了? 491、题目难度:中等 某人雇佣 4 个木匠造一所房屋,第一个木匠说:如果我一个人造需要一年的时间.第二个木匠说:如果我一个人造需要 两年的时间.第三个木匠说:如果我一个人造则需要三年的时间.第四个木匠说:如果我一个人造至少需要四年的时间. 问:最后四个木匠一起造房子,需要多少时间? 492、题目难度:中等 祖孙三人的年龄相加在一起正好是 100 岁.祖父过的年数正好等于孙子过的月数,儿子过的星期数正好等于孙子过 的天数. 问:祖孙三人各多大? 493、题目难度:困难 有 10 箱罐头,这 10 箱罐头每箱都是 20 盒,每盒有 1 斤. 但其中有一箱,每盒只有 9 两. 现在只有一个秤,而且只准秤一次 ,就要把有问题这箱找出来. [前提:不能说用手抬,看哪个轻些] 494、题目难度:游戏性简单题 准备 22 颗棋子[如图],左边放 10 颗,右边放 12 颗,两人轮流取棋子,并规定可以从左边一堆或右边一堆中取出 1 颗,几颗,甚至整个一堆。如果要从两堆中同时取的话,则必须取出同样多的颗数。谁能取得最后一颗或数颗 棋子算赢。 问:怎样才能赢? 图:[A 代表左边棋子,B 代表右边棋子] A BBB AAA BBB AAA BBB AAA BBB 495、题目难度:游戏性简单题 准备分别写有数字 1,2,3,4 的卡片各 7 张,摊在桌上。两人参加游戏,轮流各取 1 张卡片。当两人所取的卡片 数的和是 27 时,最后取得卡片的一方获胜。 为了胜利,应该怎么取? 496、题目难度:简单 有个人把 200 元递给一位出纳,说:我要换一些 1 元和 2 元的纸币,2 元的数目必须是 1 元纸币的十倍,剩下的 都换成 5 元的。 问:你说该怎么换? 497、题目难度:中等 有个精神病医生被杀了,他的 4 个病人在医生死前都去过医生公寓,审讯时,这 4 个精神病人商量好:我们说的 证词全部说谎话。 A: 1.我们 4 个人谁也没杀人。 2.我离开医生公寓时,他还活者。 B 3..我是第二个去医生公寓的 4.我到达时,他已经死了。 C 5.我是第三个去医生公寓的 6.我离开时,他还活者。 D 7.凶手不是在我去医生公寓之后去的 8.我到达时,他已经死了 问:谁是凶手 498、题目难度:困难 到发工资的日子了,老板想考验员工,所以制定出以下的工资单,叫他们各自找到自己相应的工资该是多少? A 的工资+B 的工资:1100 元 B 的工资+C 的工资:1700 元 C 的工资+D 的工资:1100 元 D 的工资+E 的工资:3300 元 E 的工资+F 的工资:5300 元 F 的工资+G 的工资:2500 元 问:这 7 个人的工资各是多少? 499、题目难度:中等 A 和 B 用 48 元买了个西瓜,A 出了 30 元,B 出了 18 元.这时 C 来了,C 想吃点西瓜,他们两人就以全价把西瓜的三分 之一卖给了 C. C 走后,两人平分了剩下的西瓜,那么,他们如何分配钱了? 500、题目难度:中等 11 个人按下面的方法分配 32 个苹果. A 得 1 个苹果. B 得 2 个苹果. C 得 3 个苹果. D 得 4 个苹果. E 的苹果和他妹妹的一样多. F 的苹果是他妹妹的两倍. G 的苹果是他妹妹的三倍. H 的苹果是他妹妹的四倍. 501、题目难度:简单 一位数学家雇佣两名工人挖一条从他房子到公路的百米小道.他同意支付 100 元,不管他们两人如何分工.两人从两 头开始向中间挖.从房子一头开始挖路的工人倒土需要走的路要长一些,但是土的数量少些.因此,两人商定这名工人 每挖一米得 9 角,另外一个人每挖一米的得 1.1 元.路挖好后,他们按照协定计算,两人各得 50 元,于是他们两人平分了 100 元.而数学家认为,根据他们的协定,他们不可能算出相等的报酬.这让两人都不高兴. 请问:两人要得到相同的报酬,他们各应该干多少工作? 502、题目难度:中等 有座巨人铜像,铜像中巧设机关:巨人的手,口,眼.连续着大小水管.藏在手中的管道中,三天将水池注满,独眼中的水管 需时一天,口中吐出的水柱,只需要 5 分之二天. 问:三处同时放水,空池几天能满? 503、题目难度:困难 A 和 B 把穿的很脏的衬衫与毛衣拿到洗衣店去洗,总共有 30 件.几天后,B 先从店里取回了一包洗好的衣服.他发现其 中正好有当初送去洗的衬衫的一半和毛衣的三分之一,他为这一包衣服付的洗衣费为 27 元.如果 4 件衬衫和 5 件毛 衣费用相等. 请问:A 要把剩下的衣服全部取回还需要支付多少钱? 504、题目难度:困难 有个经理有三个女儿,三个女儿的年龄加起来等于 13,三个女儿的年龄乘起来等于经理的年龄。有一个职员已经 知道经理的年龄,但仍不能确定经理三个女儿的年龄。这时,经理说只有一个女儿的头发是黑的,然后这个职员 就知道了经理三个女儿的年龄。 问:经理的三个女儿年龄分别是多少,为什么? 505、题目难度:简单 有排成一行的四户人家。已知:A 家在 B 家的隔壁,A 家与 D 家并不相邻。如果 D 家与 C 家也不相邻,那么,C 家的隔壁是哪一家? 506、题目难度:中等 一只兔子同一只乌龟沿着直径 100 米的圆形跑道背向行走。他们从同一地点出发,但兔子让乌龟先跑了全程的 8 分之 1 之后才开始跑,兔子开始慢慢跑,直至它在途中碰到了迎面而来的乌龟,这时,兔子已走完全程的 6 分之 1。 问:为了赢得这场比赛,兔子必须把它速度提高到以前速度的多少倍? 507、题目难度:中等 一天,A 和 B 打台球,A 在 100 分一局的比赛中让了 B20 分.后来,C 也加入了比赛.在 100 分一局的比赛中 B 可以 C20 分,再后来他们三人一起打,当然 A 也应该向 C 让分. 简单地说,在一局 100 分的比赛中 A 让 B20 分,B 让 C20 分,那么在一局 200 分的比赛中,A 能让 C 多少分了? 508、题目难度: 有人有 8 公斤酒,他想把一半赠送给他的朋友,但是没有 4 公斤的容器,只有一个 3 公斤和 5 公斤的容器.利用这两个 容器,怎样才能用最少次数把 8 公斤酒分成相等的两份? 509、题目难度:困难 我与 A,B 玩牌,第一局我输了,他们赢到的筹码和他们原来的筹码一样多.第二局我和 B 得分一样,我们两人赢到的筹 码和我们之前的筹码一样多.第三局,是我和 C 赢了,我们两人赢到的筹码和我们之前的一样多. 现在情况很复杂,我们三人都赢了两局输了一局,最后每人的筹码都是一样多,不过,我在整个三局中输了 100 元. 请问,我原先有多少本钱? 510、题目难度:中等 用个米袋可以装 9 公斤的米,试用天平和 50 克与 200 克的两个砝码,把米分成一份 2 公斤和一份 7 公斤两份,分别装 在两个米袋内,但只准称三次,怎么办? 511、题目难度:简单 桌上放着 6 张扑克牌,全部正面朝下.你已被告知其中有两张且只有两张是老 K,但是你不知道老 K 在哪个位置. 你随便取两张并把它们翻开. 下面哪种情况更有可能? 1.两张牌至少有一张是老 K 2.两张牌中没有一张是老 K 512、题目难度:中等 A 以 210 美元卖出两头奶牛,他在一头上赚了百分之十,而在另一头上却损失了百分之十.总的算来,他还是赚了百分 之五,问:两头牛的价钱各为多少? 513、题目难度:简单 有一艘日本豪华油轮,正在环球旅行,大家都在甲板上看海景,但是等到大家欣赏完海景后,回到船舱时,发现有人东 西 0 件了.这时候有 4 个工作人员有嫌疑,因为他们没有去甲板.下面是这 4 个人说明当时他们在干什么. A:我一直在机械室,在保养发动机. B:我刚刚在顶层更换国旗,后来发现挂反了.只好重新挂了一次. C:我在休息室休息. D:我一个人在房间玩扑克牌. 问:这 4 个人中谁是小偷,为什么? 514、题目难度:中等 有三堆苹果 第一堆是 11 只,第二堆是 7 只,第三堆是 6 只. 问:如何挪动每堆苹果,最后使三堆中每一堆的数目都等于 8 只. 要求:1.只能挪动三次 2.向某一堆添加的数目要等于原有的数目 [如;现在的数目分别是:11.7.6,那么如果要从第一堆里拿出苹果向其他两堆添加苹果的话,只能拿 7 个或者 6 个向其 他两堆苹果添加,后面步骤一样.] 515、题目难度:困难 老王即将老年得子,冲动之下,他宣布:如果出生的是男孩,他将把三分之二的财产给儿子,三分之一给妻子.如果出生 的是女孩,他将把三分之二的财产给妻子,三分之一的财产给女儿. 不过后来出生的是对龙风胎,如要实现当初诺言,请问:该怎么分财产? 516、题目难度:困难 玛丽太太为小朋友准备了一些花生,她给了最大的孩子[男孩]一棵花生,然后把剩下的四分之一也给了他.,玛丽太太 给了最小的孩子[女孩]一颗,然后把剩下的四分之一也给了她.玛丽太太按同样的方法也给了第三个孩子[男孩]和第 四个孩子[女孩]花生.最后发现,两个男孩得到的花生比两个女孩多 100 颗. 问:玛丽太太还剩下多少颗花生? 517、题目难度:中等 一位慈善女士每周都为一些穷人捐救济款.她说,如果少来 5 个人的话,每人就可多得两元.这样一来,每位救济者都希 望其他人不要来,但是,第二周领救济款不仅没缺一个人,而且还多了 4 个人,这样他们每人领到的救济款就比以前少 一元.你知道在第一周他们每人得到了多少元吗? 518、题目难度:简单 A 和 B 一起被雇佣来种一块地,两人各有所长.A20 分钟撒完一行种子,盖完一行种子则需要 12 倍的时间,B 撒种子的 速度是 A 的一半,不过他盖种子的速度和他自己撒种子的速度一样的.顾主的地有 12 行,报酬是 5 美元,如果他们要 同时完成工作,他们该如何分工,分配报酬? 519、题目难度:简单 珍妮对自己的年龄非常敏感.40 年前,当有人问她年龄时,她总是一成不变地朗诵下面的话作为回答: 五乘七加七乘三,加上我的年龄,此数比我年龄的两倍减二十,还大六乘九加四. 你知道她现在的年龄吗? 520、题目难度:简单 一天老板要加薪,有两种加法.[原工资是 500 美元] 1.每年加 100 美元,第一年 600 美元.第二年 700 美元......以此类推 2.以 600 美元一年为基础,每 6 个月加 25 美元,. 那个更合适? 521、题目难度:困难 一对兔子每月都要生一对小兔子,并且小兔子出生后两个月就可以再生一对小兔子. 假设有一对兔子每个月都生一雌一雄两只兔子.新生的兔子两个月后又生一雌一雄两只兔子,以此类推:1 年后共有 多少只兔子? 522、题目难度:困难 A,B,C,D 和 E 这五个人单身汉是养鸽迷,每人都有一只心爱的鸽子.而有五位女士是养猫迷,后来这五个单身汉分别 与那五位女士结婚了,为了使 A,B,C,D,E 这五个人的鸽子不被猫吃了,他们都小心的看这自己的宠物. 结果后来是,他们之中虽然每对夫妻自己的猫和鸽子相安无事,但最终每只猫都吃掉了一只鸽子.五个男人都失去了 自己心爱的鸽子. 事实上,A夫人的猫吃了某位先生的鸽子,正是这位先生和吃了E先生的鸽子的猫的主人结了婚.A先生的鸽子是被B 夫人的猫吃了,D 先生的鸽子是被某位夫人的猫吃了,正是这位夫人和被 C 夫人的猫所吃掉的鸽子的主人结了婚. 问:D 夫人的猫吃了谁家的鸽子? 523、题目难度:中等 警长接到一项任务,要在代码为 A,B,C,D,E,F 的六个队员中选若干人去完成这项任务.人选的配备要求,必须满足以 下各点: 1.A,B 两人中至少去一个人 2.A,D 不能一起去 3.A,E,F 三人中要派两人去 4.B,C 两人都去或都不去 5.C,D 两人中去一人 6.若 D 不去,则 E 也不去 问:应该让谁去? 524、题目难度:简单 我向空中仍 3 枚硬币,如果他们落地后全是正面朝上,我就给你 10 元.如果全是反面朝上我也给你 10 元.但是如果他 们落地时是其他情况,你得给我 5 元. 你认为接受这样的打赌明智吗? 525、题目难度:中等 一个精明的商人对他儿子说:我的孩子,生意兴隆关键在于货物的卖价是多少,而不是货物进价的高低.卖这件高级西 服我可以获得 10%的利润,但是如果我能把进价压低 10%,然后以 20%的利润加价卖出这件西服,那么,西服的价格还 是降低了 0.25 美元. 问:这件西服原先是多少钱? 526、题目难度:简单 请将下列四段文字中的两段组成一句话,要求能说明这样一个事实:参加考试的女学生全部及格了。 A:有些女学生和男同学一样地通过了考试。 B:参加考试的女学生多于男同学。 C:半数以上都及格了 D:考试不及格的是男生还是女生了?是占少数的一种[性别的]学生。 527、题目难度:简单 有个舞会汇集了许多外国人,现在知道,所有英国人都穿红色衣服,所有的美国人都穿蓝色衣服,没有即穿红色衣服又 穿蓝色衣服的人,杰克穿蓝色衣服. 根据以上说条件,下面那个说法正确: A.杰克是英国人 B.杰克不是英国人 C.杰克是美国人 D.杰克不是美国人 528、题目难度:简单 一人花 8 元买了一盒饼干,在回家路上突然又不想要了,就以 9 元的价格买给别人.回家后突然又想吃饼干,于是他又 去超市用 10 元买了盒饼干,在回家路上碰到一个朋友,这位朋友非要他把饼干卖给他,朋友主动给他 11 元作为补偿. 没办法这人只好把饼干卖给他朋友. 问:这人总共赚了多少钱? 529、题目难度:中等 杰克和莫尼卡夫妇去购物,杰克买了一件衣服和一顶帽子,用去 15 美元. 莫尼卡买了顶帽子,她所花的钱同杰克买衣服花的钱一样多.然后她又买了件衣服,把他们余钱顶帽子,她所花的钱 同杰克买衣服花的钱一样多.然后她又买了件衣服,把他们余钱用光了。 回家路上,莫尼卡要杰克注意,他的帽子要比她的衣服贵 1 美元.然后她说道:如果我们把买帽子的钱另作安排,去买进 另外的帽子,使我的帽子钱是你买帽子钱的二分之一倍,那么我们两人所花的钱就一样多了. 杰克说:在那种情况下,我的帽子要值多少钱了?你能回答杰克的问题吗? 并且你知道这对夫妇共花了多少钱吗? 530、题目难度:简单 请将下列四段文字中的两段组成一句话,要求能说明这样一个事实:参加考试的女学生全部及格了。 A:有些女学生和男同学一样地通过了考试。 B:参加考试的女学生多于男同学。 C:半数以上都及格了 D:考试不及格的是男生还是女生了?是占少数的一种[性别的]学生。 参加考试的女学生多于男同学, 考试不及格的是男生还是女生?是占少数的一种[性别的]学生。 531、题目难度:简单 有个舞会汇集了许多外国人,现在知道,所有英国人都穿红色衣服,所有的美国人都穿蓝色衣服,没有即穿红色衣服又 穿蓝色衣服的人,杰克穿蓝色衣服. 根据以上说条件,下面那个说法正确: A.杰克是英国人 B.杰克不是英国人 C.杰克是美国人 D.杰克不是美国人 532、题目难度:简单 一人花 8 元买了一盒饼干,在回家路上突然又不想要了,就以 9 元的价格买给别人.回家后突然又想吃饼干,于是他又 去超市用 10 元买了盒饼干,在回家路上碰到一个朋友,这位朋友非要他把饼干卖给他,朋友主动给他 11 元作为补偿. 没办法这人只好把饼干卖给他朋友. 问:这人总共赚了多少钱?] 533、题目难度:中等 杰克和莫尼卡夫妇去购物,杰克买了一件衣服和一顶帽子,用去 15 美元. 莫尼卡买了顶帽子,她所花的钱同杰克买衣服花的钱一样多.然后她又买了件衣服,把他们余钱用光了。回家路上, 莫尼卡要杰克注意,他的帽子要比她的衣服贵 1 美元.然后她说道:如果我们把买帽子的钱另作安排,去买件另外的帽 子,使我的帽子钱是你买帽子钱的二分之一,那么我们两人所花的钱就一样多了. 杰克说:在那种情况下,我的帽子要值多少钱了?你能回答杰克的问题吗? 并且你知道这对夫妇共花了多少钱吗? 534、题目难度:中等 有道 5 尺厚的墙壁,大小两只老鼠同时从墙的两面沿一条直线相对打洞,大老鼠第一天打进 1 尺,以后每天的进 度为前一天的两倍,小老鼠第一天也打进一尺,以后每天的进度是前一天的一半。问它们几天可以相遇?相遇时 各打进了多少尺? 535、题目难度:中等 一人想要到河对面,河上只有一座桥。通过桥这座桥需要 10 分钟,但是桥上有个守桥人每隔 5 分钟就出来巡逻一 次,发现有人过桥,就要把过桥人给赶回去。如果你是那人,你能用什么方法过桥了? 536、题目难度:游戏性简单题 让你的朋友在心中任意想一个自然数,然后依照下面的方法计算 把想的数加上一个比该数大1的数,先把所得的和加9,然后再把所得的和除以2,所得的商减去最初想的哪个数.这时, 你就可以很有把握的告诉朋友,你得到的结果是:5 请想一下,为什么不管什么们数,只要按照上面步骤,最后的结果都是 5? 537、题目难度:游戏性简单题 A,B 两人在一起玩一种硬币游戏. 他们面前放着 10 枚硬币.规定:每个参加者轮流每次从中去走一枚,两枚或四枚硬币,谁去得最后一枚硬币算赢. 在这场游戏中,怎样才能保证一定赢? 538、题目难度:简单 A,B,C 三人因涉嫌一件谋杀案被传讯.这三人中,一人是凶手,一人是帮凶,还有年个是无辜的人. 下面是他们的口供记录,其中每句话都是三人中的某个人说所说: A 不是帮凶,B 不是凶手,C 不是无辜者. 上面每句话的所指都不是说话者自身,而是指另外两个人中的某一个.上面三句话中至少有一句话是无辜者说的.只 有无辜者才说真话. 问:A,B,C 三人中,谁是凶手? 539、题目难度:简单 A,B,C 三人因涉嫌一件谋杀案被传讯.这三人中,一人是凶手,一人是帮凶,还有个是无辜的人. 下面是他们的口供记录,其中每句话都是三人中的某个人说所说: A 不是帮凶,B 不是凶手,C 不是无辜者. 上面每句话的所指都不是说话者自身,而是指另外两个人中的某一个.上面三句话中至少有一句话是无辜者说的.只 有无辜者才说真话. 问:A,B,C 三人中,谁是凶手? 540、题目难度:简单 你拿一个生鸡蛋,让它自由下落.地上没有任何铺垫的情况下,如何才能使鸡蛋下落 1 米而不破? 541、题目难度:简单 如果让你从装有 10 张彩票的盒子里抽取一张,或者从装有 100 张彩票的盒子里抽 10 次,每抽一张,每抽完一次 要把彩票放回。你觉得那种中奖的概率大些? 542、题目难度:简单 一群人在前往某地的途中遇到一条大河,大河上没有桥。而且河水很急,无法游泳过去。河边只有两个小孩划着 一条小船。小船每次只能载一名士兵或者两个小孩。你能想出过河的方法吗? 543、141.题目难度:中等 一天,一家文具店的老板决定销售两种卡片。他每种卡片各买 30 张,第一种卡片卖 1 元钱 2 张,另外一种卖 1 元钱 3 张。这 60 张很快就全卖完了。 老板记了下帐:30 张 1 元钱两张的卡片收入 15 元。30 张 1 元钱 3 张的卡片收入 10 元,总共 25 元。 老板又拿出 60 张卡片放在柜台上。他发现不知道什么时候两种可片已经混在一起。生意太忙了,他懒得 1 张张分 开卡片。老板突然想到,60 张卡片中,有 30 张是 1 元钱 2 张,还有 30 张是 1 元钱 3 张,何不把 60 张卡片放在 一起,按 2 元钱 5 张来卖?还不是一样吗?。 最后 60 张卡片卖完了,可是老板点钱时发现只有 24 元,不是 25 元。这让他很奇怪。 问:这一元钱哪里去了? 543、题目难度:中等 黑,白两只渡船在一条河的南北两岸同时相向渡河. 假设河的宽度在各处不变,渡船的航线和两岸成直角,并且两只船的航速都保持不变,但一只船的航速要比另一只要 快一些.他们在河中的某处擦肩而过,此处离较近的南岸有720米.靠岸后两只船都分别停靠了10分钟然后返回.在返 回途中,两只船在离北岸 400 米处再次相遇. 问:这条河有多宽? 544、题目难度:中等 一天,有三个人去旅游。到吃中午饭时,他们把身上的香肠拿出来分。 A 有 4 根香肠,B 有 7 根香肠,结果 C 忘记了带吃的了。就只好吃他们的,C 为了不显得自己白吃就拿出了 11 元 钱,分给了 A 和 B。这样,就显示出平等了 但是,接下来两人要平分 11 元钱和三人分 11 根香肠让他们为难了。 问:你知道怎么分吗? 545、题目难度:困难 有个人,步行去一个地方采山药,采回来卖。 在旅途中,他空手前往时的速度为每小时 5 公里,回来背着山药时的速度为每小时 3 公里。往返总共用了 7 个小 时。 现在问:算出这人他走了多远的距离吗? 546、题目难度:困难 有个人表达能力差,他现在要介绍自己在公司的情况。 他这样说:我和 A,B,C 三人之间是直接上下级关系,A 和 D 有工作联系,B 和 E 是直接上下级关系,C 和 F 有 工作联系,D 和 E 工作联系多,E 和 F 工作联系也多。我常常给 A 和 C 布置工作,E 给 F 布置工作。我则从 B 那 里接受工作任务。 听完这段描述,你知道他们的关系吗?谁又是最高领导者? 547、题目难度:超级难题 A 和 B 是好朋友,有天,A 家里的钟没电池了,换好新电池后,A 想去 B 家看下正确时间.于是 A 到了 B 家,在 B 家玩了 一阵。走的时候看了下准确的时间.但是 A 回家要一定的时间,怎么才能在回家后,把钟调到准确时间了? 548、题目难度:中等 题目类型:字谜 包拯有一个儿子,从小都喜欢猜谜,包拯经常和他一起猜谜,来开发智力。 有一天,父子俩又玩起猜谜游戏。包拯先出了一个谜: 一宅分成两院,五男二女当家,两家打得乱如麻,打到清明方罢。 儿子想了想,他也说了个谜: 古人留下一座桥,一边多来一边少,少的要比多的多,多的反比少的少。 包拯一听,儿子正聪明,谜底竟然和自己的一样,都是打一样算帐的工具。你知道他们说的工具是什么吗? 549、题目难度:简单 题目类型:侦探推理 有位蒙面占卜师在自己家中被人杀死了,死因是喝了有毒的咖啡,蒙面占卜师的长相一直是个谜,从未对外公开 过,死时仍然戴着面具,经过调查,发现有三个人可疑: 占卜师的情人:洋子 占卜师的弟弟:隆一 来请占卜师占卜的商人:山村 每人都要杀人动机,因为占卜师已经厌倦洋子,准备另寻新欢。而他弟弟,占卜师向他弟弟隆一借了一大笔钱不 还,他弟弟怀恨在心。事实上杀人现场的金柜也被洗劫一空,所以山村也有重大嫌疑。因为他在占卜师死的当天 去过他家占卜。 根据上面的内容,你知道谁是凶手吗? 550、题目难度:简单 题目类型:文字把戏 古代有一个名厨师,他能使烹调技术入诗入画. 有位穷秀才知道后,很不服气,他来到饭馆,说:我只有一枚铜板,请准备三道菜.店小二一听傻了,一枚铜板最多只能两 个鸡蛋,这不是存心整人吗?厨师听罢一笑:无妨,无妨.稍等片刻.没一会儿,店小二把菜拿上来,的确是三菜一汤:第一 道菜是来年各个炖蛋黄,碗里还放了几根绿葱。第二道菜是把熟的蛋白切成丝,放在盘子里排成一行,下面垫一片 菜叶。第三道菜是一碟炒蛋白,碟正中有一个长方形图案。第四道菜是一碗清汤,上面浮着几片蛋壳。你知道这 四道菜应了哪首诗的四句话吗? 551、题目难度:中等 题目类型:数学逻辑 最近我换了新号码了,这个号码很好记。因为这个号码和我以前的号码一样,都是 4 位数,其次这个号码是我原 来那个号码的 4 倍,最后这个号和我以前那个号码正好是颠倒的。你知道这个号是多少吗? 552、题目难度:中等 题目类型:数学逻辑 下面这个数学证明的过程是每个上过初中的人都看得懂的,而推出结论是 1=2,大家都知道是错误的,那么错误 的环节在哪里?(解释:这种 b(2),意思是 b 的平方) 已知:a=b,且 a>0,b>0,求证:1=2 证明: (1)因为 a>0,b>0 (2)又因为 a=b (3)所以 aXb=bXb=b(2) (4)所以 aXb—a(2)=b(2)—a(2) (5)所以 a(b—a)=(b+a)X(b—a) (6)所以 a=(b+a) (7)又因为 a=b (8)所以 a=2a (9)所以 1=2 553、题目难度:困难 题目类型:谋略思维 有个国家,人们都可以制造不同等级的毒药。这些毒药都是致命的,唯一的解药则是更强的毒药。一天,A 和 B 要进行毒药对决,看谁的毒药更厉害。规则很简单双方都各自带一瓶自己调出的毒药,先把对方的毒药喝一半, 在喝自己的毒药。之后活着的人就是更厉害的毒药。 因为 B 的毒药是世界上最毒的,A 知道自己的毒药比不上 B,那么 A 想要赢 B,该怎么办了? 554、题目难度:简单 题目类型:名校测试 下面的动物中,4 种动物都有自己唯一的特点。而剩一种动物没有自己唯一的特点,你知道是哪个吗? 1.牛 2.老虎 3.蛇 4.熊 5.狗 555、题目难度:简单 题目类型:侦探推理 某天,在一堵围墙外的大数下发现了一具尸体.死者赤着脚,脚底板有几条从脚趾到脚跟的纵向伤痕,而且还有血迹. 旁边有一双拖鞋. 有人推理:死者是想爬树入围墙,但不小心被摔死了,他可能想去行窃. 但是老练的侦探科长却说:不,这个人不是从树上摔下来的,而是被人谋杀后放在这里,凶手是想把被害者伪装成不小 心摔死的假象. 你知道为什么吗? 556、题目难度:简单 题目类型:数学逻辑 有一只羊,狮子用 2 个小时吃完它,熊用 3 个小时吃完它,狼用 6 个小时吃完它.如果这 3 只野兽一起吃羊,用多少时间 才能把羊吃完? 557、题目难度:超级难题 题目类型:数学逻辑 (本题是李政道教授到中国科技大学讲学给少年班出的一道数学题,据说当时没有一个人做出来的) 有 5 只猴子发现一堆桃子,决定第二天来平分.第二天,第一只猴子先到,它左右分都分不开,就丢掉了了一颗,这样,恰 好可以分成 5 份,它就拿上自己的 1 份走了. 第 2,3,4,5 只猴子也先后来到,也遇到同样的问题,并且都不知道其它猴子已经来过,所以采用了同样的方法,都是丢掉 一颗后,恰好可以分成 5 份. 问:这堆桃子至少有多少颗? 558、题目难度:简单 题目类型:智力竞赛 以下 4 个太阳系的行星中,体积最小的行星是什么星? A.土星 B.木星 C.金星 D.海王星 559、题目难度:中等 题目类型:智力竞赛 下面的人物中,谁领导了 1936 年的一二·九学生爱国运动。 A.吴阶平 B.马三立 C.黄敬 D.焦菊隐 E.李光羲 560、题目难度:简单 题目类型:智力竞赛 下面四位是而战时美军著名将领的,请你指出谁不是五星上将? A.巴顿 B.艾森豪威尔 C.麦克阿瑟 D.马歇尔 561、题目难度:简单 题目类型:智力竞赛 下面四个选项中,哪个不是鲁迅作品中的人物 A.涓生 B.孔乙己 C.差不多先生 D.夏瑜 562、题目难度:困难 题目类型:智力竞赛 下面给出的 10 本书中有 5 本标错了作者的名字,请你指出来,并且写上正确作者的名字: 01.菜志忠的漫画《向左走,向右走》 02.J·K·罗琳的《哈利·波特》 03.安徒生的《格林童话》 04.鸟山明的漫画《哆啦 A 梦》 05.郑渊洁的《舒克和贝塔历险记》 06.格列佛的《鲁滨逊漂流记》 07.今晚报的《智力·头脑风暴》 08.马克·吐温的《海底两万里》 09.埃尔热的漫画《丁丁历险记》 10.柯南·道尔的《福尔摩斯侦探集》 563、题目难度:简单 题目类型:空间想象 一个船主招聘了一名水手,要求不高,只要求忠于职守即可.有一天,船主派这名水手夜里去看守明天要起程的船上货 物.第二天,水说对船主说:昨完我做了个梦,梦到今天有大风,最好不要起程.船主听了他的话,决定改日起程.结果那天 果然挂起了大风,那片海域的船全部沉没了.大家都向船主说:水手立了大功!应该嘉奖他.但是船主却把他抄鱿鱼了, 为什么? 564、题目难度:超级难题 题目类型:逻辑思维 某机场有完全相同的飞机若干.一油箱可供一架飞机绕地球半圈,每架飞机只有一个油箱,飞机之间可以相互加油(注 意是相互,没有加油机,并且加油时间忽略不计)为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几 架飞机?(所有飞机从同一机场起飞,而且必须安全返回机场,中途不准降落,中间没有飞机场) 565、题目难度:中等 题目类型:逻辑思维 在一个舞会,A 先生 B 小姐一见钟情,但他却不清楚 B 小姐有男朋友没。舞会共有 19 个人参加,来人具体情况如下: (1)有 7 个人是单独来的,其余都是和伴侣一起来的.和伴侣一起来的都已经结婚或订婚了. (2)凡是单独来参加舞会的女士都尚未订婚 (3)凡是单独来参加舞会的男士都处于订婚状态 (4)男士中,处于订婚状态的人数等于已结婚的人数 (5)单独来的已婚男士人数和单独来的未订婚男士人数相等 (6)已经结婚,处于订婚状态和未订婚这三种类型的女士中,B 小姐属于人数最多的那种类型. 未订婚的 A 先生有机会去追 B 小姐吗? 566、题目难度:中等 题目类型:逻辑思维 图:(X 代表未知) X X X X A X 如图,沿着商业街旁边的两边有 A,B,C,D,E,F 六家店.其中 A 店和其他店的位置有以下关系: 1.A 店的旁边是花店 2.书店的对面是花店 3.花店的隔壁是面包店 4.D 店的对面是 F 店 5.F 店的隔壁是酒吧 6.F 店与文具店在道路的同侧 问:A 店是什么店? 567、题目难度:简单 题目类型:侦探推理 某天,有人在 A 中学左边的巷子里发现一具尸体.经确认这是 B 银行的职员 Z 小姐.警方通过调查,了解到 Z 小姐在 前一日下午收到一条信息.而那个发短信的手机号码无法追踪到,只能确定是本市人.Z 小姐的手机通信录里记录的 称呼是男友.那条短信的内容是:今天 19 点 30 分在 A 中学左边巷子里见面.警方认为发这信息的男友嫌疑很大.但是 Z 小姐接触过三个男人:M 先生是 A 中学的实习老师,N 先生是航空公司的售票员,P 先生是行踪神秘的自由职业者. 你认为谁是凶手?为什么? 568、题目难度:困难 题目类型:空间想象 9 9 9 6 6 6 6 6 6 9 9 6 9 9 9 9 ? 6 9 6 9 9 9 9 6 9 6 6 6 6 6 6 6 9 9 6 6 9 9 9 9 6 9 9 6 6 9 9 9 9 6 9 9 6 6 9 9 9 9 6 9 6 9 6 9 9 9 9 6 6 9 9 6 6 6 6 6 6 9 9 9 问:第二排那个问号处(?)该填什么? 569、题目难度:中等 题目类型:数学逻辑 A,B,C 去探险,得了一些金沙.分别装在三个袋子里,第一个袋子里有 39 克,第二个袋子里有 35 克,最后一个袋子里有 19 克. 现在他们要平分这些金沙,那么每人应该分到 31 克. 问题是现在只有一个没有砝码的天平,怎样能把 93 克金沙平分成三份了? (要求:只能用 3 次天平) 570、题目难度:简单 题目类型:数学逻辑 A 是一家超市的收银员。一天,他在下班前查账的时候,却发现柜台的现金币账面少了 153 元钱。他知道实际收 的钱数是不会错的,只可能是在记账时弄错了,而且很可能是点错了小数点。如果你是 A,你怎么才能在几百笔 账中找到这个错数了? 571、题目难度:简单 题目类型:数学逻辑 一个寺院里有 100 个僧人,吃饭时大僧每人 3 个馒头,3 个小僧分 1 个馒头。问:大小和尚各有多少人? 572、题目难度:简单 题目类型:数学逻辑 公园要修筑 8 条笔直的小路,计划在小路的每个岔路口分别建造一座休闲亭或售货亭。问:公园里最多会设计出 多少个小路交叉口了? 573、题目难度:简单 题目类型:数学逻辑 有三个不是 0 的数字。他们的乘积与他们的和都是一样的。 请问:你知道是三个什么数吗? 574、题目难度:简单 题目类型:逻辑思维 有一个财主,他有 3 个女儿都已经出嫁了。大女儿每 5 天回一次娘家,二女儿每 4 天回一次娘家,小女儿每 3 天 回一次娘家。如果三个女儿从娘家同一天走后,至少再隔多少天才能再次相会? 575、题目难度:中等 题目类型:逻辑思维 有四个人想当预言家,一天他们一人说了个预言: A 预言 B 无论如何也成不了舞蹈家 B 预言 C 终将成为预言家 C 预言 D 不会成为演奏家 D 预言自己会嫁给一个叫 E 的人 他们 4 个人的预言当中,只有一个人的预言成真了。而正是这个人后来成为了预言家。其余三个人,一个当了舞 蹈家,一个当了宫廷总管,另一个当了演奏家. 你知道 A,B,C,D 最后都成为了什么吗?而 D 会嫁给 E 吗? 576、题目难度:困难 题目类型:思维推理 李太太问她的邻居刘奶奶的年龄有多大了,刘奶奶笑着告诉她:我 20 多岁就大学毕业,毕业几年后,我就到了一 个大学教书,现在已经教了 45 年了,我比我儿子大了 27 岁,现在我的年龄的个位数和十位数交换一下就是我儿 子的年龄。 请问:刘奶奶到底有多少岁? 577、题目难度:简单 题目类型:逻辑思维 有个天平,如果左边放 1 个苹果和 1 个梨子,右边放一个西瓜。这样就一样重 如果左边放一个苹果和一个西瓜,右边放四个梨子,这样也一样重。 如果只有以上三种水果,然后在左边放一个西瓜,一个苹果和两个梨子。 现在问,右边需要放什么才能两边一样重。 578、题目难度:中等 题目类型:文字把戏 年年岁岁花相拟,岁岁年年人不同。是一句脍炙人口的唐诗,现在将这两句诗改造成两个等式组成一个方程组: 01.年年+岁岁=花相拟 02.岁岁/年年=人/不同(/表示除号) 方程组中的汉字分别代表 0—9 中的一个数字,相同的汉字表示相同的数字,不同的汉字表示不同的数字。想下: 等式中的每个字代表哪个数字? 579、题目难度:中等 题目类型:空间想象 在一个装了很多水的大水缸里浮着一个小塑料盆,小塑料盆里装着一个铁球。 问:如果将这个铁球从小塑料盆里取出来直接放在水缸里,水缸的水面币刚才上升了还是下降了? 580、题目难度:中等 题目类型:文字把戏 在一个现代化农家小院里,父亲是个会计,父亲死后,留下了一笔财产。不过藏了起来,留下一个纸片上面写着 3. 问:通过以上信息你能想出遗产藏在那里吗? 581、题目难度:中等 题目类型:逻辑思维 A 的单位召开优秀员工表彰大会,A 获得了优秀员工奖。在领奖台上,他对站在旁边的 B 说:你看,获奖的的女同 事占总人数的三分之一。B 看了看,说:根本没怎么多,也就四分之一。 其实他们都没有说错,只是都忘记算自己了,而且 A 和 B 不是同一性别。你知道台上有多少名员工吗?男女员工 各多少名? 582、题目难度:中等 题目类型:文字把戏 用三个字来描述于下列词语有关的事物:广告,荧光粉,维多利亚女王,哨兵。 583、题目难度:困难 题目类型:文字把戏 以前有个很坏的地主办大寿,有位秀才送去一副对联作为贺礼: 一二三四五六七 孝悌忠信礼仪廉 地主看后很高兴,就把它挂在正堂的中央。当有个有学问的人看了后向地主解释,地主当场气昏过去。原来这副 对联是骂人的。你知道是什么意思吗? 584、有一个长方形蛋糕,切掉了长方形的一块(大小和位置随意),你怎样才能直直的一刀下去,将剩下的蛋糕 切成大小相等的两块? 将完整的蛋糕的中心与被切掉的那块蛋糕的中心连成一条线。这个方法也适用于 立方体!请注意,切掉的那块蛋糕的大小和位置是随意的,不要一心想着自己切生日蛋糕的方式,要跳出这个圈子。 585、有三筐水果,一筐装的全是苹果,第二筐装的全是橘子,第三筐是橘子与苹果混在一起。筐上的标签都是骗 人的,(比如,如果标签写的是橘子,那么可以肯定筐里不会只有橘子,可能还有苹果)你的任务是拿出其中一筐, 从里面只拿一只水果,然后正确写出三筐水果的标签。 从标着“混合”标签的筐里拿一只水果,就可以知道另外两筐装的是什么水果了。 586、你有八个球。其中一个有破损,因此比其他球轻了一些。你有一架天平用来比较这些球的重量。如果只称两 次,如何找出有破损的那个球? 587、为什么下水道的井盖是圆的? 方形的对角线比边长!1 圆形的井盖可以由一个人搬动,因为它可以在地上滚。2 圆形的井盖不必为了架在井口上而旋转它的位置。 588、你让一些人为你工作了七天,你要用一根金条作为报酬。金条被分成七小块,每天给出一块。如果你只能将 金条切割两次,你怎样分给这些工人? 589、一列时速 15 英里的火车从洛杉矶出发,驶向纽约。另外一列时速 20 英里的火车从纽约出发,驶向洛杉矶。 如果一只鸟以每小时 25 英里的速度飞行,在同一时间从洛杉矶出发,在两列火车之间往返飞行,到火车相遇时为 止,鸟飞了多远? 想想火车的相对速度。 590、你有两个罐子,分别装着 50 个红色的玻璃球和 50 个蓝色的玻璃球。随意拿起一个罐子,然后从里面拿出一 个玻璃球。怎样最大程度地增加让自己拿到红色球的机会?利用这种方法,拿到红色球的几率有多大? 591、假设你站在镜子前,抬起左手,抬起右手,看看镜中的自己。当你抬起左手时,镜中的自己抬起的似乎是右 手。可是当你仰头时,镜中的自己也在仰头,而不是低头。为什么镜子中的影像似乎颠倒了左右,却没有颠倒上 下? 592、你有 5 瓶药,每个药丸重 10 克,只有一瓶受到污染的药丸重量发生了变化,每个药丸重 9 克。给你一个天 平,你怎样一次就能测出哪一瓶是受到污染的药呢? 1 给 5 个瓶子标上 1、2、3、4、5。 2 从 1 号瓶中取 1 个药丸,2 号瓶中取 2 个药丸,3 号瓶中取 3 个药丸,4 号瓶中取 4 个药丸,5 号瓶中取 5 个药丸。 3 把它们全部放在天平上称一下重量。 4 现在用 1×10+2×10+3×10+4×10+5×10 的结果减去测出的重量。 5 结果就是装着被污染的药丸的瓶子号码。 593、如果你有一个容量为 5 夸脱的水桶和一个容量为 3 夸脱的水桶,怎样准确地量出 4 夸脱的水? 594、在开汽车的锁时,应该往哪个方向旋转钥匙? 595、如果你可以移动 50 个州中的任何一个,你会挑哪个,为什么? 596、有 4 条狗(4 只蚂蚁或 4 个人)分别在一个广场的 4 个角落里。突然,它们同时以同样的速度追赶在自己顺 时针方向的一个人,而且会紧追这个目标不放。它们需要多少时间才能相遇,相遇地点在哪里? 597、从空中放下两列火车,每列火车都带着降落伞,降落到一条没有尽头的笔直的铁道上。两列火车之间的距离 不清楚。两列车都面向同一个方向。在落地后,降落伞掉在地上,与火车分离。两列火车都有一个微芯片,可以 控制它们的运动。两个芯片是相同的。两列火车都不知道自己的位置。你需要在芯片中写入编码,让这两列火车 相遇。每行编码都有一定的执行命令的时间。 你能使用以下指令(而且只能用这些指令): MF—让火车朝前开 MB—让火车朝后开 IF(P)—如果火车旁边有降落伞,这个条件就得到了满足。 598、在一个与外界不往来的村庄中,住了三个人。这三个人都不能说话,但都很聪明。这村庄人的头发,不是黑 色就是红色。 这村庄也没有任何可经由反射而看到自己的物体(如:镜子,湖水)所以这三人都无法得知自己头 发的颜色。 这村庄有个习俗:知道自己头发的颜色后再自杀,可以快乐的上天堂;若猜错自己头发颜色就自杀,那就会痛苦 地下地狱。 这三个人都很想上天堂,但都苦于无法得知自己的发色而迟迟无法进行。 这三人每天中午都会在广 场上聚集,彼此相望,希望能得知自己的头发颜色。 这种困境一直到一个外地人的介入而打破。 有一天,一个外地人进入了这村庄,在广场碰到了这三人, 随口说了一句话:「你们三人至少有一个是红头发。」 说完便离开村庄了。 当天三人听完这句话,都纷纷回家苦思。 第二天中午,三人依旧一起在广场见面。第二天 晚上回去,就有两人自杀成功。 第三天中午,只剩一个人到广场。此人回去后也自杀成功了。 请问:这三人的头发分别为什么颜色? (说明理由) 599、有三扇门可供选择,其中一扇门后面是汽车,另两扇门后面是山羊。你当然想选中汽车。主持人让你随便选。 比如,你选中了一号门。于是,主持人打开了后面是山羊的一扇门,比如是三号门。现在主持人问你:“为了以较 大的概率选中汽车,你是坚持选一号门,还是愿意换选二号门?” 条件概率:全概率和贝叶斯公式解 游戏开始,设 P(X)为 A、B、C 三道门后面有车的概率,则 P(A)=P(B)=P©=1/3 假定:游戏者任选了一道门 A,而主持人(HOST)打开一道后面是羊的门,事实上有两种情况。 1. 主持人了解所有门后面的东东,他一定要打开一扇“羊”门 如果车在 A 门后面,主持人有 B、C 两种选择,打开 C 门(“羊”门)的概率为 P(Host opens C|A) = 1/2 如果车在 B 门后面,主持人没有选择,只能打开 C 门 P(Host opens C|B) = 1 如果车在 C 门后面,主持人一样没得选择,绝对不能开 C 门 P(Host opens C|C) = 0 所以,主持人打开 C 门的概率为 P(Host opens C) = P(A)*P(H.o. C|A) + P(B)*P(H.o. C|B) + P©*P(H.o. C|C) = 1/6 + 1/3+ 0 = 1/2 根据贝叶斯公式,在主持人打开 C 门的条件下,A、B 两门后面是车的概率分别为 P(A|Host opens C) = P(A)*P(Host opens C|A) / P(Host opens C) = (1/6) / (1/2) = 1/3 P(B|Host opens C) = P(B)*P(Host opens C|B) / P(Host opens C) = (1/3) / (1/2) = 2/3 这就是为什么要换二号门的原因。 2. 主持人和游戏者一样蒙在鼓里,他是碰巧打开一扇“羊”门,那么 如果车在 A 门后面,主持人有 B、C 两种选择,打开 C 门的概率为 P(Host opens C|A) = 1/2 如果车在 B 门后面,主持人一样有 B、C 两种选择,打开 C 门的概率还是 P(Host opens C|B) = 1/2 如果车在 C 门后面,主持人还是有 B、C 两种选择,只是打开 C 门不可能看到羊 P(Host opens C|C) = 0 所以,主持人打开 C 门见到羊的概率为 P(Host opens C) = P(A)*P(H.o. C|A) + P(B)*P(H.o. C|B) + P©*P(H.o. C|C) = 1/6 + 1/6+ 0 = 1/3 根据贝叶斯公式,在主持人打开 C 门见到羊的条件下,A、B 两门后面是车的概率分别为 P(A|Host opens C) = P(A)*P(Host opens C|A) / P(Host opens C) = (1/6) / (1/3) = 1/2 P(B|Host opens C) = P(B)*P(Host opens C|B) / P(Host opens C) = (1/6) / (1/3) = 1/2 在这种情况下,用一个简单的条件概率式 P(A|C.sheep)一样可以得出 1/2 的结果。这就是“不换”的原因。遗憾的是,从游戏的设置 来看,主持人不知情的可能性很小。 3、 另一种思路,玛丽莲问题的拓展 在三道门的玛丽莲问题中,对游戏者的策略进行观察,他要赢得汽车,可以通过如下途径: 1.第一次选错,主持人打开一道门之后换选 第一次选错的概率为 2/3,然后,换选选对的概率为 100%,就是说,第一次选择之后再换选,得奖得概率为 2/3*100%=2/3 2.第一次选对,主持人打开一道门之后不换。 第一次选对的概率为 1/3,不换则得奖率 100%。1/3*100%=1/3 就是“不换”策略的胜算。 这个方法可以推广到三道门以上的玛丽莲问题拓展,譬如,在四道门的游戏里,主持人依次打开两扇“羊门”,每一次游戏者都有权 选择“换”或者“不换”。游戏共有三个步骤,步骤一是“初选”,在步骤二和步骤三,分别有“不换——不换”、“不换——换”、“换 ——不换”和“换——换”四种策略组合,中奖可能分别为: 1/4 3/4 (3/4)*(1/2)=3/8 1/4(换两次之后换回初选的得奖率)+(3/4)*(1/2)(换两次之后不换回初选)=5/8 可见,选择“不换——换”得策略最有利。 由此可以推广到 N 道门的游戏中,游戏者最有利的对策是一直坚持不换,直到只剩两扇门还没有打开时再换。 600、一个粗细均匀的长直管子,两端开口,里面有 4 个白球和 4 个黑球,球的直径、两端开口的直径等于管子的 内径,现在白球和黑球的排列是 wwwwbbbb,要求不取出任何一个球,使得排列变为 bbwwwwbb。 601、一只蜗牛从井底爬到井口,每天白天蜗牛要睡觉,晚上才出来活动,一个晚上蜗牛可以向上爬 3 尺,但是白 天睡觉的时候会往下滑 2 尺,井深 10 尺,问蜗牛几天可以爬出来? 602、在一个平面上画 1999 条直线最多能将这一平面划分成多少个部分? 603、在太平洋的一个小岛上生活着土人,他们不愿意被外人打扰,一天,一个探险家到了岛上,被土人抓住,土 人的祭司告诉他,你临死前还可以有一个机会留下一句话,如果这句话是真的,你将被烧死,是假的,你将被五 马分尸,可怜的探险家如何才能活下来? 604、怎样种四棵树使得任意两棵树的距离相等 605、27 个小运动员在参加完比赛后,口渴难耐,去小店买饮料,饮料店搞促销,凭三个空瓶可以再换一瓶,他 们最少买多少瓶饮料才能保证一人一瓶? 606、有一座山,山上有座庙,只有一条路可以从山上的庙到山脚,每周一早上 8 点,有一个聪明的小和尚去山下 化缘,周二早上 8 点从山脚回山上的庙里,小和尚的上下山的速度是任意的,在每个往返中,他总是能在周一和 周二的同一钟点到达山路上的同一点。例如,有一次他发现星期一的 8 点 30 和星期二的 8 点 30 他都到了山路靠 山脚的 3/4 的地方,问这是为什么? 607、有两根不均匀分布的香,每根香烧完的时间是一个小时,你能用什么方法来确定一段 15 分钟的时间? 608、村子中有 50 个人,每人有一条狗。在这 50 条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个 人可以观察其他的 49 条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通 知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权 利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声,问有几条病狗,如何推算得出? 609、在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分那个 开关控制那一盏灯 610、你落入一个迷宫,回旋不断的走廊。手里有一台堆满灰尘的手提电脑,可以无线上网。周围,许多无生命的 侏儒徘徊走动。这种情况下,你会如何做? A)无目的地徘徊,不停走入死胡同,然后被迷宫里面的妖怪吃掉。 B)用手提电脑当铲子,打穿地板直接进入游戏下一关。 C)玩网络游戏《魔法奇兵》,直到电池耗尽。 D)利用计算机,找到迷宫的节点,发现准确出路。 E)把你的简历寄给 Google,告诉迷宫里领头的妖怪,你要退出游戏。然后,发现你回到了现实世界 611、你在 Google 工作的第一天,发现你同寝室的室友,曾写过一本书。你研究生一年级时,这本书是你最重要 的参考资料。你会:A)求他帮你签个名。B)不改坐姿,却放轻打字声音,尽量避免影响他。 C)把你每天吃的麦片和咖啡,留给他吃。 D)引用他那本书中间,你最喜欢的程式,告诉他这则方程给了你多少启发。 E)让他看看,你可以用不到 34 句语句,完成一个高难度程序。 612、下午 2 点,旧金山著名的湾区。你可以选择去阳光海岸、国家公园的红杉林里徒步旅行,或者参观城市里的 文化景观。你会怎么做? 613、以下哪个最好地表达了 Google 的企业文化? A)“我感觉挺幸运” B)“别干坏事” C)“哦,我已经完成了任务” D)“你身边 10 米以内,必定能找到食物” E)以上皆是 614、一个技术研究小组的最优化人员组合是几个人?一旦超过这个数字,每增加一个研究员,平均生产力就会相 应下降:A)1B)3C)5D)11E)24 615、在下面的数列中,下一个数字是多少:10, 9, 60, 90, 70, 66,? (1)96 (2)10 的 100 次方 (3)以上皆是 (4)以上皆不是 616、有这样一个函数,对于任意整数 n,都能返回写出 0 到 n 之间出现“1”的个 数。例如,f(13)=6。请注意 f(1)=1,那么下一个能实现 f(n)=n 的最大数字 是什么? 617、下列哪个团体没有在 Google 员工中形成? (1)女子篮球 (2)淡黄色爱好者 (3)Cricketeers (4)诺贝尔奖获得者 (5)葡萄酒俱乐部 Oracle 数据库部分 618、ORA-01555 的应对方法? 619、解释$ORACLE_HOME 和$ORACLE_BASE 的区别? 620、如何判断数据库的时区? 621、解释 GLOBAL_NAMES 设为 TRUE 的用途 622、如何加密 PL/SQL 程序? 623、解释 FUNCTION,PROCEDURE 和 PACKAGE 区别 624、解释 TABLE Function 的用途 625、举出 3 种可以收集 three advisory statistics 626、Audit trace 存放在哪个 oracle 目录结构中? 627、解释 materialized views 的作用 628、当用户进程出错,哪个后台进程负责清理它 629、哪个后台进程刷新 materialized views? 630、如何判断哪个 session 正在连结以及它们等待的资源? 631、描述什么是 redo logs 632、如何进行强制 LOG SWITCH? 633、举出两个判断 DDL 改动的方法? 634、Coalescing 做了什么? 635、TEMPORARY tablespace 和 PERMANENT tablespace 的区别是? 636、创建数据库时自动建立的 tablespace 名称? 637、数据库 1,2,3 范式的概念与理解 638、简述 oracle 行触发器的变化表限制表的概念和使用限制,行触发器里面对这两个表有什么限制。 639、oracle 临时表有几种。 临时表和普通表的主要区别有哪些,使用临时表的主要原因是什么? 640、怎么实现:使一个会话里面执行的多个过程函数或触发器里面都可以访问的全局变量的效果,并且要实现会 话间隔离? 641、aa,bb 表都有 20 个字段,且记录数量都很大,aa,bb 表的 X 字段(非空)上有索引, 请用 SQL 列出 aa 表里面存在的 X 在 bb 表不存在的 X 的值,请写出认为最快的语句,并解译原因。 642、简述 SGA 主要组成结构和用途? 643、什么是分区表?简述范围分区和列表分区的区别,分区表的主要优势有哪些? 644、背景:某数据运行在 archivelog,且用 rman 作过全备份和数据库的冷备份, 且所有的归档日志都有,现控制文件全部损坏,其他文件全部完好,请问该怎么恢复该数据库,说一两种方法。 645、用 rman 写一个备份语句:备份表空间 TSB,level 为 2 的增量备份。 646、有个表 a(x number(20),y number(20))用最快速高效的 SQL 向该表插入从 1 开始的连续的 1000 万记录 647、解释冷备份和热备份的不同点以及各自的优点 648、你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢? 649、如何转换 init.ora 到 spfile? 650、解释 data block , extent 和 segment 的区别(这里建议用英文术语) 651、给出两个检查表结构的方法 652、怎样查看数据库引擎的报错 653、比较 truncate 和 delete 命令 654、使用索引的理由 655、给出在 STAR SCHEMA 中的两种表及它们分别含有的数据 656、FACT Table 上需要建立何种索引? 657、给出两种相关约束? 658、如何在不影响子表的前提下,重建一个母表 659、解释归档和非归档模式之间的不同和它们各自的优缺点 660、如何建立一个备份控制文件? 661、给出数据库正常启动所经历的几种状态 ? 662、哪个 column 可以用来区别 V$视图和 GV$视图? 663、如何生成 explain plan? 664、如何增加 buffer cache 的命中率? 665、请说明实例与数据库的关系;表空间和数据文件的关系 666、varchar2,char 两种数据类型有什么区别,如果库表某字段输入"ABC"后储存,该 字段数据类型分别为 varchar2(10,char(10)存储字节长度以及内容有何区别? 667、talbe : pub(pub_code char(2),pub_name varchar2(32)) book(book_code char(8),book_name varhcar2(128),pub_code char92),author_code char(4),book_mem varchar2(128)) author(author_code char(4),author_name varchar2(10),sex char(1), age number(3),dir varchar2(64)) auth_list(auth_date date,author_code char(4)) 在 PL/SQL 中有以下两种字义 v_book_row book%rowtype; v_book_code book.bank_code%type; 请说明 v_book_row,v_book_code 变量的含义以及数据类型 668、Tnsnames.ora,LISTENER.ORA 两个文件作用? 669、请看以下存储过程 begin begin <语句 1> exception when others dbms_output.put_line('错误 1'); end; begin <语句 2> dbms_output.putline('错误 2'); end; exception when others then dbms_output.put_line("错误 3"); end; 请问,当<语句 1>,<语句 2>出错时,该存储过程输出字符串分别是什么? 670、找出"作者"库表中没有出现在"获奖名单"库表中的所有作者信息的 SQL 语句,(提示:使用 NOT IN,NOT EXISTS,以及外部连接(+)三种方法),并说明那种方法是不优化的 出版社: 出版社代码 char(2),出版社名称 varchar2(32) 图书: 图书编号 char(8),图书名称 varchar2(128),出版社代码 char(2),作者代号 char(4),图书简介 varchar2(128) 作者: 作者代号 char(4),作者名称 varchar2(10),性别 char(1),年龄 number(3),文学方向 varchar2(64) 获奖名单: 获奖日期 date,获奖人员 char(4) 671、请阐述归档日志模式与非归档日志模式的区别以及对数据库备份恢复能力的影响 672、ORACLE 数据库表 METER 中存在伪列 Rowid,请利用 ROWID 来编写以下语句:从以下记录中找 到唯一的任一条记录并更新该记录 FLAG 为"Y". MONTH USER_NO ASSST_NO FLAG 2004-7-1 1000009 10A0001 N 2004-7-1 1000009 10A0001 N 2004-7-1 1000009 10A0001 N 673、改写函数为存储过程 create or replace function two_number(v_one number,v_two number) return number is begin return v_one*v_two end; 请将该函数改写为存储过程,注意传值参数如何设置 674、创建用户时,需要赋予新用户什么权限才能使它联上数据库 675、如何在 tablespace 里增加数据文件 676、如何变动数据文件的大小 677、哪个 VIEW 用来检查数据文件的大小? 678、哪个 VIEW 用来判断 tablespace 的剩余空间 679、如何判断谁往表里增加了一条纪录? 680、如何重构索引? 681、解释什么是 Partitioning(分区)以及它的优点 682、你刚刚编译了一个 PL/SQL Package 但是有错误报道,如何显示出错信息? 683、如何搜集表的各种状态数据 684、如何启动 SESSION 级别的 TRACE 685、IMPORT 和 SQL*LOADER 这 2 个工具的不同点 686、用于网络连接的 2 个文件? 687、在 MS SQL Server 中,用来显示数据库信息的系统存储过程是( ) A sp_ dbhelp B sp_ db C sp_ help D sp_ helpdb 688、SQL 语言中,删除一个表的命令是( ) A DELETE B DROP C CLEAR D REMORE 689、关系数据库中,主键是(__) A、为标识表中唯一的实体 B、创建唯一的索引,允许空值 C、只允许以表中第一字段建立 D、允许有多个主键的 690、在 Transact-SQL 语法中,SELECT 语句的完整语法较复杂,但至少包括的部分(1___),使用关键字(2___) 可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是(3___),如果在 SELECT 语句中使用聚合函 数时,一定在后面使用(4___)。 ⑴ A、SELECT,INTO B、SELECT,FROM C、SELECT,GROUP D、仅 SELECT ⑵ A、DISTINCT B、UNION C、ALL C、TOP ⑶ A、JOIN B、UNION C、INTO C、LIKE ⑷ A、GROUP BY B、COMPUTE BY C、HAVING D、COMPUTE 691、语句 DBCC SHRINKDATABASE (Sample, 25)中的 25 表示的意思是 A、25M B、剩余占整个空间的 25% C、已用空间占整个空间的 25% D、以上都不对 692、你是一个保险公司的数据库开发人员,公司的保单信息存储在 SQL Server 2000 数据库中,你使用以下脚本 建立了一个名为 Policy 的表: CREATE TABLE Policy ( PolicyNumber int NOT NULL DEFAULT (0), InsuredLastName char (30) NOT NULL, InsuredFirstName char (20) NOT NULL, InsuredBirthDate datetime NOT NULL, PolicyDate datetime NOT NULL, FaceAmount money NOT NULL, CONSTRAINT PK_Policy PRIMARY KEY (PolicyNumber) ) 每次公司销售出一份保单,Policy 表中就增加一条记录,并赋予其一个新的保单号,你将怎么做? a.建立一个 INSTEAD OF INSERT 触发器来产生一个新的保单号,并将这个保单号插入数据表中。 b.建立一个 INSTEAD OF UPDATE 触发器来产生一个新的保单号,并将这个保单号插入数据表中。 c.建立一个 AFTER UPDATE 触发器来产生一个新的保单号,并将这个保单号插入数据表中。 d.用 AFTER UPDATE 触发器替代 DEFAULT 约束条件产生一个新的保单号,并将这个保单号插入数据表中。 693、在 SQL 语言中,如果要建立一个工资表包含职工号,姓名,职称。工资等字段。若要保证工资字段的取值 不低于 800 元,最合适的实现方法是: A。在创建工资表时为‖工资―字段建立缺省 B。在创建工资表时为‖工资―字段建立检查约束 C。在工资表建立一个触发器 D。为工资表数据输入编写一个程序进行控制 694、Select 语句中用来连接字符串的符号是______. A. ―+‖ B. ―&‖ C.―||‖ D.―|‖ 695、你是一个出版公司的数据库开发人员,对特定的书名的每天的销售情况建立了如下的存储过程: CREATE PROCEDURE get_sales_for_title title varchar(80), @ytd_sales int OUTPUT AS SELECT @ytd_sales = ytd_sales FROM titles WHERE title = @title IF @@ROWCOUNT = 0 RETURN(-1) ELSE RETURN(0) 另外建立了一个脚本执行这个存储过程,如果执行成功,将返回对应于书名的每天的销售情况的报表,如果执行 失败,将返回―No Sales Found‖,怎样建立这个脚本? A. DECLARE @retval int DECLARE @ytd int EXEC get_sales_for_title ‗Net Etiquette‘, @ytd IF @retval < 0 PRINT ‗No sales found‘ ELSE PRINT ‗Year to date sales: ‘ + STR (@ytd) GO B. DECLARE @retval int DECLARE @ytd int EXEC get_sales_for_title ‗Net Etiquette‘, @ytd OUTPUT IF @retval < 0 PRINT ‗No sales found‘ ELSE PRINT ‗Year to date sales: ‘ + STR (@ytd) GO C. DECLARE @retval int DECLARE @ytd int EXEC get_sales_for_title ‗Net Etiquette‘,@retval OUTPUT IF @retval < 0 PRINT ‗No sales found‘ ELSE PRINT ‗Year to date sales: ‘ + STR (@ytd) GO D. DECLARE @retval int DECLARE @ytd int EXEC @retval = get_sales_for_title ‗Net Etiquette‘, @ytd OUTPUT IF @retval < 0 PRINT ‗No sales found‘ ELSE PRINT ‗Year to date sales: ‘ + STR (@ytd) GO 696、如果设计的表不符合第二范式,可能会导致_______,________,_______。 697、SQL是由_______语言,________语言,_______语言组成。 698、SQL Server 在两个安全级上验证用户,分别是______________,_____________________。 699、自定义函数由___________函数,_______________函数,___________________函数组成。 700、备份策略的三种类型是__________备份,_______________备份,___________________备份组成。 701、启动一个显式事务的语句为__________,提交事务的语句为__________,回滚事务的语句为__________ 702、表的每一行在表中是惟一的实体属于__________完整性,使列的输入有效属于__________完整性,两个表的 主关键字和外关键字的数据应该对应一致属于__________完整性。 703、 在帮助中[ ,...n ] 意思是什么? 704、请简述一下第二范式 705、现有 1 销售表,它们结构如下:(4分) id int (标识号) codno char(7) (商品编码) codname varchar(30) (商品名称) spec varchar(20) (商品规格) price numeric(10,2) (价格) sellnum int (销售数量) deptno char(3) (售出分店编码) selldate datetime (销售时间) 要求:写出查询销售时间段在 2002-2-15 日到 2002-4-29 之间,分店编码是 01 的所有记录 706、写一个存储过程,要求传入一个表名,返回该表的记录数(假设传入的表在数据库中都存在) 707、请简述 UPDATE 触发器如何工作原理。 708、使用一条 SQL 语句找到重复的值及重复的次数:有一数据表 ZD_ks,其中有字段 BM,MC,。。。,请查询出 在 ZD_ks 中 BM 有重复的值及重复的次数,没有的不要列出。如下表: BM DUPCOUNT 001 3 002 2 709、表 1 student 学生信息表 ID int 学生编号 Name varchar 学生姓名 Sex bit 性别(男 0 女 1) Class int 班级编号 表 2 schedule 课程信息表 ID int 课程编号 Name varchar 课程名称 表 3 Grade 成绩信息表 ID int 自动编号 UID int 学生编号 SID int 课程编号 Num int 考试成绩 (a)求各班的总人数 (b)求 1 班女生和男生的平均成绩 (c)各班"数据结构"(课程名称)不及格的人数 710、本题用到下面三个关系表: CARD 借书卡。 CNO 卡号,NAME 姓名,CLASS 班级 BOOKS 图书。 BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY 库存册数 BORROW 借书记录。 CNO 借书卡号,BNO 书号,RDATE 还书日期 备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。 要求实现如下 15 个处理: 1.找出借书超过 5 本的读者,输出借书卡号及所借图书册数。 2.查询借阅了"水浒"一书的读者,输出姓名及班级。 3.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。 4.查询书名包括"网络"关键词的图书,输出书号、书名、作者。 5.查询现有图书中价格最高的图书,输出书名及作者。 6.查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。 7.将"C01"班同学所借图书的还期都延长一周。 8.从 BOOKS 表中删除当前无人借阅的图书记录。 9.在 BORROW 表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者 的借阅记录保存在 BORROW_SAVE 表中(注 ORROW_SAVE 表结构同 BORROW 表)。 10.建立一个视图,显示"力 01"班学生的借书信息(只要求显示姓名和书名)。 11.查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出 711、SQL 语言是( B)的语言,容易学习 。 A.过程化 B. 非过程化 C.格式化 D. 导航式 712、SQL 语言的数据操纵语句包括 SELECT、INSERT、UPDATE、DELETE 等。其中最重要的,也是使用最频 繁的语句是(A ) 。 A. SELECT B. INSERT C. UPDATE D. DELETE 713、在视图上不能完成的操作是( C) 。 A. 更新视图 B. 查询 C. 在视图上定义新的表 D. 在视图上定义新的视图 714、SQL 语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER 语句 是实现哪种功能( C)。 A. 数据查询 B. 数据操纵 C. 数据定义 D. 数据控制 715、SQL 语言中,删除一个视图的命令是(B )。 A.DELETE B.DROP C.CLEAR D.REMOVE 716、在 SQL 语言中的视图 VIEW 是数据库的( A) 。 A. 外模式 B. 模式 C. 内模式 D. 存储模式 7. 下列的 SQL 语句中,(D )不是数据定义语句。 A. CREATE TABLE B. DROP VIEW C. CREATE VIEW D. GRANT 717、若要撤销数据库中已经存在的表 S,可用( C)。 A. DELETE TABLE S B. DELETE S C. DROP TABLE S D. DROP S 718、若要在基本表 S 中增加一列 CN(课程名),可用( C)。 A.ADD TABLE S(CN CHAR(8)) B.ADD TABLE S ALTER(CN CHAR(8)) C.ALTER TABLE S ADD(CN CHAR(8)) D.ALTER TABLE S (ADD CN CHAR(8)) 719、学生关系模式 S( S#,Sname,Sex,Age), S 的属性分别表示学生的学号、姓名、性别、年龄。要在表 S 中删除一个属性―年龄‖,可选用的 SQL 语句是( B)。 A. DELETE Age from S B. ALTER TABLE S DROP Age C. UPDATE S Age D. ALTER TABLE S ‗Age‘ 720、有关系 S(S#,SNAME,SAGE), C(C#,CNAME), SC(S#,C#,GRADE)。其中 S#是学生号, SNAME 是学生姓名,SAGE 是学生年龄, C#是课程号,CNAME 是课程名称。要查询选修―ACCESS‖课的年龄 不小于 20 的全体学生姓名的 SQL 语句是 SELECT SNAME FROM S,C,SC WHERE 子句。这里的 WHERE 子句 的内容是(A )。 A. S.S# = SC.S# and C.C# = SC.C# and SAGE>=20 and CNAME=‗ACCESS‘ B. S.S# = SC.S# and C.C# = SC.C# and SAGE in>=20 and CNAME in ‗ACCESS‘ C. SAGE in>=20 and CNAME in ‗ACCESS‘ D. SAGE>=20 and CNAME=‘ ACCESS‘ 721、设关系数据库中一个表 S 的结构为 S(SN,CN,grade),其中 SN 为学生名,CN 为课程名,二者均为字符型;grade 为成 绩,数值型,取值范围 0-100。若要把“张二的化学成绩 80 分”插入 S 中,则可用(D )。 A. ADD INTO S VALUES(‘张二‘,‘化学‘,‘80‘) B. INSERT INTO S VALUES(‘张二‘,‘化学‘,‘80‘) C. ADD INTO S VALUES(‘张二‘,‘化学‘,80) D. INSERT INTO S VALUES(‘张二‘,‘化学‘,80) 722、设关系数据库中一个表 S 的结构为:S(SN,CN,grade),其中 SN 为学生名,CN 为课程名,二者均为字 符型;grade 为成绩,数值型,取值范围 0-100。若要更正王二的化学成绩为 85 分,则可用( A) 。 A. UPDATE S SET grade=85 WHERE SN=‘王二‘ AND CN=‘化学‘ B. UPDATE S SET grade=‘85‘ WHERE SN=‘王二‘ AND CN=‘化学‘ C. UPDATE grade=85 WHERE SN=‘王二‘ AND CN=‘化学‘ D. UPDATE grade=‘85‘ WHERE SN=‘王二‘ AND CN=‘化学‘ 723、在 SQL 语言中,子查询是(D ) 。 A. 返回单表中数据子集的查询语言 B. 选取多表中字段子集的查询语句 C. 选取单表中字段子集的查询语句 D. 嵌入到另一个查询语句之中的查询语句 724、SQL 是一种( C)语言。 A. 高级算法 B. 人工智能 C. 关系数据库 D. 函数型 725、有关系 S(S#,SNAME,SAGE), C(C#,CNAME), SC(S#,C#,GRADE)。其中 S#是学生号, SNAME 是学生姓名,SAGE 是学生年龄, C#是课程号,CNAME 是课程名称。要查询选修―ACCESS‖课的年龄 不小于 20 的全体学生姓名的 SQL 语句是 SELECT SNAME FROM S,C,SC WHERE 子句。这里的 WHERE 子句 的内容是(A )。 A. S.S# = SC.S# and C.C# = SC.C# and SAGE>=20 and CNAME=‗ACCESS‘ B. S.S# = SC.S# and C.C# = SC.C# and SAGE in>=20 and CNAME in ‗ACCESS‘ C. SAGE in>=20 and CNAME in ‗ACCESS‘ D. SAGE>=20 and CNAME=‘ ACCESS‘ 726、什么是基本表?什么是视图?两者的区别和联系是什么? 727、试述视图的优点 728、所有的视图是否都可以更新?为什么? 729、哪类视图是可以更新的,哪类视图是不可更新的? 各举一例说明 730、试述某个你熟悉的实际系统中对视图更新的规定 731、问题描述: 已知关系模式: S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名 C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师 SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩 要求实现如下 5 个处理: 1. 找出没有选修过―李明‖老师讲授课程的所有学生姓名 2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩 3. 列出既学过―1‖号课程,又学过―2‖号课程的所有学生姓名 4. 列出―1‖号课成绩比―2‖号同学该门课成绩高的所有学生的学号 5. 列出―1‖号课成绩比―2‖号课成绩高的所有学生的学号及其―1‖号课和―2‖号课的成绩 732、问题描述: 为管理岗位业务培训信息,建立 3 个表: S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄 C (C#,CN ) C#,CN 分别代表课程编号、课程名称 SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩 要求实现如下 5 个处理: 1. 使用标准 SQL 嵌套语句查询选修课程名称为‘税收基础‘的学员学号和姓名 2. 使用标准 SQL 嵌套语句查询选修课程编号为‘C2‘的学员姓名和所属单位 3. 使用标准 SQL 嵌套语句查询不选修课程编号为‘C5‘的学员姓名和所属单位 4. 使用标准 SQL 嵌套语句查询选修全部课程的学员姓名和所属单位 5. 查询选修了课程的学员人数 6. 查询选修课程超过 5 门的学员学号和所属单位 733、表:table1(FId,Fclass,Fscore),用最高效最简单的 SQL 列出各班成绩最高的列表,显示班级,成绩两个字段 734、有一个表 table1 有两个字段 FID,Fno,字都非空,写一个 SQL 语句列出该表中一个 FID 对应多个不同的 Fno 的纪录。 类如: 101a1001 101a1001 102a1002 102a1003 103a1004 104a1005 104a1006 105a1007 105a1007 105a1007 结果: 102a1002 102a1003 104a1005 104a1006 735、有员工表 empinfo ( Fempno varchar2(10) not null pk, Fempname varchar2(20) not null, Fage number not null, Fsalary number not null ); 假如数据量很大约 1000 万条;写一个你认为最高效的 SQL,用一个 SQL 计算以下四种人: fsalary>9999 and fage > 35 fsalary>9999 and fage < 35 fsalary<9999 and fage > 35 fsalary<9999 and fage < 35 每种员工的数量; 736、表 A 字段如下 month person income 月份 人员 收入 要求用一个 SQL 语句(注意是一个)的处所有人(不区分人员)每个月及上月和下月的总收入 要求列表输出为 月份 当月收入 上月收入 下月收入 737、表 B C1 c2 2005-01-01 1 2005-01-01 3 2005-01-02 5 要求的处数据 2005-01-01 4 2005-01-02 5 合计 9 试用一个 Sql 语句完成。 738、数据库 1,2,3 范式的概念与理解。 739、简述 oracle 行触发器的变化表限制表的概念和使用限制,行触发器里面对这两个表有什么限制。 740、oracle 临时表有几种。 临时表和普通表的主要区别有哪些,使用临时表的主要原因是什么? 741、怎么实现:使一个会话里面执行的多个过程函数或触发器里面都可以访问的全局变量的效果,并且要实现会 话间隔离? 742、aa,bb 表都有 20 个字段,且记录数量都很大,aa,bb 表的 X 字段(非空)上有索引, 请用 SQL 列出 aa 表里面存在的 X 在 bb 表不存在的 X 的值,请写出认为最快的语句,并解译原因。 743、简述 SGA 主要组成结构和用途? 744、什么是分区表?简述范围分区和列表分区的区别,分区表的主要优势有哪些? 745、背景:某数据运行在 archivelog,且用 rman 作过全备份和数据库的冷备份, 且所有的归档日志都有,现控制文件全部损坏,其他文件全部完好,请问该怎么恢复该数据库,说一两种方法 746、用 rman 写一个备份语句:备份表空间 TSB,level 为 2 的增量备份。 747、有个表 a(x number(20),y number(20))用最快速高效的 SQL 向该表插入从 1 开始的连续的 1000 万记录。 748、Which SELECT statement will get the result 'elloworld' from the string 'HelloWorld'? A. SELECT SUBSTR( 'HelloWorld',1) FROM dual; B. SELECT INITCAP(TRIM ('HelloWorld', 1,1)) FROM dual; C. SELECT LOWER(SUBSTR('HelloWorld', 1, 1) FROM dual; D. SELECT LOWER(SUBSTR('HelloWorld', 2, 1) FROM dual; E. SELECT LOWER(TRIM ('H' FROM 'HelloWorld')) FROM dual; 749、Which two statements are true regarding the ORDER BY clause? (Choose two.) A. The sort is in ascending order by default. B. The sort is in descending order by default. C. The ORDER BY clause must precede the WHERE clause. D. The ORDER BY clause is executed on the client side. E. The ORDER BY clause comes last in the SELECT statement. F. The ORDER BY clause is executed first in the query execution. 750、Which two tasks can you perform using only the TO_CHAR function? (Choose two.) A. convert 10 to 'TEN' B. convert '10' to 10 C. convert '10' to '10' D. convert 'TEN' to 10 E. convert a date to a character expression F. convert a character expression to a date 751、Which operator can be used with a multiple-row subquery? A. = B. LIKE C. BETWEEN D. NOT IN E. Is F. <> 752、Which three statements about subqueries are true? (Choose three.) A. A single row subquery can retrieve only one column and one row. B. A single row subquery can retrieve only one row but many columns C. A multiple row subquery can retrieve multiple rows and multiple columns. D. A multiple row subquery can be compared using the ">" operator. E. A single row subquery can use the IN operator. F. A multiple row subquery can use the "=" operator. 753、Based on the following conditions, which of the following will make a true condition? last_name LIKE Ma% A. MADNESS B. Man C. MARY D. mary E. Mandy 754、Which of the following SQL statements can calculate and return the absolute value of -33? A. SELECT ABS(-33) "Absolute" FROM DUAL; B. SELECT ABS(-33), Absolute FROM DUAL; C. SELECT ABS("-33") Absolute FROM DUAL; 755、What does the following SQL script do? SELECT AVG(MAX(salary)) FROM employees GROUP BY department_id; A. it has a syntax error, the AVG clause is not valid B. it calculates the average of the maximum salaries of all the departments C. it has a syntax error, the MAX clause is not valid D. it has no error, but the GROUP BY clause is not effective E. it has no error, but the AVG clause is not effective F. it has no error, but the MAX clause is not effective 756、Which three SELECT statements display 2000 in the format "$2,000.00"? (Choose three.) A. SELECT TO_CHAR(2000, '$#,###.##') FROM dual; B. SELECT TO_CHAR(2000, '$0,000.00') FROM dual; C. SELECT TO_CHAR(2000, '$9,999.00') FROM dual; D. SELECT TO_CHAR(2000, '$9,999.99') FROM dual; E. SELECT TO_CHAR(2000, '$2,000.00') FROM dual; F. SELECT TO_CHAR(2000, '$N,NNN.NN') FROM dual; 757、编写一个全局函数 f_center(),参数 aw_window 为 window 类型,使该窗口自动居中。 758、PB 中如何存取 Image 或 Text 类型的数据,请举例说明。 769、如何检测数据窗口是否被修改。 770、编写一个全局函数 f_getparentwindow(),参数 1 apo_parm 为 PowerObject 类型,参数 2 aw_parent 为 window 类型,以参考方式传递,抓取 apo_parm 的父窗口(注意必须是父窗口,而非父对象)赋于 aw_parent。 771、表名为 tab_1,其中有一个字段为 code,写一条 SELECT 按 code 从小到大排序的前 10 条记录并按 code 从大 到小排序(选所有字段) 772、有一个表 t_customer,栏位 code 为 Varchar(20),name 为 Varchar(40),Code 为主键栏位,写一条 SQL 语句 删除 name 相同但 code 不同且 code 不是相同 name 对应的最大值的记录。(限一条 SQL 语句) 773、在基表 inv_trans_detail 上创建一个触发器,当插入一笔资料时更新库存 inv_current_stock。Inv_trans_detail 的交易数量栏位为 qty_trans,运算方式栏位为 operation_type,可取“+”、“-”、“ U”三个值,如为“+”,则增加 库存,如为“-”,则减少库存,如为“U”, 则增加库存(根据 Qty_trans 的正负实际增加/减少库存)。Inv_current_stock 的当前库存数量栏位为 qty_current。两个表以 part_no 连接起来。 774、在 MSSQLSERVER7 的 MRPII 数据库(或 Sybase Adaptive Server Anywhere 的 EAS Demo DB V3 数据库)建一个存储过程,抓取数据库中所有表和视图,设该存储过程名为 usp_getusertable,在 PB 中用 usp_getusertable 作数据源建数据窗口对象并预览数据。 775、磁盘柜上有 14 块 73G 的磁盘, 数据库为 200G 大小包括日志文件,如何设置磁盘(要说明这 14 磁盘是 怎么用的)? 776、有两服务器群集,分别为 node1 和 node2 现在要打 win200 系统补丁,打完后,要重新启动,如何打补丁, 不能影响用户使用(要用群集的术语详细说明)。 777、有一个 A 数据库,分别复制到 B 和 C B 要求 每次数据更新 也同时更新,C 每天更新一次就行,如 何制定复制策略! 778、有一个 order 表,有 90 个字段,20 个索引,15 个复合索引,其中有 3 个索引字段超过 10 个,如何进行优 化 779、有一个数据库 200G 大小,每天增加 50M 允许用户随时访问,制定备份策略(详细说明)。 780、管理 50 台数据库,日常工作是检查数据库作业是否完成,你该如何完成这项检查工作? 781、自定义函数和存储过程的区别是什么,什么情况下只能用自定义函数,什么情况下只能用存储过程 782、解释 FUNCTION,PROCEDURE 和 PACKAGE 区别 783、取某个序列的当前值的 PL/SQL 语句怎么写? 784、说明 ORACLE 数据库实例与 ORACLE 用户的关系? 785、创建数据库时,自动建立的 tablespace 名称? 786、创建用户时,需要赋予新用户什么权限才能使它连上数据库? 787、比较 truncate 和 delete 命令? 788、IMPORT 和 SQL*LOADER 这 2 个工具的不同点? 789、给出数据的相关约束类型? 790、说明索引的类型与作用? 791、获取某个字符字段的最后 3 个字符的函数是什么? 792、取当前系统时间点日期(不包括年月)的 SQL 写法是怎样的? 793、返回大于等于 N 的最小整数值? 794、将根据字符查询转换后结果,规则为:‘A‘转换为‘男‘,‘B‘转换为‘女‘,其他字符转换为‘未知‘,请用一个 SQL 语句写出。 795、如何搜索出前 N 条记录? 796、如何搜索出第 N~M 条记录? 797、怎样用 SQL 语句实现查找一列中的第 N 大值? 798、SQL Server 存储过程,与触发器的作用,与优缺点 799、标准的 SQL 与 T-SQL 的区别?写出 4 个 SQL 命令和 3 个 T-SQL 命令 800、数据库表 user pk ID int Name (char) Age(int) Sex(bit) (1) sex=0,age=20 的 name 降序 (2) 当 sex=1 时,age+1 (3) 删除所有奇数据 (4) 统计 age>20 的个数 (5) 年龄最大的人的名字 801、存储过程优缺点 802、存储过程中怎样调用存储过程? 803、JSP 上怎样调用存储过程? 804、JSP 中的 WEB.XML 是干什么的? 805、Tomcat 中的 servlet.xml 是干什么的? 806、XML 和 HTML 区别? 807、谈谈数据结构中的哈稀表? 808、指令元素中的 include 和动作元素中的 include 有什么区别? 809、动作元素中的 forword 和 response.sendRedirect 的区别? 810、在 MVC 模试中,JSP 将数据交到 Servlet ,Servlet 怎样将 Bean 传入到另一个 JSP 页面。 811、JSP 将数据交到 Servlet 时,Servlet 出错,怎样保存 JSP 页面上的信息 812、你怎样测试一个类的方法运行时间快慢 813、Linux 相关的一些操作命令 814、有一个 BEAN,需要用 Senlet 将其发送到 JSP 页,写出两种方法? 815、写出显示模态窗口的方法? 816、在 Servlet 中如何实现定时访问数据库? 817、DB2 中从表中选取数据的 SQL 语句。 818、如何实现在线人数统计,说明其原理 819、JSP 页中有哪些默认对象,说明其功能。 820、在 struts 中,模拟写出 success 后转发到 JSP1 的配置 821、有三张数据表,分别为老师表(老师编号、名字、年龄)、学生表(学生编号、学生名字、成绩)、老师学生 关系表(老师编号、学生编号、班级),查询出年龄在 30 岁以上的老师所带学生在 12 岁以上的的学生成绩平均分, 并显示这些老师的详细信息(写出 SQL 语句) 822、使用 compute 后缀查询出指定列的数据之和(有多列需要统计和) 823、Socket 的实现步骤(写实现步骤,不写代码) 824、写出 SQL 四条最基本的数据操作语句(DML)。 825、试解释 COMMIT 操作和 ROLLBACK 操作的语义。 826、如何估计一张表的大小(假设该表中有 1 万条数据)? 827、如何在存储过程中执行事务?请自写一例。 828、设教学数据库中有三个基本表: 学生表 S(S#,SNAME,AGE,SEX),其属性表示学生的学号、姓名、年龄和性别;选课表 SC(S#,C#, GRADE),其属性表示学生的学号、所学课程的课程号和成绩;课程表 C(C#,CNAME,TEACHER),其属性 表示课程号、课程名称和任课教师姓名 试写出下列插入操作的 SQL 语句:把 SC 表中每门课程的平均成绩插入到另一个已存在的表 SC_C(C#,CNAME, AVG_GRADE)中,其中 AVG_GRADE 为每门课程的平均成绩 试写出下列删除操作的 SQL 语句:从 SC 表中把 WU 老师的女学生选课元组删去。 试用 SQL 的断言来表达下列完整性约束: 规定女同学选修 LIU 老师的课程成绩都应该在 70 分以上 829、谈谈您所知道的 JOIN 语句的使用,并考虑到性能的优化,您有什么建议? 830、您熟悉 ORM(Object-Relation Mapping)吗?请谈谈您所理解的 ORM。 831、你对哪种数据库最熟悉?使用该数据库多少年?简单描述对该数据库的理解 832、对其它较熟悉的商业数据库的了解及使用年限. 833、如何将数据库(实例)备份和还原?(针对自己最熟悉的) 834、如何知道一个表或视图的结构? 835、描述 INNER JOIN 的功能和已在何种情况下使用 INNER JOIN. 836、如何让你的一个系统能支持异构数据库.你会怎么样设计? 837、描述一下 java 中 io 包的结构以及处理的原理机制 838、请描述一下 java 中的 collection frame work 的结构以及分别如何使用 839、写一个程序,接受从 console 输入 n 个数字(每个数字以“,”隔开),按照数字从大到小的顺序打印输出到 console。请尽量使用高效率的方法。 840、描述一下 jvm 加载 class 文件的原理机制。 841、进程和线程的区别? 842、成员变量和成员函数前加 static 的作用? 843、如何处理几十万条并发数据? 844、Session 有什么重大 BUG,微软提出什么方法加以解决? 845、构造器 Constructor 是否可被 override? 846、try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里的 Code 会不会被执行,什么时候被执行,在 retuan 前还是后? 847、能用 foreach 遍历访问的对象需要实现_________________接口或声明___________方法的类型。 848、abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是 synchronized ? 849、面向对象语言的特征?Java I/O 中字符流和字节流的区别? 850、HashTable 和 HashMap 的区别?EJB 的生命周期? Servlet 的生命周期? 851、HTTP 协议是长连接还是短连接? 852、MVC 的概念和在项目中的应用? 853、如何避免多个 SOCKET 的读写阻塞,JDK1.4 新增了那些方法解决这个问题 854、在 ORACLE 数据库中,一个表被删除后,还能否将空间分配给其它表,SQL SERVER 哪 855、在 ORACLE 数据库中,一个表有两千万条数据,怎样最有效的将其删除? 856、在数据库中,如果处理表中的每一条数据,用那种方法? 857、发送一条邮件的几个步骤在 JNDI 中如何初始化 URL 上下文 858、常用的组件技术?会话 BEAN 的属性?实体 BEAN 的属性 859、STATE SESSION BEAN 与 STATELESS SESSION BEAN 的区别 860、JMS 编程具体步骤?事务模式? 861、JAVA 容器管理事务的事务属性为 REQUIRESNEW 的意义 862、事务失败时的会话 BEAN 的重新初始化方法 863、WEBLOGIC SERVER 中开发 JDBC 应用通常遵循的步骤 864、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么 865、垃圾回收机制,如何优化程序? 866、介绍 JAVA 中的 Collection FrameWork(包括如何写自己的数据结构)? 867、Java 中异常处理机制,事件机制 868、Java 的通信编程,用 JAVA SOCKET 编程,读服务器几个字符,再写入本地显示? 869、用 JAVA 实现一种排序,JAVA 类实现序列化的方法(二种)? 如在 COLLECTION 框架中,实现比较要实现什么 样的接口 870、STRING 与 STRINGBUFFER 的区别 871、jsp 有哪些内置对象?作用分别是什么? 872、说一说 Servlet 的生命周期 873、Servlet API 中 forward() 与 redirect() 的区别 874、Class.forName 的作用?为什么要用? 875、Jdo 是什么? 876、在 ORACLE 大数据量下的分页解决方法。一般用截取 ID 方法,还有是三层嵌套方法 877、xml 有哪些解析技术?区别是什么? 878、你在项目中用到了 xml 技术的哪些方面?如何实现的? 879、用 jdom 解析 xml 文件时如何解决中文问题?如何解析 880、编程用 JAVA 解析 XML 的方式 881、应用服务器与 WEB SERVER 的区别 882、J2EE 是什么 883、java 是否存在内存泄露 884、String 类的值是否可以改变 885、toString 方法的概述 886、Object 类的概述 887、类变量的初始化 888、Hastable 与 HashMap 的区别? 889、Collection 和 Collections 的区别 890、GC 是什么? 为什么要有 GC? 891、String s = new String("xyz");创建了几个 String Object? 892、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 893、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 894、sleep() 和 wait() 有什么区别? 895、Overload 和 Override 的区别。Overloaded 的方法是否可以改变返回值的类型? 896、Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是 equals()? 它们有何区别? 897、给我一个你最常见到的 runtime exception 898、error 和 exception 有什么区别? 899、List, Set, Map 是否继承自 Collection 接口? 900、abstract class 和 interface 有什么区别? 901、abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是 synchronized? 902、构造器 Constructor 是否可被 override? 903、是否可以继承 String 类? 904、当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法? 905、try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,什么时候被执行, 在 return 前还是后? 906、两个对象值相同(x.equals(y) == true),但却可有不同的 hash code,这句话对不对? 907、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这 里到底是值传递还是引用传递? 908、swtich 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上? 909、Hashtable 和 HashMap 区别。 910、编写了一个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入"END"为止,让你写出客 户端的程序; 911、ArrayList 和 Vector 的区别,HashMap 和 Hashtable 的区别 912、char 型变量中能不能存贮一个中文汉字?为什么? 913、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 914、用 JAVA 实现一种排序,JAVA 类实现序列化的方法(二种)? 如在 COLLECTION 框架中,实现比较要实现 什么样的接口? 915、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保 证汉字不被截半个,如“我 ABC”4,应该截为“我 AB”,输入“我 ABC 汉 DEF”, 6,应该输出为“我 ABC” 而不是“我 ABC+汉的半个”。 916、JAVA SERVLET API 中 forward() 与 redirect()的区别? 917、可能会让你写一段 Jdbc 连 Oracle 的程序,并实现数据查询 918、Class.forName 的作用?为什么要用? 919、你在项目中用到了 xml 技术的哪些方面?如何实现的? 920、用 jdom 解析 xml 文件时如何解决中文问题?如何解析? 921、编程用 JAVA 解析 XML 的方式. 922、EJB2.0 有哪些内容?分别用在什么场合? EJB2.0 和 EJB1.1 的区别? 923、EJB 与 JAVA BEAN 的区别? 924、STRUTS 的应用(如 STRUTS 架构) 925、开发中都用到了那些设计模式?用在什么场合? 926、CORBA 是什么?用途是什么? 927、说出 ArrayList,Vector, LinkedList 的存储性能和特性 928、设计 4 个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。写出程序。 929、说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别 930、EJB 是基于哪些技术实现的?并说出 SessionBean 和 EntityBean 的区别,StatefulBean 和 StatelessBean 的区别。 931、EJB 包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的? 932、说出数据连接池的工作机制是什么? 933、同步和异步有和异同,在什么情况下分别使用他们?举例说明。 934、你所知道的集合类都有哪些?主要方法? 935、给你一个:驱动程序 A,数据源名称为 B,用户名称为 C,密码为 D,数据库表为 T,请用 JDBC 检索出表 T 的所有 数据 936、事务是什么? 937、游标的作用?如何知道游标已经到了最后? 938、触发器分为事前触发和事后触发,这两种触发有和区别 939、你知道 Object 类中有那些方法? 940、在 Jdbc 进行数据库调用时,你经常采用什么方式执行 sql 语句?为什么不用其他方式 941、线程是如何启动的? 942、你懂得 Ftp 协议吗?如果不懂请问我告诉你 Ftp 协议命令格式及数据包的解析方法,你能用多长时间用 java 基本 apI 搞定 943、你知道 java 与 C 的通信?吗你会用那些协议进行通信?(其实也就是问 socret 通信) 944、java 中的网络通信有那些方式,有什么区别? 945、String a=“”For limit I=0;I<100000;I++)A=a+“A”把字符串成“A”连接 100000 次,上面方法不够好,请 优化上面代码?(采用 stringBuffer 进行优化) 946、EJB 的调用过程,请叙述一下。 947、你在 jsp 中打印是如何实现的?还要说你用系统的打印方法,也就是说,在 JSP 中若有很多内容,而我只需 要打印其中一个表格,是如何实现的? 948、你用 java script 做过树型菜单吗? 949、WEB 服务器启动时,系统需要做一些初始化的工作,这些工作该怎么处理,在 structs 下又该怎样处理 950、你做过在 jsp 页面上下载一个文本文件吗?请描述你的方法? 951、你在数据库编程过程中,面临的数据量有多大?如果有一个项目中每天有三张结构完全相同的表,一个 365 天天天如此,每张表记录在 100 万条以上,现需要分页查询,根据这样的项目,采用你用过的分页原理,行吗? 952、你用 java 调用过的存储过程吗?当一个存储过程有返回记录集时,该怎样在 java 中返回? 953、应该对 oracle 有所了解,对一些数据库的名词,应该知道词的解释。 954、下列那种语言是面向对象的(C) A. C B. PASCAL C. C++ D. FORTRAN77 955、在 Windows9x 下,可以进入 MS-D0S 方式。当在 DOS 提示符下键入 ( B ) 命令后,系统将退出 MS-DOS 方式,返回到 WIndows 方式。 A. CLOSE B. EXIT C. QUIT D. RETURN 956、下面哪些是面向对象的基本特性:( ABC)A 多态 B 继承 C 封装 D 接口 957、在 C++中经常要进行异常处理,下面哪些是异常处理常用到的关键词:(ABC) A try B catch C throw D break E contiue 958、数据库技术中的“脏数据',是指(C)的数据。A.错误 B.回返 C.未提交 D.未提交的随后又被撤消 959、TCP/IP 是一种(A,B)A.标准 B.协议 C.语言 D.算法 960、下面有关计算机操作系统的叙述中,不正确的是(B ) A 操作系统属于系统软件 B 操作系统只负责管理内存 储器,而不管理外存储器 C UNIX 是一种操作系统 D 计算机的处理器、内存等硬件资源也由操作系统管理 961、微机上操作系统的作用是( D) A 解释执行源程序 B 编译源程序 C 进行编码转换 D 控制和管理系统资源 962、下列存储器中存取速度最快的是( A) A 内存 B 硬盘 C 光盘 D 软盘 963、在计算机中,—个字节是由多少个二进制位组成的(B ) A. 4 B. 8 C. 16 D. 24 964、存储 16×16 点阵的一个汉字信息,需要的字节数为( A )A 32 B 64 C 128 D 256 965、以下选项中合法的字符常量是(BC)A."B" B. '\010' C. 68 D. D 966、假定 x 和 y 为 double 型,则表达式 x=2,y=x+3/2 的值是(D)A. 3.500000 B. 3 C. 2.000000 D. 3.000000 967、以下合法的赋值语句是(BCD)//In C++ ,choice D also is correct, but in C language, D is wrong. A. x=y=100 B. d--; C. x+y; D. c=int(a+b); 968、设正 x、y 均为整型变量,且 x=10 y=3,则以下语句 pprintf("%d,%d\n",x--,--y); 的输出结果是(D) A.10,3 B. 9,3 C. 9,2 D.10,2 969、x、y、z 被定义为 int 型变量,若从键盘给 x、y、z 输入数据,正确的输入语句是(B) A .INPUT x、y、z; B. scanf("%d%d%d",&x,&y,&z);C. scanf("%d%d%d",x,y,z); D. read("%d%d%d",&x,&y,&z); 970、以下数组定义中不正确的是(D)A) int a[2][3]; B) int b[][3]={0,1,2,3};C) int c[100][100]={0}; D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 971、以下程序的输出结果是(A)main(){ int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]; }A) 0650 B) 1470 C) 5430 D) 输出值不定 972、以下程序的输出结果是(B)main(){char st[20]= "hello\0\t\\\";printf(%d %d \n",strlen(st),sizeof(st)); }A) 9 9 B) 5 20 C) 13 20 D) 20 20 973、当调用 Windows API 函数 InvalidateRect,将会产生什么消息(A)A:WM_PAINT B:WM_CREATE C:WM_NCHITTEST D:WM_SETFOCUS 974、请列举当前一些当前流行的数据库引擎,SQL SERVER,ORACLE,BDE,Microsoft Jet。 975、为了将当前盘当前目录中的所有文本文件(扩展名为.TXT)的内容打印输出,正确的单条 DOS 命令为 COPY *.TXT PRN。 976、设 y 是 int 型变量,请写出判断 y 为奇效的关系表达式 977、UDP 是面向无连接的网络连接(T or F) 978、队列是先进后出(T or F) 979、Weblogic 是分布式应用服务器(T or F) 980、TCP,UDP 都是传输层的协议(T or F) 981、两个线程不能共存于同一地址空间(T or F) 982、JAVA 是一种跨平台的开发工具(T or F) 983、在 WINDOWS 操作系统中对外设是以文件的方式进行管理(T or F) 984、虚拟内存实际是创建在硬盘上的(T or F) 985、什么是 OOP?什么是类?请对比类和对象实例之间的关系 986、有一组数字(3,10,6,8,98,22),请编程排序(升降序皆可),语言不限,算法不限,但须注明是何种 算法。 987、垃圾回收机制,如何优化程序? 988、HTTP 的请求过程 989、一条指令的完成一般有取指令和( )两个阶段。 A、取数据 B、执行指令 C、取地址 D、传送数据 990、操作系统的作用是( )。 A、把源程序编译成目标程序 B、便于进行目录管理 C、控制和管理系统资源的使用 D、高级语言和机器语言 991、下列数中最小的数是(括号后面的是进制)( )。 A、( 11011001)2 B、75 C、( 75)8 D(2A7)16 992、在当今的国际互连网络中,要求上网的计算机均采用( )协议 993、计算机指令一般包括____和地址码两部分。 A. 内存地址 B. 口地址 C. 操作码 D. 寄存器 994、在内存中,每个基本单位都被赋予一个唯一的序号,这个序号是____。 A. 字节 B. 编号 C. 地址 D. 容量 995、计算机能够直接识别和执行的语言是____。 A. 汇编语言 B. 高级语言 C. 英语 D. 机器语言 996、MS-DOS 是____操作系统 A.分时 B. 实时 C. 单用户多任务 D. 单任务单用户 997、在 DOS 系统中,内部命令前____ A. 可以放盘符 C: B. 必须放盘符 C. 可以放盘符 A: D. 不能放盘符 998、在 DOS 提示符 A:\>下,键入 WCG 后,机器即可执行相应功能,WCG 文件的全名除可以是 WCG.COM 或 WCG.EXE 外,还可以是____。 A. WCG.PRG B. WCG.SYS C. WCG.DBF D. WCG.BAT 999、DOS 系统为每个子目录建立了两个特殊目录“.”和“ ..”,其中“.”用来保存____信息。 A. 当前目录的下级目录 B. 当前目录本身 C. 当前目录的上级目录 D. 当前盘的最高级目录 1000、若系统提示符显示 C:\>,存盘命令中没有指明盘符,则文件将存放于____盘。 A. A B. B C. C D. D 1001、要改变当前盘符,只要输入____并按回车键即可。 A. : B. ? C. \ D. 盘符 1002、当前盘为 A 盘,要执行 C 盘根目录下的批处理文件 A.BAT 应使用命令____。 A. C:\A.BAT B. A:\A.BAT C. A.BAT D. \A.BAT 1003、设当前盘当前路径为 C:\LX,要将当前盘\A1\C1\B1\路径下的 F1.C 文件复制到当前目录中,应使用下面____ 命令。 A. COPY F1.CF1.C B. COPY \F1.C C. COPY \A1\C1\B1\F1.C D. COPY \A1\C1\B1\F1.C C:\ 1004、删除 A 盘当前目录中扩展名为.BAK 的所有文件的命令是____。 A. DEL A:*.BAK B. RD A:*.BAK C. DEL \A\*.BAK D. RD \A\*.BAK 1005、列出 A 盘当前目录中主文件名由三个字符组成,扩展名任意的所有文件清单,应使用 ____命令。 A. A:\>DIR ??*.* B. DIR A:???.* C. DIR A:*.??? D. DIR *. 1006、已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是: A)数组 a 和 b 的长度相同 B)a 数组长度小于 b 数组长度 C)a 数组长度大于 b 数组长度 D)上述说法都不对
还剩147页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 11 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

cjsjiang12

贡献于2012-09-04

下载需要 11 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf