第一篇:JAVA面试宝典,java面试题,java面试指南,java面试必备试题,java程序员必备面试题
考官:java中的反射机制是什么,有什么作用啊?
要点:
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。Java反射机制主要提供了以下功能:在运行时判定任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判定任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
问题:Java为什么要引入异常处理机制
要点:
程序执行时经常会出现除零溢出、数组越界等运行错误,影响程序的正常执行。错误及异常是不可避免的,一个好的应用程序,在满足用户要求的各种功能的同时,还应具备能预见程序执行过程中可能产生的各种异常的能力,并能为异常情况给予恰当处理。在Java语言中,这种技术就是异常处理 Java语言通过面向对象的异常处理机制来解决运行期间的错误,可以预防错误的程序代码或系统错误所造成的不可预期的结果发生。减少编程人员的工作,增加了程序的灵活性,增加程序的可读性和健壮性.问题:什么是JAVA多线程机制
一.什么是多线程?
多线程是指同时存在几个执行体,按照不同的执行线索共同工作的情况。
二.什么是程序,进程和线程?
程序是一段静态的代码,是应用软件执行的蓝本。
进程是程序的一次动态执行过程,它对应了从代码加载,执行至执行完毕的一个完整的过程。这个过程也是进程本身从生产,发展至消亡的过程。
线程是比进程更小的执行单位。
区别:一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线索即每个线程也有其从生产,发展到消亡的过程。
三.线程的生命周期
线程的生命周期可分为四个阶段,新建,运行,中断和死亡。
新建:当一个Thread类或者其子类的对象被声明并创建时,新生成的线程就处于新建装他,有了相应的内存空间和其他资源。
运行:线程被创建之后,就有了运行的条件了,一旦轮到它来享用CPU资源时,便可以摆脱创建它的主进程开始了自己的生命周期。
中断:一个正在执行的线程可能被认为的中断,让出CPU使用权,进入阻塞状态。线程阻塞时,不能进入排队队列,只有当引起阻塞的原因被撤销时,线程才可转入就绪状态,重新进入排队队列中,等待CPU资源,以便从中止处开始运行。
死亡:线程死亡有2种情况,一是正常运行,完成了它全部的工作。另一种是线程被提前强制终止。死亡状态下的线程,释放了被分配的内存。
四.线程的优先级
在java系统中,线程调度依据优先级基础上的“先到先服务”原则。
Thread类的setPriority(int a)方法可设置线程的优先级,取值有Thread.MIN_PRIORITY,Thread.MAX_PRIORITY, Thread.NORM_PRIORITY三种,默认级别为Thread.NORM_PRIORITY.五.如何实现多线程
Java编程中实现多线程有两种方式:一是继承Thread类,用其子类创建线程,二是实现Runnable接口
六.线程同步
当两个或者多个线程同时访问一个变量,并且一个线程需要改变某个变量时,需要对修改数据的方法修饰为synchronized.当一个线程在使用同步方法时需要用到某个变量,而此变量又需要其他线程修改后才能符合本线程需要,此时用wait(),让本线程等待。
其他线程如果在使用同步方法时不需要等待,那么当它使用完该方法后,用notifyAll()方法通知所有由于使用该同步方法而处于等待的线程结束等待,(notify()方法只能通知第一个处于等待的线程结束等待)
七.Interrupt()方法
一个线程在run方法执行完后便会自动消灭,如果想在run方法执完毕前就消灭线程,可以使用interrupt()方法,此时该线程会捕获InterruptedException异常,在处理该异常的语句里告诉线程立刻结束run方法的执行。
问题:java多线程使用cup是什么机制
要点:java获得cup使用权根据优先级,高优先的先执行,这个和操作系统是一样的,但是优先级别的控制是通过虚拟机控制的,然后在执行的时候是通过操作系统时间片的机制,多线程java有自己的调度算法,虚拟机会自动调度执行的线程,而操作系统处理的是cpu的执行,其实两者都有调度算法,xp的机制我想和
1、main方法是怎么写的public static void main(String [] args){}
2、变量的命名规则是怎么样的?
采用驼峰命名法,见名知意,以小写字母开始。
常量命名:全部大写。
方法命名: 小写字母开始,驼峰命名。
类命名:首字母大写。
3、if„else„和写两个if 有什么区别
if„else„只执行其中一条,写两个if,两个都要执行
4、在JAVA中直接写浮点常数,默认是什么类型?
默认是double类型
5、什么是标识符?它的命名规则是什么?
凡是可以命名的地方都叫标识符。
标识符有两种:
1、系统标识符(关键字);
2、用户标识符
以字母、数字、下划线、$复活组成,不能以数字开头
6、什么是变量?
变量是命了名的内存空间,并且空间的值是可以改变的。
7、JDK与JRE分别是什么?
JDK叫java开发工具集,包括编译环境、运行环境、调试环境以及基础类库。
JRE叫java运行环境,包括虚拟机、核心类库、以及健接文件。
8、try-catch-finally三个基本块的作用?catch里的代码是干什么的?
try块表示此处代码可能引发异常
catch块捕获try块的异常
finally块通常用于资源的回收,连接关闭,清理工作等
try-catch-finally不能单独存在,try块后必须跟catch或finally
catch或finally前必须跟try块
9、继承类和实现接口分别怎么做?
继承用extends关键字继承
定义接口用interface关键字
实现接口用implements10、如何去获得字符串的长度?
调用String类的length()方法
11、Java的基本数据类型有哪些?
int 4字节 整型
byte 1字节 整型
char 2字节 整型
short 4字节 整型
long 8字节 整型
double 8字节 浮点
float 4字节 浮点
boolean 布尔
12、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递
值传递,Java里没有引用传递
13、列出至少5个最常见到的runtime exception并描述在什么情况下出现
IOException在未找到文件时会抛出
NullPointerExecption在对象引用指向空时会抛出
ArrayIndexOutOfBoundsExecption在数组下标越界时会抛出
NumberFormatException在字符串不能转换成数字时会抛出
ArithmeticException在分母为零时会抛出
14、ArrayList和Vector的区别
vector是线程安全的,所以效率低,Arraylist是线程不安全的,但是效率高。
15、在IO中字节流和字符流的父类是什么?
字节流父类是InputStrean和OutputStream
字符流父类是Reader和Writer16、什么是包?定义包有什么好处?
文件夹。
好处:
1、可以有效的组织相关类;
2、可以做到信息的隐藏。
17、怎么样知道磁盘一个目录中有哪些文件?
1、File对象.list()方法;
2、File对象.listFile()方法。
18、如何获得一定范围的随机整数?
x+Math.random()*y 其中x是位移数,确定最小范围,y是放大系数,确定最大数。
(x-y)*Math.randon()+y19、如何获得java当前的工作目录
使用System.getProperty(“user.dir”)能够获得当前工作目录的字符串地址。
20、怎么样判断一个异常类是checked异常还是unchecked异常?
判断当前异常类,是否是RuntimeException的子类,如果是,则是运行期异常否则是编译期异常。
21、log4j一共有几个级别?分别是哪些?级别的高低有什么样的区别.log4j有五个级别:
DEBUG:调试
INFO:信息
WARN:警告
ERROR:错误
FATAL:崩溃
21、静态变量和成员变量应该怎么访问?
静态变量可以通过对象.和类名.的方式访问
成员变量通过对象.的方式访问
22、如何将一个字符串转成一个基本数据类型
Int x = Integer.parselint(“32”);
Double d = Double.parseDouble(“4.5”);
23、如何让JFrame的初始位置居中(在不同的分辨率中)
窗体对象.setLocationRelativeTo(null);
24、谈谈集合的作用
方便对数据进行 存储,检索,操作,传输。
25、类的修饰符能不能是private、static、protected?
内部类可以,因为内部类相当于外部类的属性
26、Try块中是否所有的语句都一定会执行,为什么?
不是,一但try中发生了异常,那么异常发生处下面的语句就不会执行,专区catch块执行
27、什么时候用继承,什么时候用接口?
当需要重用属性和方法时使用继承
当只需要重用方法时用接口
28、finally是不是什么时候都会执行?
是当虚拟机关闭,System.exit(0),finally内容不会执行;
29、什么是主线程?
当main()方法执行时会产生主线程,1最先开始 2最后结束
3产生其他子线程
4回收资源
30、进行IO流操作时,如果操作的文件不存在会发生什么情况?
读取流在文件不存在时,会抛出文件未找到异常
写入流在文件不存在时,会创建文件,但如果该文件所在目录不存在,同时会抛出文件未找到异常
31、IO流操作的步骤是怎么样的?
创建流 操作流 关闭流
32、finally的作用是什么?
无论是否有异常都会执行的代码块,一般用于资源回收,比如流动关闭、数据库的关闭
34、当一个线程进入一个对象的一个同步方法后,能否进入其它非同步方法? 么?一般在什么时候使用? 可以,但不能进入其他同步方法。
33、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,什么时候被执行?
Finally{}在程序开启时只执行它本身里的代码。
会执行,在方法返回前执行
35、如何启动线程,它直接调用run()方法有什么区别?
启动线程调用start方法,用start方法启动线程后,是多个线程同时进行,使用run()是普通方法,是不会产生新的线程,是单线程。
36、数组有没有length()这个方法? String有没有length()这个方法?
数组有length属性,String有length方法
37、GC是什么? 为什么要有GC?
GC叫做垃圾回收器,为了回收内存不再使用对象,释放内存空间,避免内存溢出。
38、线程同步化会带什么样的结果?
1:可以使数据安全
2:效率会降低
39、什么是线程安全?
当两个或两个以上线程,访问同一个资源时,为了保证数据的安全,只允许同一时间
只能有一个线程访问该资源。
40、服务器类有一个while循环,能否直接while(true)?
可以,但这样缺乏灵活性,没有办法控制循环结束,最好使用boolean变量来控制
循环的运行和结束。
41、java帮助文档是如何生成的?
Javadoc.exe42、什么时候类名和文件名必须一致?
当类的定义为Public时,类名必须与文件名保存一致
43、如何将实现包装类和基本数据类型转化?
包装转基本1:包装类对象.xxxvalue(值);2直接赋值
基本转包装1: Integer = new Integer(90);2直接赋值
44、类InputStream中方法read()的返回值是什么?读出的是什么?
Read()返回的是int,读取的数据
read(byte[])返回int 当前读取的字节数
45、如果一个类实现一个接口,可不可以不实现接口里定义的所有方法?
可以,但这个类只能是抽象类
46、构造方法和方法有什么区别?构造方法能不能被重载,能不能被重写?
构造方法和雷鸣相同,构造方法没有返回类型,在对象创建时,被调用。
构造方法可以重载,不能重写。
47、请列举switch()括号中能接受的所有数据类型。
Char byte short int48、GUI的布局管理器常见的有哪几种?
绝对布局
边界布局管理器
卡片布局管理器
流布局管理器
网格布局管理器
49、断言有什么作用?
断言是一个布尔表达式,当表达式为真继续执行,表达式为假,则抛出一个断言错误,主要用于测试。
50、String和StringBuffer的区别?
String具有长度不可变的特性,当String做添加、删除修改时,会产生一个新对象
StringBuffer是String类的一个改进版,是缓冲区的一个对象,当对该对象进行字符的添加、修改时,不会产生新对象。
51、接口里方法修符是什么?
Public abstract52、接口里可以定义变量吗?
不行,就可中的变量修饰符是public static final 只能定义常量
53、说几个String常用的方法
String.length()split()substring()equals()indexOf()lastundexOf()
54、在Dos界面下如何编译并执行Java程序?
Javac 文件名
Java 类名
55、创建一个线程有几种方法?
集成 thread 类
实现Runnable接口
56、项目开发的流程是怎么样的?
市场调研,需求分析,概要设计,详细设计,编码,测试,维护。
57、java语言的特点是什么?
简单,面向对象,分布式,健壮,可移植,解释性,安全,多线程,垃圾回收
58、main方法中有个参数String[] args。这个参数的值是由谁传递给它的。执行java类时,由控制台传入
59、java中采用什么字符编码集?char类型能不能放入一个中文字? Unicode 该字符集一个字符有2个字节。,char是两个字节可以放一个中文,因为中文是两个字节
60、byte的取值范围
-128~+127(-2的7次方to2的7次方-1)
61、GET方式和POST方式提交时,流有什么不同?
GET和POST是HTTP协议请求服务器的两种方式
GET方式页面参数,是附加在URL后面。/login?userName=XXX
POST方式,页面的参数是放在流最后的其他x86平台的差不多,
第二篇:Java程序员面试宝典
第3章
Java语法基础
基础类型和语法
1、变量及其作用范围
Java变量可以分为:静态变量、成员变量和局部变量3种。
静态变量:在类中用static修饰的变量,它的生存周期是由类来决定的。
成员变量:在类中没有用static修饰的变量,它的生存周期由对象来决定。
局部变量:定义在方法里的变量、方法的参数或代码块里定义的变量,它们的作用范围用大括号{}来界定。
2、Java的变量分哪两种大的数据类型
Java的变量分为基本数据类型和引用数据类型。它们最大的区别在于,引用数据类型存 放的是数据所在的地址,而基本数据类型则是直接存放数据的值。
其他知识点:引用数据类型的变量存的值是一个内存地址。对象一般是通过new语句创
建出来的,它保存在堆空间中,可以被多个引用类型的变量所引用。当引 用a修改了对象的数据以后,其他的引用也是可以看到这些改变的。
3、Java包含哪些基本数据类型及其包装类
Java一共有8种基本数据类型,分别是byte、short、int、long、float、double、boolean、char;存储的数据量比较小,用二进制保存。其馐类分别是:Byte、Short、Integer、Float、Double、Boolean、Character。
Eg.Integer itg=new Integer.valueOf(100);
Itg.intValue();
4、如何理解Java中的装箱和拆箱
从Java 5.0开始,有一种自动装箱和拆箱的功能,就可以不必显式的进行类型转换,系统会自动的按照需要进行数据类型的转换。
Java中的装箱和拆箱指的是基本数据类型和包装类型的自动相互的转换。
装箱:基本数据类型——>包装类型 拆箱:包装类型——>基本数据类型
5、Java中equal和==的区别是什么
“==”运用在基本数据类型的时候,通过比较它们实际的值来判定是否相同;而用于比较引用类型的时候,则是比较两个引用的地址是否相等,也就是是否指向同一个对象。
Equal方法是java.lang.Object的方法,也就是所有的Java类都会有的方法。它可以被程序员覆盖重写,通过自定义的方式来判定两个对象是否相等。对于字符串java.lang.String类来说,它的equal方法用来比较字符串的字符序列是否相等。
6、Java中的注释有哪些
行注释://
块注释:/* */,这种注释不会出现在HTML文档中。
文档注释:/** /,它的注释信息可以进入到javadoc文档中。注释文档将用来生成HTML 格式的代码API报告,还可以用@开头的关键字进行注释,以达到说明方法参数、返回 值、异常等各种详细信息。
Annotation:它会进入到编译层,并对程序结果产生影响。它最变通的作用就是用来替代 XML提供一些配置信息,例如,JPA、Spring等框架的配置信息就可以通过Annotation 来提供。
7、Java的引用和C++的指针有什么区别
Java的引用和C++的指针本质上,它们两者都是想通过一个叫做引用或者指针的东西,找到要操作的目标,方便在程序中操作。所不同的是Java的办法更安全、方便,但失去了C++的灵活,也算是对指针的一种包装和改进。
主要区别是:
对象和类型
1、类和对象有什么区别
类是一种抽象,而对象是类的实现。
Java的类通过class关键字进行定义,它代表了一种抽象的集合。在它的里面可以定义各种属性和方法,它们代表了每个类实例的特定的数据和动作。Java虚拟机对类只加载一次,对它的静态成员也只加载一次。
对象,指的是某一个特定抽象的实例,它属于某一种类型,也就是对象是通过类来创建的。它必须从属于某一个类,通过new关键字进行创建,它代表一个特定类型的实例,对象可以被多次创建。
2、Java中如何使用继承来重用代码
Java采用的是单继承制,使用extends关键字。通过继承之后,子类就拥有了父类除开私有成员以外的所有成员,从而达到代码重用的目的。在继承过程中,可以通过方法的覆盖来实现多态,让子类拥用自己独特的方法实现方式。
方法的覆盖(或重写)和重载是两个不同的概念。重载是创建一个方法名相同,但参数列表不同的方法;而方法覆盖则是子类对父类方法的覆盖和重写,定义一个名字、参数、返回值一样的方法即可。
3、简述Java中的多态
多态是建立在继承的基础之上的。
“多态”的本质是,发送消息给某个对象,让该对象自行决定响应何种行为。通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。
4、Java中静态成员的特点
类的静态成员是通过static关键字修饰的成员,主要包括:静态成员变量、静态方法和静态代码块,它们具有以下一些特点:
1、在类加载的时候,就进行创建和初始化或执行代码。
2、它们对于一个类来说,都只有一份。
3、类的所有实例都可以访问到它们。
静态代码块先执行。
5、Java派生类中的构造方法如何为父类传递参数
在Java中,使用super()的形式来为父类的构造方法提供参数,通过参数的数目和类型来决定调用哪一个构造方法。如果调用的是父类的默认的无参数构造方法,则可以不必显式地使用super()。super()的使用必须放在子类构造方法的第一行,否则编译时会有语法错误。
6、接口和抽象类的区别
包含抽象(abstract)方法的类,就是抽象类。抽象类不能够实例化。Abstract class 接口所有的方法都是抽象的,它可以包含静态的变量,这些变量的值不能修改。interface 抽象类是一种功能不全的类,接口只是一个抽象方法声明和静态不能被修改的数据的集合,两者都不能被实例化。从某种意义上说,接口是一种特殊形式的抽象类,在Java语言中,抽象类表示一种继承关系,一个类吸能继承一个抽象类,而一个类却可以实现多个接口。
Class A extends B implements C,D { }
7、简述一下内部类的实质
包和访问控制
1、包应该如何被创建及使用
包是Java程序中关于命名空间的一种手段,它可以有效的解决类重名的问题。当需要把一个类定义在某个包下的时候,需要使用package关键字进行定义;当需要使用其他包下的类的时候,则需要使用import关键字进行导入。
2、说明private、protected、public、default(friendly)的区别
第4章
数据类型及类型转换
整型数据
1、int 和Integer有什么区别
所有的整型字面量默认为int 型。
装箱:创建Integer对象:Integer a=new Integer(20);Integer b=Integer.valueOf(30);拆箱:int c=a.intValue();
2、Java中的八制字面量采用0开头,十六进制采用0x开头。
3、Int型数据采用4个字节进行存储,一共是32位。第一位用于表示正负号,这的取值范围是:-2^31~(2^31-1)。
Long型数据采用8个字节进行存储,一共是64位。第一位用于表示正负号,这的取值范围是:-2^63~(2^63-1)。
实型(浮点型)数据
1、float 和double的取值范围各是多少
Float型定义的数据末尾必须有“f”或“F”,为了和double区别。而double末尾可以有“d”或“D”,也可以不写。Java的浮点型数默认为double型。
2、如何用BigDecimal类进行精确运算
布尔型数据
1、Java可以用非0来代表true吗?
Java不能用非0代表true,也不能用0代表 false,只能用布尔型的true和false来进行条件判断。
2、boolean和它的包装类的区别在哪里
Boolean变量一般初始化为false。
字符型数据
1、char的取值范围
Java中的char采用Unicode编码格式,用两个字节来表示一个字符,一共16位(bit),它所能表示的范围是:0~2^16。
2、char能否存储汉字
char是可以存储汉字的,每个中文字符都有对应的Unicode编码。对于英文字母,它们所处的范围是0~127之间,与ASCII码相同,这是因为Unicode兼容ASCII码。
3、如何使用转义字符
在Java中,使用反斜线“”来代表转义,它与紧跟在它后面的字符一起组成了转义字符,从而达到转义的目的。
String型数据
1、字符串字面量是否自动生成一个String对象
肯定会自动生成。字符串类具有一定的特殊性,JVM在执行双引号操作符的时候,会自动的创建一个String对象,并返回这个对象的引用。
2、字符串对象池的作用是什么?
Java虚拟机在启动的时候会实例化9个对象池,这9个对象池分别且来存储8种基本类型的包装类对象和String对象,主要是为了效率问题。
对象池的存在是为了避免频繁的创建和销毁对象而影响系统性能。当JVM在运行用双引号引起来的一个字符串的代码时,会到String的对象池中去检查是否有一个字符序列相同的对象。如果有,就取现成的对象,如果没有,则在对象池中创建一个对象,并返回。
3、StringBuffer和StringBuilder存在的作用是什么?
Java的字符串String对象,有一个特性:不变性,它只能被创建,不能改变其中的值。
在Java程序中,如果有大量拼接字符串的需要的话,应该使用StringBuffer和StringBuilder类,它们可以避免不必要的String对象的产生,以提高程序的性能。它们的作用类似,只不过StringBuilder线程是安全的。
StringBuffer sb=new StringBuffer();
Sb.append(a);//用append方法追加字符串
4、如何输出反转过后的字符串
实现字符串的反转一般来说有两种手段,第一是利用字符串存储字符数据的原理,取出它的char数组,进行重新排列并保存;第二则是生成StringBuffer对象,直接使用StringBuffer的reverse()方法。
第三篇:Java程序员面试宝典
本文由 tonhhssy 贡献 pdf 文档可能在 WAP 端浏览体验不佳。建议您优先选择 TXT,或下载源文件到本机查看。编辑推荐 揭开知名 IT 企业面试、笔试的核心机密; 传授程序员岗位求职的关键技巧。《Java 程序员面试宝典》 不同于其他 Java 程序书籍的主要特点如下。唯一性 本书是国内 市场上唯一介绍 Java 程序员求职面试技巧的图书和案例库。本书从实际出发,将 Java 程序 员面试中常会考到的一些编程基础性问题,比如 final、super 类、构造函数等最易考到的基 础 考点,放在第 2 部分 Java 程序设计里面,希望能切切实实解决实际问题。深入性 面试题通过一道题考一个专类方面的能力。说起 Java,人们首先想到的是 Java 编程语言,然而事 实上,Java 是一种技术,它由 4 个方面组成: Java 编程语言、Java 类文件格式、Java 虚拟机和 Java 应用程 序接口(Java API)。从面试者的角度来讲,一个测试也许能从多方面 揭示应试者的素质,至少你能 了解应试者所掌握类的水平。市面上流行的面试书籍在 此专业性的分类方面做得不够,正因为如此,《Java 程序员面试宝典 》 一书中追求的是程序员求职背后的一些东西: 对于技术的本质理解,而不仅限于对 Java 技术的单 纯讲解。广泛性 本书包括但不仅限于 Java 程序员面试。对求职市场面 试做了妥善分类后,将面试对象分为软件 开发人员、网络工程师、测试工程师和系统管理员(又包括操作系统管理员和数据库管理员等)实际上市面上流行的面试书籍仅对软件开发。人员比较侧重,而忽略网络工程师和测试工程师,而现 实情况是在诸如趋势科技、思科等公 司的面试中,对网络方面的考题日趋增加,在银行、金融公司 的面试中对系统管理员方面的 考题也占很大的比重。本书就这一方面给出详细论断,并结合大量考 题分析题目特点给出应 试方案。本书将在这些方面做出改进,以适应市场需求。同时本书对外企经常考到的 UML 及设计模式内容也做了深入的分析,并在上一本书《程序员面 试宝典》的基础上从本质 上诠释面试的真谛。真实性 本书的所有面试题都来自 2005—2006 年各大公司的面 试题及培训资料,内容非常新,可以算做 面试者求职前的一份全真模拟。我们希望营造一种 真实的面试氛围,同时作者希望把如何做好一个 职业人,以及作者在职场上所获得的实际感 悟融会在书中,通过真情实感,娓娓道来,指引读者走 上理想的工作岗位。本书不是一本万 能书籍,但却肯定是你工作求职的好助手、好伙伴!本书是程序员面试宝典系列中的一 部,也是上一本《程序员面试宝典》的姊
妹丛书。本书对程 序设计面试中 Java 常见的题型 和常用解答技巧进行了介绍,它不仅能帮助求职者快速复习有相关知 识点,也对现代职业人 如何有效求职、面试考官如何关注求职者动态等做了详细解说。本书通过详 解各大知名公司 技术类(开发、测试、系统管理)面试中的常见 Java 试题,深入浅出地对其解答思 路进行 了分析和指导。希望能把在技术面试中取得的宝贵经验毫无保留地传授给读者,以便使求职 者对程序设计面试中的常见题型应付自如。通过对本书的学习,你会发现和完善有关试题的 最佳解 决方案,以应对不利局面的情况。本书简介 本书是程序员面试宝典系列中的一部,也是上一本《程序员面试宝典》的姊妹丛书。本 书对程序设 计面试中 Java 常见的题型和常用解答技巧进行了介绍,它不仅能帮助求职者快 速复习有相关知识点,也对现代职业人如何有效求职、面试考官如何关注求职者动态等做了 详细解说。本书通过详解各大知名公司技术类(开发、测试、系统管理)面试中的常见 Java 试题,深入浅 出地对其解答思路进行了分析和指导。希望能把在技术面试中取得的宝 贵经验毫无保留地传授给读 者,以便使求职者对程序设计面试中的常见题型应付自如。通过 对本书的学习,你会发现和完善有 关试题的最佳解决方案,以应对不利局面。本书适 合(但不限于)将要找工作的程序和高校计算机类应曲毕业生,以及其他计算机爱好者。目录
第 1 部分 求职过程 第 1 章 应聘求职 第 2 章 简历书写 第 3 章 3 种考试 第 4 章 职业生涯发展规划 第 5 章 3 个求职技巧 第 2 部分 Java 程序设计 第 6 章 Java 程序设计基本概念 第 7 章 异常与反射 第 8 章 传递与引用 第 9 章 循环、条件、概率 第 10 章 Java 内存管理 第 11 章 面向对象 第 12 章 继承与接口 第 13 章 JavaScript 第 14 章 Java 架构技术及相关中间件 第 3 部 分 数据结构和设计模式 第 15 章 字符串 第 16 章 设计模式 第 4 部分 UNIX、Oracle、网络 第 17 章 操作系统 第 18 章 数据库和 SQL 语言 第 19 章 计算机网 络及分布式系统 第 6 部分 Java 开源 第 20 章 J2EE 技术 第 21 章 数据相关 第 22 章 Java 中的 Web 设计 第 23 章 Java 中的网页设计 第 24 章 Struts 结构设计 第 25 章 Java 安全性 第 6 部分 综合面试题 第 26 章 英语面试 第 27 章 电话面试 第 28 章 智力测试 附录 A 简历模板 附录 B 面试经历总结 下载后 点击此处查看更多内容 1
第四篇:java程序员面试题
1、你怎样理解Struts,又那些配置文件,以及作用? 理解:http://ruixin.iteye.com/blog/899289 配置文件:struts.xml 作用:struts 框架mvc 实现低耦合,便于程序的维护~ 配置文件控制流程的转向 很清晰~ 主要负责具体业务的实现和页面的转向~
2、怎么样来捕获数据库中的异常?
3、如何处理网页中的验证信息,如何友好的进行处理?
4、用javaScript实现java中的监听器功能?
5、你对对日外包的看法?
6、数据库连接方式由哪几种?
Jdbc、连接池、hibernate
7、你清楚哪几种设计模式,谈谈各种设计模式的类结构。
8、谈谈jsp和sevlet的区别,以及它们性能上的区别。
jsp是servlet的一种简化,jsp编译后是“类servlet”。servlet 主要是用来处理业务层;
jsp 则是主要负责 表现层。
servlet完全是java程序代码构成,擅长于流程控制和事务处理,而通过servlet来生成动态网页很不直观; 对于静态的html标签,servlet都必须使用页面输出流逐行输出。Servlet中没有内置对象。Jsp由html代码和jsp标签构成可以方便地编写动态网页,在struts框架中,jsp位于MVC设计模式的视图层,而servlet位于控制层。
总之,使用jsp只需要完成程序员需要输出到客户端的内容,至于jsp中的java脚本如果镶嵌到一个类中,由jsp容器完成,而servlet则是个完整的java类,这个类的service方法用于生成对客户端的响应
9、如何来编写存储过程,如何优化存储过程,以及存储过程和TSQL的区别。
10、提供的培训,CMM-5软件开发流程培训、代码编写规范和业务流程培训、对日语的培训。
1、为什么要选择这个行业,和计算机专业的相比有什么优势?
2、Servlet是什么,以及生命周期?
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
3、怎么理解事务?
4、怎么理解MVC?
自己做自己的事情,主要强调分层,5、同时插入大量数据,使用何种方法优化?Batch
6、多个有关系得怎么样操作?
7、你认为你还有什么优点在前面没有提到?
8、对加班的看法?
9、与上级意见不一致时怎么样处理?10、11、12、13、14、15、16、17、18、19、20、21、22、23、你如何理解团队精神?
你怎样处理学习新技术和项目开发之间的矛盾? 怎样去学习新技术?
作为一个初级程序员怎么样弥补与有经验程序员之间的差距? 你对索引的理解,索引有几种,什么时候用索引? 对Oracle理解?
怎样优化复杂的查询语句? 你对Jdbc理解?
对Finally块的理解和应用? 游标的理解? ResultSet 重载,重写? 签名
EJB的事务,Hibernate的事务? Struts的标签? 重定向和跳转? A、
a.地址栏不改变跳转——服务器端跳转,服务器之间内部转,相同的request,可传参;
b.执行到跳转语句后无条件立刻跳转——之后的代码不再被执行;
注意:如果使用forward跳转,则一定要在跳转之前释放掉全部的资源;
c.使用forward时,request设置的属性依然能保留在下一个页面(setAttribute);d.通过
e.地址中的”/”代表是:http://localhost:8080/Test B、response.sendRedirect(“地址”):效率低,速度慢
a.地址栏改变跳转——客户端跳转(其中地址可以是任意的)
b.所有代码执行完毕之后再跳转,跳转语句后面的代码还是会执行,除非在其后面加上return(return)需复杂一些。
<% Response.sendRedirect(“aa.jsp”);boolean b = true;
if(b){ Return;} System.out.println(“aaaaaaaaaa”);%>
c.不能保存request属性——地址改变了,客户端跳转,不同的request d.通过对URL地址的重写传递参数:
response.sendRedirect(“responseDemo04.jsp?id=mldn”);
e.地址中的”/”代表是:http://localhost:8080/
下面是两种比较重要的跳转,我还是与上次的一次,把我做的笔记贴出来:24、25、Hibernate的左联结和右连接,缓存,数据加载? 面向对象如何理解?
26、EJB中CMP和BMP,SessionBean的机制?27、28、29、对日外包是否有抵触情绪? 如何减少Servlet的请求? 对设计模式了解多少?作过的项目中用过那些设计模式? 30、31、32、33、34、35、36、37、38、39、40、41、42、43、44、45、怎样看待团队合作,在团队合作中你扮演什么样的角色,遇到技术难题时怎么解决? Exception的层次结构? EJB对数据库的访问机制? Struts中是否有事务处理? Hibernate的其它功能(除了ORM)? 如何提高数据库中的数据查询效率? 作为项目经理如何对组内成员分工? 描述一下你做过项目的流程。
加班到12点,突然有人来问你技术上的难题,你会如何处理? Oracle的冷备份、热备份 Strurs中怎样实现 Hibernate怎样实现ORM Spring 的事务处理机制
Strurs的验证方式,Javascript的验证的方式
一个是服务器端验证,一个是客户端验证
Struts的工作机制 Delete/trancate的区别
trancate与delete都是删除数据,不同的是trancate是将表的所有数据都删除,而delete可以有选择地删除数据; delete删除数据是记录在日志中的,可以通过其将数据恢复,而trancate则是将整个表截断,其操作是不记录在日志里的。46、47、48、作为项目组长,你遇到的最大问题是什么?如何解决?
Ajax/内嵌框架实现局部刷新,有什么差别?
Exception/Error的区别,在什么情况下可以抛出RuntimeException 父类不同
知道异常和错误最本质的区别就是异常能被开发人员处理而错误时系统本来自带的,一般无法处理也不需要我们程序员来处理。
在程序运行时候出错而又不是系统原因差生的,一般是由于程序原因产生,比如程序写的不够严谨、完善
典型的RuntimeException
有
ArithmeticException、ClassCastException、IndexOutOfBoundsException、NullPointerException、UnsupportedOperationException 等.49、50、51、52、53、54、55、56、57、58、59、Orcale 物化视图(MV)
业务处理模块中,是如何处理事务? Sql语句如何优化 数据库右连接
JDBC的连接关闭在哪?
Finally语句块内
错误处理模块是放在哪个层的。接口能否继承接口。
接口可以继承接口..但是要使用extends~而不是用implements 抽象类能否继承实体类。
抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数 答案很明确,可以继承。
项目中查询时怎么样实现的?
作为项目负责人你是管理这个团队的?
在你做项目过程中遇到些什么问题,是怎么样解决的?
Jquery中的几种选择器:
Javascript如何进行数字和字符串之间的转换?
数字类型转换成String类型用 对象=对象.toString()方法,字符串转换成数字类型则是对象=Number(对象);
第五篇:Java程序员面试题
Java程序员面试题
1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面:1)抽象2)继承3)封装4)多态性
2、作用域public,private,protected,以及不写时的区别 答:区别如下:
作用域 当前类 同包 子类 其他 public √ √√ √ protected√√√ × default √√× × private √×××
类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。
3、String 是最基本的数据类型吗? 答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。
4、float f=3.4;是否正确? 答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4;或者写成float f =3.4F。
5、int 和Integer 有什么区别? 答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入不是对象的基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的封装类就是Integer,从JDK 1.5开始引入了自动封箱/解封箱机制,使得二者可以相互转换。
Java 为每个原始类型提供了封装类:
原始类型: boolean,char,byte,short,int,long,float,double 封装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
6、数组有没有length()方法?String 有没有length()方法?
答:数组没有length()方法,有length 的属性。String 有length()方法。
7、在Java 中,如何跳出当前的多重嵌套循环?
答:在最外层循环前加一个标记如A,然后用break A;可以跳出多重循环。
8、是否可以继承String 类? 答:String 类是final类,不可以被继承。
9、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对象的引用是永远不会改变的。C++和C#中可以通过传引用或传输出参数来改变传入的参数的值
10、抽象类(abstract class)和接口(interface)有什么异同? 答:
抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。
一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。
抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。
11、静态变量和实例变量的区别?
答:静态变量也称为类变量,属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。
12、String s=new String(“xyz”);创建了几个字符串对象?
答:两个对象,一个是静态存储区的“xyx”,一个是用new创建在堆上的对象
13、接口是否可继承(extends)接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类可继承具体类,但前提是具体类必须有明确的构造函数
14、Java 中的final关键字有哪些用法?
答:(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)
15、Error 和Exception 有什么区别? 答:Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;Exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。
选择题
1、在Java
Applet程序用户自定义的Applet子类中,一般需要重载父类的(D)方法来完成一些画图操作。
A.start()
B.stop()
C.init()D.paint()
2、Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点?(B)
A)安全性
B)多线程
C)跨平台
D)可移植
3、下列哪个类声明是正确的?(D)
A)abstract final class HI{···} B)abstract private move(){···}C)protected private number;
D)public abstract class Car{···
4、在Java语言中,下列哪些语句关于内存回收的说明是正确的?(B)
A.程序员必须创建一个线程来释放内存;
B.内存回收程序负责释放无用内存
C.内存回收程序允许程序员直接释放内存
D.内存回收程序可以在指定的时间释放内存对象
5、字符串是Java已定义的类型,关于它的构造函数,下面说法不正确的是: B
A.String(char[] value, int offset, int count)
B.String(int[] codePoints,int offset,int count)
C.String(String original)
D.String(StringBuffer buffer)
6、下列说法中正确的是: C
A.导入包会影响程序的性能 B.包存储在类库中
C.包是类的容器D.上述说法都不对
7、哪个关键字可以对对象加互斥锁? B
A.transient
B.synchronized
C.serialize
D.static8、下列叙述中,错误的是: D
A、父类不能替代子类
B、子类能够替代父类
C、子类继承父类
D、父类包含子类
9、下列关于Java多线程并发控制机制的叙述中,错误的是:BC
A、Java中对共享数据操作的并发控制是采用加锁技术
B、线程之间的交互,提倡采用suspend()/resume()方法
C、共享数据的访问权限都必须定义为private
D、Java中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止死锁的发生
10、下列哪一个方法不是applet程序的组成部分:D
A、init()
B、start()
C、stop()
D、new()
11、下列Applet类的方法中,在Applet的整个生命周期里至多只执行一次的是:A
A、init()
B、start()C、stop()
D、paint()
12、启动一个线程所调用的方法是:C
A、run()
B、init()
C、start()
D、new()
13、编译Java
Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)。
A..java
B..class
C..html
D..exe
二、填空题(每空格1分,共20分)
1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码和解释运行字节码。
2、如果一个Java
Applet源程序文件只定义有一个类,该类的类名MyApplet,则类MyApplet必须是Applet类的子类并且存储该源程序文件的文件名为MyApplet。
3、若x=5,y=10,则x
4、抽象(abstract)方法方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。最终(final)方法方法是不能被当前类的子类重新定义的方法。
5、在Java程序中,通过类的定义只能实现单重继承,但通过接口的定义可以实现多重继承关系。