第一篇:java程序员面试要点
第一,谈谈final, finally, finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是 Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
第二,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
可以继承其他类或完成其他接口,在swing编程中常用此方式。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
第四,&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).第五,HashMap和Hashtable的区别。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.第六,Collection 和 Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
第七,什么时候用assert。
1.4新增关键字(语法),用于测试boolean表达式状态,可用于调试程序。使用方法 assert,表示如果表达式为真(true),则下面的语句执行,否则抛出AssertionError。另外的使用方式assert < boolean表达式>:,表示如果表达式为真,后面的表达式忽略,否则后面表达式的值用于AssertionError的构建参数。注意编译时要增加-source 1.4 参数,否则报错。]运行时要增加 –ea参数,否则assert行被忽略
第八,GC是什么? 为什么要有GC?
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
第九,String s = new String(“xyz”);创建了几个String Object?
两个
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12Math.round(-11.5)==-11round方法返回与参数最接近的长整数,参数加1/2后求其floor.第十一,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;(可以正确编译)
第十二,sleep()和 wait()有什么区别?
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
第十三,Java有没有goto?
没有
很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。
第十四,数组有没有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,ConcurrentModificationException,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背景的程序员特别喜欢问这种问题。< < 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的。
一般认为第一种形式要更加安全些
其中也存在一些问题,下面补充一下.希望大家继续补充
1.最好介绍一下final修饰变量的情形(分开说明基本类型变量和引用类型变量)。
2.不知道如何描述比较好,匿名内部类本身是一个实现了特定接口或继承了其他类的类。
3.非静态类不能有static的方法。参考一下java collections framework的代码,还能说出很多东西来。
4.&既是位运算符,也是逻辑操作符。
&和&&都是逻辑运算符,它们的区别是,&&进行短路计算。
6.可以补充一下,参考文档。
11.说一下具体的原因可能更好。
13.java有goto这个keyword,不过还没有使用。
15.overload和多态没有任何关系。多态是面向对象的基本特征,是和继承、overriding相关的。原来以为把overload当作多态的一种是从C++来的,后来翻了基本c++的经典的书,也强调多态只是和继承,虚函数,overriding相关,所以不知道这个错误思想从哪来的了.16.public interface Set
看文档就是了.22.“抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。”什么意思?谁规定的?
27.这个比较复杂,例如
public class Main {
public static void main(String[] args){
System.out.println(test());}
public static boolean test(){
boolean b = false;
try {
return b = 4 > 3;
} finally {
System.out.println(b);
//return false;} } }
这个例子中可以看出,return后面的表达式已经计算了,感觉return语句这里被挂起了,如果finally中没有return,这个return就返回.如果finally也有return,那么就是finally中的return返回了.29.碰上不守规矩的程序员谁也没办法.31.还有枚举呢
32.注释有问题.
第二篇:java程序员面试必备的32个要点
java程序员面试必备的32个要点
第一,谈谈final, finally, finalize的区别。
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是 Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
第二,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
可以继承其他类或完成其他接口,在swing编程中常用此方式。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。
第四,&和&&的区别。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and).第五,HashMap和Hashtable的区别。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable.第六,Collection 和 Collections的区别。
Collection是集合类的上级接口,继承与他的接口主要有Set 和List.Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
第七,什么时候用assert。
1.4新增关键字(语法),用于测试boolean表达式状态,可用于调试程序。使用方法 assert,表示如果表达式为真(true),则下面的语句执行,否则抛出AssertionError。另外的使用方式assert < boolean表达式>:,表示如果表达式为真,后面的表达式忽略,否则后面表达式的值用于AssertionError的构建参数。注意编译时要增加-source 1.4 参数,否则报错。]运行时要增加 –ea参数,否则assert行被忽略
第八,GC是什么? 为什么要有GC?
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以 自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
第九,String s = new String(“xyz”);创建了几个String Object?
两个
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12Math.round(-11.5)==-11round方法返回与参数最接近的长整数,参数加1/2后求其floor.第十一,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;(可以正确编译)
第十二,sleep()和 wait()有什么区别?
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用 sleep不会释放对象锁。wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对 象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
第十三,Java有没有goto?
没有很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。
第十四,数组有没有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,ConcurrentModificationException,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,是否可同时是synchroniz 都不能
第二十二,接口是否可继承接口? 抽象类是否可实现(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背景的程序员特别喜欢问这种问题。<<
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的。
一般认为第一种形式要更加安全些
(注:第九可能有问题)
第三篇:JAVA程序员面试技巧
java程序员面试题 第一部分:选择题 question no: 1
1、public class test { public static void changestr(string str){ } public static void main(string[] args){ string str=1234;changestr(str);system.out.println(str);} } please write the output result : question no:2 1.public class test { 2.static boolean foo(char c){ 3.system.out.print(c);4.return true;5.} 6.public static void main(string[] argv){ 7.int i =0;8.for(foo(a);foo(b)&&(i<2);foo(c)){ 9.i++;10.foo(d);12.} 13.} 14.} what is the result? a.abdcbdcb b.abcdabcd d.an exception is thrown at runtime.question no: 3 1.class a { 2.protected int method1(int a, int b){ return 0;} 3.} which two are valid in a class that extends class a?(choose two)a.public int method1(int a, int b){ return 0;} b.private int method1(int a, int b){ return 0;} c.private int method1(int a, long b){ return 0;} d.public short method1(int a, int b){ return 0;} e.static protected int method1(int a, int b){ return 0;} question no: 4 1.public class outer{ 2.public void someoutermethod(){ 3.// line 3 4.} 5.public class inner{} 6.public static void main(string[]argv){ 7.outer o = new outer();8.// line 8 9.} 10.} which instantiates an instance of inner? a.new inner();// at line 3 b.new inner();// at line 8 c.new o.inner();// at line 8 d.new outer.inner();// at line 8//new outer().new inner()question no: 5 which method is used by a servlet to place its session id in a url that is written to the servlet’s response output stream? question no: 6 which two are equivalent?(choose two)a.b.c.d.e.f.g.question no: 7 which of the following statements regarding the lifecycle of a session bean are correct? 1.java.lang.illegalstateexception is thrown if sessioncontext.getejbobject()is invoked when a stateful session bean instance is passivated.2.sessioncontext.getrollbackonly()does not throw an exception when a session bean with bean-managed transaction demarcation is activated.3.an exception is not thrown when sessioncontext.getusertransaction()is called in the afterbegin method of a bean with container-managed transactions.5.accessing resource managers in the sessionsynchronization.afterbegin method of a stateful session bean with bean-managed transaction does not throw an exception.第二部分:概念题
1.描述struts体系结构?对应各个部分的开发工作主要包括哪些? 3.jsp有哪些内置对象和动作?它们的作用分别是什么?
4、sql问答题
select * from table 和
select * from table where name like %% and addr like %% and(1_addr like %% or 2_addr like %% or 3_addr like %% or 4_addr like %%)的检索结果为何不同?
5、sql问答题
表结构:
1、表名:g_cardapply 字段(字段名/类型/长度): g_applyno varchar 8;//申请单号(关键字)g_applydate bigint 8;//申请日期 g_state varchar 2;//申请状态
2、表名:g_cardapplydetail 字段(字段名/类型/长度): g_applyno varchar 8;//申请单号(关键字)g_name varchar 30;//申请人姓名 g_idcard varchar 18;//申请人身份证号 g_state varchar 2;//申请状态
其中,两个表的关联字段为申请单号。
题目:
1、查询身份证号码为***的申请日期
2、查询同一个身份证号码有两条以上记录的身份证号码及记录个数
3、将身份证号码为***的记录在两个表中的申请状态均改为07
4、删除g_cardapplydetail表中所有姓李的记录
华为java笔试题
一、单项选择题
1.java是从()语言改进重新设计。a.ada b.c++ c.pasacal d.basic篇二:java程序员面试注意事项
一、回答问题的思路
先正面叙述一些基本的核心知识,然后描述一些特殊的东西,最后再来一些锦上添花的东西。要注意有些不是锦上添花,而是画蛇添足的东西,不要随便写上。把答题像写书一样写。我要回答一个新技术的问题大概思路和步骤是:我们想干什么,干这个遇到了什么问题,现在用什么方式来解决。其实我们讲课也是这样一个思路。
答题时,先答是什么,再答有什么作用和要注意什么(这部分最重要,展现自己的心得)。答案的层次分明,条理清楚都非常重要,从这些表面的东西也可以看出一个人的习惯、办事风格、条理等。要讲你做出答案的思路过程,或者说你记住答案的思想都写下来。把答题想着是辩论赛。答题就是给别人讲道理、摆事实。答题不局限于什么格式和形式,就是要将自己的学识展现出来!
另外,不要因为人家题目本来就模棱两可,你就心里胆怯和没底气了,不敢回答了。你要大胆地指出对方题目很模糊和你的观点,不要把面试官想得有多高,其实他和你就是差不多的,你想想,如果他把你招进去了,你们以后就是同事了,可不是差不多的吗?
二、关于就业薪水
如果你是应届生,那不能要高工资,好比大饼的故事,要拿高工资,就去中关村!少数人基础确实很好,在校期间确实又做过一些项目,那仍然是可以要到相对高的工资的。
初级程序员薪水:2000-4500 中级程序员薪水:4000-7000 高级程序员薪水:7000以上
公司招聘程序员更看重的要用到的编码技术、而不是那些业务不太相关的所谓项目经历:
三、公司想招什么样的人
对于一些公司接到了一些项目,想招聘一些初中级的程序员过来帮助写代码,完成这个项目,你更看重的是他的专业技术功底,还是以前做过几个项目的经历呢?我们先排除掉那些编码技术功底好,又正好做过相似项目的情况,实际上,这种鱼和熊掌兼得的情况并不常见。其实公司很清楚,只要招聘进来的人技术真的很明白,那他什么项目都可以做出来,公司招人不是让你去重复做你以前的项目,而是做一个新项目,业务方面,你只要进了项目团队,自然就能掌握。所以,大多数招聘单位在招聘那些编码级别的程序员时也没指望能招聘到做过类似项目的人,也不会刻意去找做过类似项目的人,用人单位也不是想把你招进,然后把你以前做过的项目重做一遍,所以,用人单位更看重招进来的人对要用到的编码技术的功底到底怎样,技术扎实不扎实,项目则只要跟着开发团队走,自然就没问题。除非是一些非常专业的行业,要招聘特别高级的开发人员和系统分析师,招聘单位才特别注重他的项目经验和行业经验,要去找到行业高手,公司才关心项目和与你聊项目的细节,这样的人通常都不是通过常规招聘渠道去招聘进来的,而是通过各种手段挖过来的,这情况不再我今天要讨论的范围中。
四、公司面试会问什么,.技术学得明白不明白,人家几个问题就把你的深浅问出来了,只要问一些具体的技术点,就很容易看出你是真懂还是假懂,很容看出你的技术深度和实力,所以,技术是来不得半点虚假的,必须扎扎实实。
由于项目的种类繁多,涉及到现实生活中的各行各业,什么五花八门的业务都有,例如,酒店房间预定管理,公司车辆调度管理,学校课程教室管理,超市进销存管理,知识内容管理,等等……成千上万等等,但是,不管是什么项目,采用的无非都是我们学习的那些目前流行和常用的技术。技术好、经验丰富,则项目做出来的效率高些,程序更稳定和更容易维护些;技术差点,碰碰磕磕最后也能把项目做出来,无非是做的周期长点、返工的次数多点,程序代码写得差些,用的技术笨拙点。如果一个人不是完完全全做过某个项目,他是不太关心该项目的业务的,对其中的一些具体细节更是一窍不知,(如果我招你来做图书管理,你项目经历说你做过汽车调度,那我能问你汽车调度具体怎么回事吗?不会,所以,你很容易蒙混过去的)而一个程序员的整个职业生涯中能实实在在和完完整整做出来的项目没几个,更别说在多个不同行业的项目了,有的程序员更是一辈子都只是在做某一个行业的项目,结果他就成了这个行业的专家(专门干一件事的家伙)。所以,技术面试官通常没正好亲身经历过你简历写的那些项目,他不可能去问你写的那些项目的具体细节,而是只能泛泛地问你这个项目是多少人做的,做了多长时间,开发的过程,你在做项目的过程中有什么心得和收获,用的什么技术等面上的问题,所以,简历上的项目经历可以含有很多水分,很容易作假,技术面试官也无法在项目上甄别你的真伪。
五、简历怎么写
简历该怎么写:精通哪些技术,有一些什么项目经历
六、怎样达到简历上的标准(培训中心教项目的目的)教项目是为了巩固和灵活整合运用技术,增强学习的趣味性,熟悉做项目的流程,或得一些专业课程中无法获得的特有项目经验,增强自己面试的信心。讲的项目应该真实可靠才有价值,否则,表面上是项目,实际上还是知识点的整合,对巩固技术点和增强学习的趣味性,但无法获得实际的项目经验。
第四篇:java程序员面试必读
Java程序员,面试必读
☆★☆★快来!10月25日读者见面会☆★☆★
清华大学出版社《Java程序员,上班那点事儿》作者:钟声 章节:1.2.2:
面试是一个“简单”而又“复杂”的事情,正因为它具有“简单”和“复杂”的双重性质,才使我们对这个问题不敢掉以轻心。介绍如何面试,有时候甚至可以写一本书,而有时候,你什么都不准备却可以面试成功。
因为,面试的成功与否完全取决于主考官,因此,这门学问的主要科目就是研究主考官的招聘心理。
我们研究好主考官的招聘心理,自然就可以做到“知己知彼”了。
本小节只是说说面试的“心理战”,而想真正的能够对答如流,需要的是“真功夫”,要想具备“真功夫”还是需要真正的技术水平作为前提的,本小节的内容只是给那些已经具备相应技术水平的应聘者提供一定的应聘技巧而已,以避免没有把自己的“真功夫”完全展示出来从而丧失工作机会。
面试前对自己的心理暗示:
面试并不是考试,只是和未来的同事聊聊天。
“心理战”对象,可能出现的主考官如下几类:
人物1,人力资源部主管(HR)
人物2,你未来的主管
人物3,你未来主管的主管
我们分别来分析遇到不同类型的主考官的不同情况。
人物1:人力资源部主管(HR)
“人物1”的出现往往是进行该职位的初审,给出一个概观定论,如果合格将会提交给“人物2”。“人物1”他们所要进行的是对人的心理和基本技能方面的一个判断。
不过,也有一些公司,首次面试仍然是由业务主管来进行,然后再将初审合格的人交给人力部门来复试,如果,是这种情况,你应该就算90%入职成功了,因为,这个复试往往是走个形式,看看此人有没有被主管忽略的大问题,如果没有,基本就差不多了。
那么,我们仅仅以第一种情况为例,看看“人物1”大多提出的是哪些问题。
常见提问1:请你自我介绍一下
这个问题,是人力部主考官必问的问题,这个问题的提问并不是真的想了解你的个人情况,因为,你的情况基本上在简历上都写着呢。他提出这个问题的主要目的是来考察你的语言表达能力,和你在表达过程中的一些细节表现。
所以,我们应该怎么回答呢?
看看如下对话:
HR:“请你自我介绍一下”
A君:“您看简历吧,基本上我都写在简历上了。”
HR:汗„
HR:“请你自我介绍一下”
B君:“我叫XXX,年龄24,性别男,籍贯„„”
HR:倒„
HR:“请你自我介绍一下”
C君:“这话从何说起呢?话说10年前„„”
HR:晕„
首先,不要认为主考官没有认真的看你的简历,没有看你的简历就让你来面试,是在浪费他自己的时间,所以绝对是首先认为简历比较合适,才约你来的。
第二,自我介绍并不是让你重复一下你简历上的所有内容,那些内容简历上都有,主考官主要是想听听你如何表达和语言的逻辑能力。
第三,这个表达不要滔滔不绝,要有张有弛,有收有放,主要将自己的想说的优势部分分别道来,能够通过你的介绍让人感觉到你的“亲和力”为佳。
“语言表达能力”并非我们日常所说的“能侃”或者“口才”,这是片面的理解,在面试过程中,我们要展现的“语言表达能力”是指,“语言亲和力”,能够让人感受到你的“沟通”能力。
回答范例:
您好!我来自XXX大学,是应届毕业生,所学专业是计算机应用技术,我在校期间参加多项课余工作,参与了多个应用系统的开发与设计,熟练掌握Java开发工具和应用系统的各种开发方法。在学习与工作期间,总结与实践了各种技术实现手段,有了一些小的积累。
近期已经毕业,看到您公司的招聘信息,感觉自己的技术与能力非常合适,就投递了简历。希望能过了您这关,呵呵„„(注:最后的微笑最好不要太牵强,目的是缓和气氛)
大家看到了,这个回答范例的自我介绍非常简练,但是,什么也没有落下。既实事求是的说了自己是应届毕业生,又说明了自己虽然是应届毕业生,但是参加了很多的课余工作,并且具有实际的项目开发经验,而且有了一些小的积累。
既说了自己的对这份工作和自己能力之间的考量,又表达了自己对主考官的期望。
意思表达时不卑不亢,言简意赅,让人听起来就感觉很舒服。
这时候你的目的就达到了,展现出自己的“语言表达能力”和“语言亲和力”,同时又能够让人感受到你的“沟通”能力。
常见提问2:你最大的优点是什么?
这个问题如果是HR问,则最好回答了。
回答这个问题的关键是“围绕自己的技术特长”展开话题,为什么这样?
因为,往往HR都不懂技术,围绕技术说自己的特长很容易给他说晕(当然,个别懂技术的HR除外)。这里要注意的是,在说技术问题的时候,不要让HR感觉自己什么都不懂,要注意说话的节奏,不要太快,不要太骄傲。
常见提问3:你最大的缺点是什么?
这个问题是HR的杀手锏,可以说这是HR的狠招,这个问题最难回答,一般应聘者都本着“扬长避短”的心态去面试,冷不防冒出这么一个问题,还真是挺棘手的。
需要清楚HR问这个问题的目的,其目的仍然不是要真的需要知道你的缺点是什么,还是看看你的表达能力,尤其是需要考察应聘者面对危机的时候的处理能力。所以,我们不要用下列方式作答:
1、说出自己的真实缺点,尤其是在前面谈话中没有暴露出来的缺点
2、认为说说某些大众化的缺点即可,认为说一两个无妨
3、说自己没有缺点,强调自己比较完美
总之,HR心里想的是:需要了解他面前的这个人在面对困难的时候,是如何处理问题的,从处理危机的方法来判断此人的处理事情的灵活性。当然,如果此人自己暴露出自己的缺点当然更好,省得需要去想办法问更多的问题去发现了。
所以,在回答这个问题的时候,要看起来“真诚”、“坦白”,同时,说出来的并非自己的缺点,而是最好在别人看来是优点的那些方面。
这个问题问的概率很大,通常如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,肯定不会录用你。HR喜欢求职者从自己的优点说起,中间加一些小缺点,最后再把问题转回到优点上,目的还是突出自己优点的部分。
HR喜欢聪明的求职者。
这一点比较难掌握,我们也给出范例:
回答范例:
呵呵,这个问题好难回答啊!我想想„„(亲和力表现,也缓解了自己的紧张情绪)
我的缺点是,比较执着,比如在技术方面比较爱钻研,有的时候会为一个技术问题加班到深夜。还有就是,工作比较按部就班,总是按照主管的要求完成任务。另外的缺点是,总在自己的工作范围内有创新意识,并没有扩展给其他同事。这些问题我想我可以进入公司以后以最短的时间来解决,我的学习能力很强,我相信可以很快融入公司的企业文化,进入工作状态。
嗯„„,我想就这些吧。
这个回答范例开头第一句话就让人觉得很自然,因为这个求职者所说的话恰恰表达了一般人听到这个问题后的心理状态,还有你一定会有一个思考的时间,因为,谁也不会立刻说出自己的缺点。
后面说出的几个缺点都是一环套一环的,说了自己“比较执着”,但又说自己其实是“比较爱钻研”,说自己总是“按部就班”,但又补充了其实那是“按照主管的要求完成任务”,这时候,如果用人单位觉得,此人是不是没有“创新思维”的时候,马上就补充道“在自己的范围内有创新意识”,至于“没有扩展给其他同事”这件事,其实无关紧要,干脆就卖给HR吧。
以上回答确实卖弄了些“技巧”,相信HR也一定能看的出来,但是,即使看出来了也无妨,HR也会心领神会,知道你是一个比较善于沟通并且善于表达的人。
人物2:你未来的主管
当见到未来主管的时候,往往是应聘者已经过了HR那一关,或者应聘者已经过了笔试的那一关,因此见到这位人物意味着距离成功已经向前进了一步。
“人物2”的面试也有他的目的,他是和你在日常工作中接触最多的人,作为你的直接上司,他需要在工作中经常给你分配任务,他需要对他的主管负责,因此,他招聘的这个人选必须是可以帮助他完成他整个Team的目标的人。
往往那个吸引你来面试的“招聘启示”就是这个人物所撰写的,因此,其实在你和他见面以前,早已经通过“招聘启示”和他有过交往了。因此,从“招聘启示”中就可以初显这位主管的端倪。
注意,主管同志并不是人事领域的高手,不会用各种语言技巧去发掘你身上的缺点或者优点,往往问题都是实打实的,或者比较一针见血的,而且,更偏重于日常工作。
那么,我们下面和他过过招。
常见提问1:请你自我介绍一下
这个问题,HR也问过了,到他那里有可能还会问,主管问这个问题和HR虽然问的问题一致,但是,其目的并不是完全相同的。
他不仅仅想考察一下你的表达能力,同时还想考察一下你思路的清晰程度。
我们在回答他的问题前,一定要想清楚一件事:他是该技术领域的高手,就是我们“程序员修炼三境界”中描述的“第二层境界”的那个人物,如果还想更清楚的了解这个人物,可以去重新看看前面的那个章节。
这个自我介绍最好说的较为简洁,不要过分炫耀自己的技术如何如何强,免得引起这位主管的兴趣,引起他的技术兴趣没有什么好处,只会带来更多的技术问题的发问。
常见提问2:你最引以为自豪的项目是什么?
他问这个问题的意图是想考察你的成长路径和编程习惯,因为,最让你自豪的项目往往是你成长最快的项目,那个成长最快的项目往往会给你今后的编程习惯留下很多痕迹。
所以,通过你对那个引以为豪的项目的描述,有经验的他会很快锁定你技术成长中的缺陷和闪光点,从而判断是否能够“为我所用”。
你最好拿出一个自己最擅长技术的那个项目进行介绍,这个项目最好能够比较贴近招聘要求的那些指标。如果,没有做过什么有规模的正规项目,你就拿些自己非常擅长或者有创意的开发作品来说。这样做的好处是,他听完你的介绍后,会接下来进行提问,他所有发问,你都成竹在胸了。
切忌拿一个别人的项目,或者自己参与很少的项目来介绍,如果这样的话,一旦他深入的询问这个项目的问题,很可能你会所答非所问,反而造成更严重的影响。你大可以和他大谈特谈你在那个项目中获得的经验,那会引起此君的共鸣,有可能的话,说出一些你自己的小技巧,他会很高兴。
常见提问3:如果我录用你,你将怎样开展工作
他问这个问题的意图是,希望看看你对这个职位工作展开的一些设想,仍然是“实打实”从工作出发来提问的。所以,你在回答这个问题的时候也要“实打实”,切忌虚无缥缈的一通“高、大、全”。
一般要列出自己的入职之后的工作计划,而这些计划需要详尽,同时需要体现出你工作的严谨性,也不能是想当然的说出一些与工作无关的计划,这都有可能适得其反。
回答范例:
针对这个如何展开工作的问题,我目前仅仅是对咱们公司的大体情况有一个了解,因此,对这个职位的工作性质仅仅是自己的一个理解。
所以呢,我也不知道是否合适,我只能说一个大概。
作为这个职位而言,我想我首先要对本公司的主营业务要有一个相当的了解,了解我们公司的业务组成部分、业务的发展方向、我们面向的客户性质等等。
第二,我要了解所属部门在公司中的地位,以及部门的工作目标,从而确定自身的工作努力方向。
第三,了解我参与项目的开发方式,架构方式,紧密配合领导工作,尽快投入具体的开发工作。
这就是我开展工作的计划。
从大到小的方式进行了解,这么说可以让领导知道你不是一个盲目工作的人,而是一个按部就班,稳扎稳打的人,使人觉得和你合作很踏实。另外,一定要强调所属项目或部门的目标,因为这关系到面试你的主管的切身利益。最后,强调“尽快”投入开发工作,这样,领导就放心了,你不是一个“只了解,不工作”的人。
面对主管唯一要尽量表现的就是,你看起来非常像一个“工具”,入职后马上就可以发挥作用。
人物3:主管的主管
遇到“主管的主管”的时,往往已经是复试,这说明基本上已经是最后一关了。但要注意,这个最后一关是非常关键的一“关”。因为,往往如果你未来的主管在公司中某个专业够权威的话,他的主管一般不会管招聘的事情。因此,你看到这位“老大”的原因,多半是你未来的那位主管的专业地位还没有“稳定”。
最后的“搏杀”
过程大概是这样的,一般会将两个或三个人提交给“老大”,让“老大”定夺,去选择其中的一个人,因此,这个阶段是一个最后的“搏杀”关键阶段。老大”关注的问题:成本+人员素质
所以,我们在和“老大”过招的时候,一定要注意自己的言行,切忌不要穿“奇装异服”,或者男士留有个性的头发或胡子,总之一定要让人看起来特别的“平常”,虽然不是“西装革履”但也要“衣冠整洁”。
因为,老板们最不喜欢“个性”员工,而最喜欢的是“优秀”的普通员工。
清华大学出版社《Java程序员,上班那点事儿》作者:钟声 章节:1.2.2。
本文来自CSDN博客,转载请http://blog.csdn.net/useway/archive/2009/08/02/4402385.aspx
标
明
出
处
:
第五篇:Java程序员面试
Java程序员面试三十二问
第一,谈谈final,finally,finalize的区别。
Fanal 修饰符 可以修饰类,属性和方法。被修饰的类不可以派生子类,不能被作为父类被继承。它修饰的属性和方法必须在声明的时候给定初值,以后不能修改。
Fanaly 在捕获异常的时候最后执行的语句,可以不写。
Fanalize 是Object类中定义的,所以所有的类都继承了它,这个方法是垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
第二,Anonymous Inner Class(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
可以继承其他类,也可以实现其他接口。匿名内部类在swing中比较常见。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
静态内部类,普通的内部类
静态内部类是不能直接调用外部的类,可以通过外部类的引用来调用
非静态类inner class 可以自由的引用外部类的属性和方法,但是它与一个实例绑定在了一起,不可以定义静态的属性、方法。
第四,&和&&的区别。
&和&&都是java中的逻辑运算符
&两边的表达式的结果都是true的,整个的运算结果才是true,只要有任意一个是false,其结果就是false的
&&是短路与,既第一个表达式是false 就不用判断第二个表达式,结果就是false
第五,HashMap和Hashtable的区别。
它们实现了将key 映射到 value的对象,键和值都是对象,不能有重复的键,可以有重复的值
Hashtable是基于陈旧的Dictionary类的,HashMap是Map接口的一个实现 HashMap可以定义null key 和null 的value,而HashTable不可以
HashMap是线程不安全的,而HashTable线程安全,所以HashMap的效率比HashTable的要高些
第六,Collection 和 Collections的区别。
Collection是所有集合的父接口。
List 和set是Collection的子接口
Collections是操作有关集合的工具类。
第七,什么时候用assert.断言 Debug模式下才有效
第八,GC是什么? 为什么要有GC?
GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。
第九,String s = new String(“xyz”);创建了几个String Object?
2个,一个是引用对象s 还有字符串对象xyz
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
-11 第十一,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
S1 =s1+1 会出错,因为1默认为int型。相加会出错。
S1+=1;虽然是一个意思,但是在jvm里面是不同的方法做的,是运算符重载,所以是不一样的。
第十二,sleep()和 wait()有什么区别?
Sleep()是线程的休眠,方法里边要有毫秒值。意思是过了多少毫秒后会执行一次。不释放系统资源
Wait()是线程的等待,必须唤醒notify才能够执行,不占用系统的资源
第十三,Java有没有goto?
没有,不过它是java语言中的保留字
第十四,数组有没有length()这个方法? String有没有length()这个方法?
数组中没有length()方法,有length属性。
String有length()方法,字符串的长度。
第十五,Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
Overload是重载 重载的方法名字必须相同,参数表不同,可以改变返回类型
Override 是重写 重写是子类继承父类的虚方法重新定义参数表要相同,返回类型也要和父类相同。
Overloaded可以改变返回类型
第十六,Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
set里的元素是不能重复的,用iterator()方法来区分重复与否。
equals 方法(是String类从它的超类Object中继承的)被用来检测两个对象是否相等,即两个对象的内容是否相等。
==用于比较引用和比较基本数据类型时具有不同的功能: 比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true
第十八,error和exception有什么区别?
Error 是编辑时出现的错误,不能通过编译,也就是不能生成.class的文件
Exception是异常,异常是可以避免和捕获的,程序能够通过编译。第十九,List,Set,Map是否继承自Collection接口?
List set
是继承Collection 接口的。Map不是 第二十,abstract class和interface有什么区别?
abstract class是抽象类,可以定义普通方法,也可以定义只有方法名,没有实现的方法。抽象类是被继承的 interface是接口,所有的方法都是抽象方法。实现接口就是重写接口里的所有方法。
第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
Abstract和method是不可以static的,因为抽象类是要被继承的。
native是映射本地方法,不存在被子类继承,所以也不能与abstract混用
抽象类没有具体的实现,觉得定义成synchronized是没有必要的,修饰具体的方法
才有意义
第二十二,接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
接口可以继承接口,extends
抽象类可以实现接口。
抽象类是可以继承实体类的,但实体类中要有明确的构造函数。第二十三,启动一个线程是用run()还是start()?
启动线程要是start()方法。
第二十四,构造器Constructor是否可被override?
构造器不能被重写的,可以重载。第二十五,是否可以继承String类?
不能,String是final的。
第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
如果其他的方法不是同步的,是可以进去的。
第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
finally里的代码会执行,在return之前执行
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
2<<3 第十七,给我一个你最常见到的runtime exception.NullPointerException 空指针
ArrayIndexOutOfBoundException
数组下标越界
ClassCastException 造型异常 第二十九,两个对象值相同(x.equals(y)== true),但却可有不同的hash code,这句话对不对?
这是对的,equals方法是比较两个值。而不是内存地址。
第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
第三十二,编程题: 写一个Singleton出来。
Public class Singleton{ Private static Singleton s = new Singleton();Private Singleton(){ } Public static Singleton getInstance(){ Return s;}
}