A. j2ee面试题谁有
JAVA程序员面试32问
第一,谈谈final, finally, finalize的区别。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
第四,&和&&的区别。
第五,HashMap和Hashtable的区别。
第六,Collection 和 Collections的区别。
第七,什么时候用assert。
第八,GC是什么? 为什么要有GC?
第九,String s = new String("xyz");创建了几个String Object?
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
第十二,sleep() 和 wait() 有什么区别?
第十三,Java有没有goto?
第十四,数组有没有length()这个方法? String有没有length()这个方法?
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
第十七,给我一个你最常见到的runtime exception。
第十八,error和exception有什么区别?
第十九,List, Set, Map是否继承自Collection接口?
第二十,abstract class和interface有什么区别?
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
第二十三,启动一个线程是用run()还是start()?
第二十四,构造器Constructor是否可被override?
第二十五,是否可以继承String类?
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,编程题: 写一个Singleton出来。
以下是答案
第一,谈谈final, finally, finalize的区别。
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象
第四,&和&&的区别。
&是位运算符。&&是布尔逻辑运算符。
第五,HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。
第六,Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口。
第七,什么时候用assert。
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。它用于调试目的:
assert(a > 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 标记。还可以在包的基础上启用或者禁用断言。
可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
第八,GC是什么? 为什么要有GC? (基础)。
GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String("xyz");创建了几个String Object?
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
第十一,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正确。
第十二,sleep() 和 wait() 有什么区别? 搞线程的最爱
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级
(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
第十三,Java有没有goto?
Goto—java中的保留字,现在没有在java中使用。
第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
第十七,给我一个你最常见到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, , DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第十八,error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
第十九,List, Set, Map是否继承自Collection接口?
List,Set是
Map不是
第二十,abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
第二十四,构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
第二十五,是否可以继承String类?
String类是final类故不可以继承。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
2 << 3
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
第三十二,编程题: 写一个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的。
一般认为第一种形式要更加安全些
第三十三 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算法都大概一样,所以性能不会有很大的差异。
B. 谁有比较全面的的Java面试题
JAVA 面试题汇总
一、 JAVA 基础知识
1、面向对象的特征有哪些方面
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
2、String 是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean 和short。
java.lang.String 类是final 类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer 类
3、int 和 Integer 有什么区别
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int 是java 的原始数据类型,Integer是java 为int 提供的封装类。Java 为每个原始类型提供了封装类。
原始类型封装类
booleanBoolean
charCharacter
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
4、String 和StringBuffer 的区别
JAVA 平台提供了两个类:String 和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String 类提供了数值不可改变的字符串。而这个StringBuffer 类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer 。典型地,你可以使用
StringBuffers 来动态构造字符数据。
5、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
6、说出Servlet 的生命周期,并说出Servlet 和CGI 的区别。
Servlet 被服务器实例化后,容器运行其init 方法,请求到达时运行其service 方法,service 方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy 方法。
与cgi 的区别在于servlet 处于服务器进程中,它通过多线程方式运行其service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI 对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
7、说出ArrayList,Vector, LinkedList 的存储性能和特性
ArrayList 和Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector 由于使用了synchronized 方法(线程安全),通常性能上较ArrayList差,而LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
8、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 Session Bean 的实体来执行这个 method。换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。
9、Collection 和 Collections 的区别。
Collection 是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
10、&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
11、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 算法都大概一样,所以性能不会有很大的差异。
12、final, finally, finalize 的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally 是异常处理语句结构的一部分,表示总是执行。
finalize 是Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract 的,又被声明为final 的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final 的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final 的方法也同样只能使用,不能重载。
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
13、sleep() 和 wait() 有什么区别?
sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep 不会释放对象锁。
wait 是Object 类的方法,对此对象调用wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify 方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
14、Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值的类型?
方法的重写Overriding 和重载Overloading 是Java 多态性的不同表现。重写Overriding 是父类与子类之间多态性的一种表现,重载Overloading 是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。
Overloaded 的方法是可以改变返回值的类型。
15、error 和exception 有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
17、abstract class 和interface 有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final 成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
18、heap 和stack 有什么区别。
栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素
19、forward 和redirect 的区别
forward 是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request 参数都可以获取。
20、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 组件。
21、Static Nested Class 和 Inner Class 的不同。
Static Nested Class 是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
22、JSP 中动态INCLUDE 与静态INCLUDE 的区别?
动态INCLUDE 用jsp:include 动作实现 <jsp:include page="included.jsp" flush="true"/>它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
静态INCLUDE 用include 伪码实现, 定不会检查所含文件的变化, 适用于包含静态页面
<%@ include file="included.htm" %>
23、什么时候用assert。
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion 就是在程序中的一条语句,它对一个boolean 表达式进行检查,一个正确程序必须保证这个boolean 表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion 用于保证程序最基本、关键的正确性。assertion 检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion 检查通常是关闭的。
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为false,那么系统会报告一个 Assertionerror。它用于调试目的:assert(a > 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 标记。还可以在包的基础上启用或者禁用断言。
可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管 是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序 的状态。
24、GC 是什么? 为什么要有GC?
GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java 语言没有提供释放已分配内存的显示操作方法。
25、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;(可以正确编译)
26、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12
Math.round(-11.5)==-11
round 方法返回与参数最接近的长整数,参数加1/2 后求其floor.
27、String s = new String("xyz" ;创建了几个String Object?
两个对象,一个是“xyx”,一个是指向“xyz”的引用对象s。
28、如果系统要使用超大整数(超过long 长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。
public class BigInt()
{
int[] ArrOne = new ArrOne[1000];
String intString="";
public int[] Arr(String s)
{
intString = s;
for(int i=0;i<ArrOne.leght;i++)
29、Java 有没有goto?
java 中的保留字,现在没有在java 中使用。
30、启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM 调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
来个邮箱了,太多了传不上去。我可以发给你。
C. 游戏公司。。上海EA、上海巨人、北京完美。哪家总体情况好,包括薪资,待遇,加班情况,未来发展等等。
当然是EA了
记得有一次去EA的路上,我一上车发现角落里只有一个空位了,旁边坐着一个御姐,嘿嘿,我忙走过去一屁股坐下,那漂亮御姐很熟练的皱皱眉头,职业性的使劲往旁边挪。
"到哪?"
"友力国际大厦。"
"哪?" 这个面部肌肉僵硬的售票员一脸不解。
"友力国际大厦,唔",一说完我明白了,忙改口,"长寿路江宁路。"
"友力国际大厦?你是EA的吧!"丫更吃惊了。这么高的分贝使全车的人都回头。
我前座的一位再老就不能说话的那种老人,悠悠的问:"小伙子,你真是EA的?"
这似乎是所有人所期盼得到答案的问题。大家盯着我看,看得我都脸红。我更感受到了旁边MM由于迅速靠近我所不得不散发出来的香水味。
我利索的从钱包里拿出公交卡,一不小心公司门卡掉了出来,于是全车厢传阅,那位长者郑重地戴上老花镜,眯着眼睛吃力地扫描的我的门卡,然后老泪纵横……
大家相互传阅的红火场面令那个长着死鱼眼睛的售票员的死鱼眼睛湿润了。
一位年轻人不无揶揄的说,"听说你们EA一毕业一个月就二十万啊。"
我笑了笑,社会谣言真多,"没有没有?大多数人都是七八万,哪有上二十万的。"又是一阵轰动。不知是谁低声说:"老子一年还没那么多呢……"
总算御姐有机会插话了,
"朋友你工作几年啦?"
"下个月就8年。"我铆足了力气掩饰我内心的激动。虽然EA男女比例10:1。
"我也工作8年了啊。我也在长寿路江宁路下,去听你们总监的课,听说你们总监在游戏制作方面很有建树。"
"噢,你想再来我们公司面试?同学,你哪个公司的?"
御姐警觉地望了望四周,轻声地吐出两个字"暴雪"。
我忙拍马屁,"不错了,暴雪嘛!"
御姐一听更加心酸,"我刚毕业也来EA面试过,可惜上机测试没过。"
类似的故事我听了一遍又一遍暴雪员工的EA情结。她把"测试"说得很重,于是车里一阵扼腕叹息之声。
长者摇摇头,"长太息以掩涕兮,哀暴雪员工之多艰!"
但见售票员死灰复燃的脸上簌簌留下的泪水,接着,他痛苦地说起了革命家史,三年前,去EA面试,落榜了,
去培训班学习,再投简历去EA,拒绝,去培训班学习,再投,再拒绝,于是出来工作了……
我明白了,能进EA的人,幸福是相似的,与EA失之交臂的人,各有各的不幸。
我怀着这样的心情离开了烈士陵园……
错了错了,是我怀着这样的心情带领御姐下了车。
背后传来了幼稚的童声:"妈妈,我长大也要去EA上班!"
我回过头,车上那位妇女的表情告诉我,她是世界上最幸福的母亲。
D. EA20 面试前要有哪些准备(佚名)面试求职
面试前的准备:
面试前要先预想主考官会问的问题,并准备谨慎而有条理地回答。事先有准备的人,表情和肢体语言比较笃定从容,且具备较好的回应能力。大学毕业生由于缺乏面试经验,可事先找朋友练习面试技巧。面试时最好提前10分钟到达地点,先去洗手间放松一下,整理一下思路,还可最后检查一下自己的仪容,整理因挤公车而弄乱的发型,女士还可趁机补补妆。
E. 在哪里可以找到历年公务员面试真题呢
您可以到我们的网站查询真题
F. 重分悬赏JAVA面试问题
JAVA程序员面试32问
第一,谈谈final, finally, finalize的区别。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
第四,&和&&的区别。
第五,HashMap和Hashtable的区别。
第六,Collection 和 Collections的区别。
第七,什么时候用assert。
第八,GC是什么? 为什么要有GC?
第九,String s = new String("xyz");创建了几个String Object?
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
第十二,sleep() 和 wait() 有什么区别?
第十三,Java有没有goto?
第十四,数组有没有length()这个方法? String有没有length()这个方法?
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
第十七,给我一个你最常见到的runtime exception。
第十八,error和exception有什么区别?
第十九,List, Set, Map是否继承自Collection接口?
第二十,abstract class和interface有什么区别?
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
第二十三,启动一个线程是用run()还是start()?
第二十四,构造器Constructor是否可被override?
第二十五,是否可以继承String类?
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,编程题: 写一个Singleton出来。
以下是答案
第一,谈谈final, finally, finalize的区别。
final—修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象
第四,&和&&的区别。
&是位运算符。&&是布尔逻辑运算符。
第五,HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。
第六,Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口。
第七,什么时候用assert。
断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 AssertionError。它用于调试目的:
assert(a > 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 标记。还可以在包的基础上启用或者禁用断言。
可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。
第八,GC是什么? 为什么要有GC? (基础)。
GC是垃圾收集器。Java 程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String("xyz");创建了几个String Object?
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
第十一,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正确。
第十二,sleep() 和 wait() 有什么区别? 搞线程的最爱
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级
(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
第十三,Java有没有goto?
Goto—java中的保留字,现在没有在java中使用。
第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()这个方法,有length的属性。
String有有length()这个方法。
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
第十七,给我一个你最常见到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, , DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第十八,error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
第十九,List, Set, Map是否继承自Collection接口?
List,Set是
Map不是
第二十,abstract class和interface有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
都不能
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。
第二十三,启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
第二十四,构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。
第二十五,是否可以继承String类?
String类是final类故不可以继承。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
2 << 3
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
不对,有相同的hash code。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
第三十二,编程题: 写一个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的。
一般认为第一种形式要更加安全些
第三十三 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算法都大概一样,所以性能不会有很大的差异。
G. 移动通信专业面试时会被问到的问题及回答技巧
一方面面试时注意1,自我介绍一定要把握好时间,最好在2分钟。
2,回答问题时要看着HR的眼睛。
3,当HR问到所学专业与应聘职位的关系时,最好保持中立。
4,大谈特吹自己的实践能力与优势,肯定会有加分。
5,凸现自己的综合素质及适应力。
6,向HR提问要先出风度,千万不要问自己都觉得没意思之类的问题。
7,不要随便打断HR的话,尽管她(他)会随时打断你的话。
8,如果你被HR问到无话可说,就不停的微笑和点头。
9,做到以上八条,你会发现自己真的很想走人了,不过,相信很快就可以收到下一轮的面试通知。二方面一般专业知识会问以下这些:(给你套题吧,是移动的笔试题,你好好准备下)1. GSM网中,一个S2/2/2的基站最多可同时容纳42个无线用户的通话。
2. 移动通信系统目前采用_FDMA_、_TDMA_和_CDMA_三种多址方式,GSM采用FDMA/TDMA(或TDMA)多址方式。
3. GSM系统按照功能分为MSS、BSS和 MS等三部分。
4. 无线接口上CCCH包括 PCH 、AGCH 、RACH三类信道。
5. 常见的基站组网方式有 星 形、 链 形、 树 形 和环形灵活组网。
6. 在GSM系统中,移动台(MS)与基站(BTS)间传输的数字话音信号速率为 13 Kbit/s, 移动交换局(MSC)与基站间传输的数字话音信号速率为 64 Kbit/s,因此在BSS 与MSC之间需增加码型变换设备。
7. 分集技术是对付快衰落的有效方法,在众多的分集技术中,我们目前在市区最常用的是
__空间分集__。在郊区最常用的是 极化分集 。
8. 切换一般是指MS在 通话 状态(空闲、通话)下由于位置改变而要进行的行为。
9. 在GSM网中,一个2M最大能带 15 个载频。
10. 数字蜂窝PLMN可提供的业务分为基本业务和补充业务。二、判断题:
1. 如果手机没有SIM卡,就不能进行任何呼叫了。 (错误)
2. HLR中存储着移动用户识别号码、访问能力、用户类别和补充业务等数据。(正确)
3. MSC寻呼被叫用户时,一定是在整个VLR范围发送寻呼命令。 (错误)
4. 移动用户发起位置更新时,并非每次都由VLR分配新的TMSI。 (正确)
5. GSM900/GSM1800双频系统可以共用交换子系统和基站控制器,还可以共基站。(正确)
6. GSM网个人鉴权密钥Kc存放在仅存放在HLR/AUC 里。 (错误)
7. TCH与SACCH组合时51帧为一复帧,控制信道组合时26帧构成一复帧。 ( 错误 )
8. GSM蜂窝小区的覆盖半径在设计时,即使把功率输出调至最大,地形再平坦,其覆盖范围也不可能超过35公里。(正确)
9. 在关机注册中,手机只有受到系统证实消息才能关机 (错误)
10. 在空闲状态时,可能进行软切换 (正确)
11. 天馈线系统的驻波比要大于1.4. (正确)三、选择题:
1、下面哪些信道类型属于控制信道 A、C、D
A、AGCH B、TCH/F C、FCCH D、SACCH
2、一个S2/2/2的基站最多同时可容纳多少个无线用户在通话? B
A、36 B、42 C、 48 D、 64
3、天馈系统驻波比变差的可能原因有:A、B、C、D
A.接头没有接好
B 接头密封不好导致进水
C.天馈避雷器驻波大
D.馈线某处有折损
5、以下哪些措施是GSM系统用来提高频谱效率的( 1、2、4 )
1)跳频 2)DTX 3)信道编码 4)功率控制
6、以下属于双向信道的是( 1 )
1)SACCH 2)AGCH 3)BCCH
7、上行链路的测量报告是在( 3 )上传送的:
1)SDCCH 2)RACH 3)SACCH 4)FACCH
8、西门子MSC可以和MOTOROLA的BSC互连的原因是因为存在标准的( 1 )接口:
1)A 2)B 3)C 4)D
9、掉话与切换失败有那些共同的可能原因: abcd
A 干扰程度较高 B 硬件有故障 C 天馈线联接方向错误D 越区
10、 绝大多数情况下,基于小区拥塞的切换HOTRAFFIC是:b
A 服务小区的中心的手机用户切换到其他小区上,以缓解拥塞;
B 服务小区的边沿的手机用户切换到其他小区上,以缓解拥塞;
C 将服务小区中新的提出信道占用请求的用户切换到其他小区上,以缓解拥塞。
11、处理切换失败的思路: abcd
A 查干扰源 B 排除可能的硬件故障 C 减少小区间的交叉覆盖区 D 排除设计上的不足(有同频同BISC/同频小区间互为邻小区)
蜂窝的切换失败的处理: e
A 调整频率及BSIC设计 B 调整邻小区的定义 C 查找室内分布系统的问题 D 切换门限的调节 E 以上均可以
11、 MS对目标小区进行重选时,不需要核对的信息是: d
A cro B Cell bar C Location Area D Time advance
12、 加快切换速度可以: bcd
A 切换成功率就会下降,
B 适当减少掉话,
C 切换量会增加,
D BSC负荷会增加
13、 掉话的原因: abc
A 干扰程度较高 B 硬件有故障 C 天馈线联接方向错误
14、 处理掉话的思路: abcd
A 查干扰源 B 排除可能的硬件故障 C 减少或增加小区间的交叉覆盖区 D 查天线的连接
15、 LAC区设置不当而导致的位置更新过多,手机可能会有什么现象:d
A 手机有信号,被叫录音提示不在服务区
B 手机有信号,无法作被叫
C 手机信号不稳
D 以上全是
16、 小区的信号很强但用户不能起呼(可以切换进入)的原因:d
A 有强外部干扰 B 小区未在交换中定义 C 手机制式与GSM协议不匹配(如未升级的某些手机在开通DCS1800的区域)
D 小区未定义SDCCH信道。
20、位置更新中利用的逻辑信道是哪个:b
A,TCH B,SDCCH C,SACCH D,FACCH
21、解决位置更新过多的方法有:abd
A,重新规划位置区
B,位置区边界尽量避开小区重选频繁的地段
C,给边界处的小区多配置信令信道
D,修改CellReselectHysteresis参数
22、GSM网络采用900/1800MHz频段,其中移动台发、基站收为:B
A 908-914MHz B 909-915MHz C 910-916MHz
25、当移动用户使用分组数据业务的时候,需要给用户分配IP地址。与核心网分组部分有关的设备也应当分配IP地址,例如:A C
A BSC 、PCF B PDSN、RADIUS服务器和HLR C DNS服务器、防火墙和各种应用服务器
27、GSM/CDMA网内主叫号码传递原则规定中,正确的是:A C
A网内话路接续过程中,原则上不对主叫号码做变换 B GSM/CDMA用户做主叫时,在网内主叫号码格式采用国际有效号码 C国内其他网的主叫号码在接入联通网的GMSC时变为标准格式,并在网内进行传送
28、下面那些论述是错误的:ABC
A,鉴权过程在每次通话前或位置更新前均必定会发生。
B,Ciphering过程在每次通话前或位置更新前均必定会发生。
C,TMSI再分配过程在每次通话前或位置更新前均必定会发生。
D,交换中可以定义使鉴权过程, Ciphering过程,TMSI再分配过程使他们并非每次都发生。
30、手机正在通话状态下,它切换进入了一个新的位置区中的小区,那么: C
A,它会通话过程中进行位置更新。
B,它会在下次跨LAC区时进行位置更新。
C,它会在通话结束后马上进行位置更新。
31、手机正常关机后,下列那些情况是正确的: C
A,系统仍旧会通过PAGING信道对它发出PAGING请求,虽然手机已经收不到了。
B,短消息被排队到数据库中,如果在用户开机前还未被更新掉,短消息也不能发送到用户。
C,其他用户对该手机的呼叫请求会被拒绝。
D,发给它的短消息肯定会丢失。
32、下列那些描述是正确的: D
A,每次位置更新均需牵入HLR。
B,位置更新均发生在不同的VLR上。
C,几类位置更新的优先顺序是一样的。
D,每次位置更新中均要改动用户数据的存放位置或指引位置。
33、下列哪种技术不属于抵抗多径衰落现象: b
a) 信道编码 b) DTX c) 跳频 d)交织
34、TMSI再分配的主要目的是: A
A,防盗打 B,加密 C,漫游 D,IMSI数量不够时的补充。
35、解决位置更新过多的方法有: ABD
A,重新规划位置区 B,位置区边界尽量避开小区重选频繁的地段
C,给边界处的小区多配置信令信道 D,修改CellReselectHysteresis参数四、问答题
1、请列出切换失败的几种原因(请至少列出三种)
(1) 硬件问题(例如时钟板出了问题,无法同步)
(2) 原小区存在干扰导致无法解码HANDOVER COMMAND 的信息;目标小区存在干扰
(3) 孤岛效应(同BCCH,BSIC)
(4) 要切入的目标小区信道资源短缺
(5) 恶劣的无线条件导致MS无法收到原小区的切换命令或无法占用目标小区所指配的信道(恶劣的无线条件往往是由小区之间覆盖重叠较少引起)
(6) 覆盖问题:目标小区与源小区没有足够的重叠区域
(7) 由于天线受到阻挡或同一小区的两根天线覆盖不均匀导致
(8) 直放站放大了噪声
(9) 参数设置问题:如T3103设置过小,导致MS没来得及占用上目标小区的信道
(10) A接口负荷过大产生拥塞,导致MSC内或MSC之间传送切换请求和切换命令时无时隙可用。
MSC的LAC表定义不全。2、移动台为空闲模式下,移动台接收到小区1和小区2的信号电平如下:
AV_RXLEV = 26 in cell 1 , AV_RXLEV = 20 in cell 2
具体参数如下:
小区 1: TXPWR_MAX_CCH = 39 dBm
RXLEV_ACCESS_MIN = 20
CELL_RESELECT_HYSTERESIS = 4dB
小区2: TXPWR_MAX_CCH = 33 dBm
RXLEV_ACCESS_MIN = 14
MS是否执行小区选择?
a) 如果是 phase 1 MS,小区1和小区2属于同一个位置区
b) 如果是 phase 1 MS ,小区1和小区2不属于同一个位置区
提供以下信息:
C1 = AV_RXLEV - ACCESS_MIN - Max (0, MS_TXPWR_MAX_CCH - P)
MS GSM900 Phase 1, power class 3 = 37 dBm.
CELL 1:C1=26-20-2=4
CELL 2::C1=20-14=6
C1(CELL2)>C1(CELL1)进行小区重选
不同LAC:
当C1(CELL2)〉C1(CELL1)+ CELL_RESELECT_HYSTERESIS时,才进行小区重选
3、如果发现一个BS240基站宕机,而电源是好的,重新开关基站后发现基站仍然无法正常工作,试图连接LMT也未能成功(假设LMT是好的),请分析一下,一般可能是什么原因导致如此故障,并采取何措施进行恢复。
应为COBA负责LMT的连接功能,可能COBA损坏或备板损坏,需要更换COBA进行恢复;
4、BS240基站配置成8/8/8,硬件包括一个基本机架和两个扩展机架。在开通过程中,发现三个机架CU模块的创建很顺利,但在创建扩展机架的DUAMCO时,总是不成功。无论尝试多少次,系统是中提示DUAMCO的状态是“not installed”。现假设机架的备板没有问题,机架间相连的电缆也没有问题。请解释可能的原因。
ACT故障
合路器损坏
CAN BUS故障
COBA或COSA隐性故障
合路器背板故障
COBA合COSA背板故障
机柜内部连线是否紧密选择题
1,在GSM移动通信系统中,开放的通信接口有:(abd )
a, Air接口
b, A接口
c, A-bis接口
d, O&M接口
2,在GSM移动通信系统中,空中接口使用的协议是:( d)
a, LAPD信令 b, A-bis信令 c, CCS7信令 d, LAPDm信令
3,在呼叫时,用于进行鉴权和呼叫建立的信道有:( b )
a, FACCH
b, SDCCH
c, PCH
d, FACCH
4,郑州市区一个GSM900的基站,可能的BCCH频率为:( bc)
a,29
b,83
c, 96
d,1020
5,三代站基站重启过程中BCFA板停留在0006状态,可能的原因有:(
cd )
a,传输不通
b,传输通,但信令不活
c,信令活,下载软件包
d,信令活,但BSC机房未加数据
6,开通三代站基站时,传输路由和传输板TRUA都没有问题,但是基站传输板亮黄灯,可能的原因有:( a )
a,同步设置不正确
b,分支表设置不正确
c, TRUA跳线有问题
d,基站后背板跳线有问题
7,开通四代站基站的过程中,所有载频停留在 状态,可能的原因是:( cd )
a, BB2A有问题
b, BOIA有问题
c, traffic manager有问题
d, 传输板有问题
8,一对爱立信的微波,如果有一端的发射频率为14930.00,那么对端的发射频率应该为( a )
a,14510.00
b,15350
c,13920.00
d,15940.00
9,开通一个微蜂窝基站,其传输从一个宏蜂窝基站做交叉连接分时隙并经过微波,开通之后本站载频能够工作,但是出2993告警,拨测无法占用户,可能的原因:( d )
a,微波故障 b,宏蜂窝基站传输板故障 c,微蜂窝基站传输板故障 d,宏蜂窝基站交叉连接故障
10,一个NOKIA微波,其电源指示灯亮黄灯,可能的故障原因有:(ad )
a,时钟未校准
b,馈线和室外单元故障
c,2M中断
d,2M通路环路
11,下列那些单元可以生成13M时钟:( ac)
a, BCFA
b, MCLG
c, BOIA
d, VXTA
12,某个三代站载频TRXA不能够执行调频功能,可能的故障点在:(a )
a, BB部分
b, TX部分
c, RX部分
d, MCLG部分
H. java面试题及答案
阿里巴巴的.
I. Java基础面试题都有哪些
1.java异常机制的原理与应用
答:每当程序出现异常之后,如果程序没有进行相应的处理,则程序会出现中断现象。
实际上,产生了异常之后,JVM会抛出一个异常类的实例化对象,如果此时使用了try语句捕获的话,则可以进行异常的处理,否则,交给JVM进行处理。当try语句捕获异常之后,将与catch语句的异常类型进行匹配,如果匹配成功则执行catch内的语句。简单的应用:在所以throws语句的地方加入try-catch。标准应用:try-catch-finally-throw-throws一起使用。
2. 垃圾回收机制的优点
答:释放无用的对象所占用的空间。方式:自动回收,手动回收。使用System.gc(),实际上调用Runtime.getRuntime().gc()
3. Error与Exception区别
答:Error是jvm进行处理,是jvm出错
exception是可以由程序处理的,可以用try-catch捕获的
4. final,finally,finallize
答:final定义的变量的值不能改变,定义的方法不能被覆盖,定义的类不能被继承
finally是异常的统一出口,finallize是垃圾回收前的收尾工作,是Object类定义的
5. Anonymous Inner Class是否可以extends,是否可以implements Interface
答:允许继承和实现,因为匿名内部类就是在抽象类和接口的基础上发展起来的
6. Static Nested Class 与Inner Class的区别
答:使用Static定义的Class就是外部类,可以通过外部类. 内部类直接访问
而Inner Class是不能被外部访问的,只能通过外部类的实例再找到内部类实例。
7. HashMap and HashTable?
答:HashMap:1) released in jdk 1.2,new Class 2)采用异步处理方式,性能较高,是非线程安全的 3)允许null
HashTable:
1)released in jdk 1.0 ,old Class
2)采用同步处理方式,性能低,是线程安全的
3)不允许null
8. assert代表什么?
答:asserts是jdk 1.4之后发布的新关键字,表示断言,即程序执行到某个地方肯定是预计的值,一般开发很少使用。要使用assert,必须加上 -ea参数
9. gc是什么?
答:gc是garbage collection,垃圾回收,使用gc可以进行垃圾空间的释放
10. String s = new String("xyz")产生了几个对象?
答:一个匿名对象xyz,在栈空间内。一个new实例化的对象,在堆空间内。
11. sleep() and wait()?
答:sleep()是Thread类定义方法,表示线程的休眠,可以自动唤醒
wait()方法是Object类定义的方法,需要手动notify()和notifyAll()//sleep()不释放资源,wait()释放资源
12. Overload与Override的区别
答:Overload:重载
|- 在一个类中定义的若干方法
|- 所有的方法名相同,但参数类型或个数不同
|- 只有参数有关,与返回类型无关
Override:覆写
|- 在继承的关系中
|- 子类定义了父类同名的方法,参数类型或个数最好完全一样。
|- 访问权限不能更严格
13. abstract class 和 interface有什么区别?
答:抽象类:
|-由抽象方法和常量、变量、全局常量、构造方法、普通方法组成
|-使用abstract声明
|-子类要通过extends继承抽象类,子类如果不是抽象类,则必须覆写抽象类的全部抽象方法
|-存在单继承的局限
|-抽象类可以实现若干个接口
接口:
|-由抽象方法和全局常量组成
|-使用interface关键字
|-子类要通过implements实现接口,子类如果不是抽象类,则必须覆写抽象类的全部抽象方法
|-一个子类可以实现多个接口
|-接口不能继承一个抽象类,但允许继承多个接口