Java Text (四)
1. Which of the following lines will compile without warning or error.
1) float f=1.3;
2) char c="a";
3) byte b=257;
4) boolean b=null;
5) int i=10;
2. What will happen if you try to compile and run the following code
public class MyClass {
public static void main(String arguments[]) {
amethod(arguments);
}
public void amethod(String[] arguments) {
System.out.println(arguments);
System.out.println(arguments[1]);
}
}
1) error Can't make static reference to void amethod.
2) error method main not correct
3) error array must include parameter
4) amethod must be declared with String
3. Which of the following will compile without error
1) import java.awt.*;
package Mypackage;
class Myclass {}
2) package MyPackage;
import java.awt.*;
class MyClass{}
3) /*This is a comment */
package MyPackage;
import java.awt.*;
class MyClass{}
4. What will be printed out if this code is run with the following command line?
java myprog good morning
public class myprog{
public static void main(String argv[])
{
System.out.println(argv[2]);
}
}
1) myprog
2) good
3) morning
4) Exception raised:
"java.lang.ArrayIndexOutOfBoundsException: 2"
5. What will happen when you compile and run the following code?
public class MyClass{
static int i;
public static void main(String argv[]){
System.out.println(i);
}
}
1) Error Variable i may not have been initialized
2) null
3) 1
4) 0
6. What will happen if you try to compile and run the following code?
public class Q {
public static void main(String argv[]){
int anar[]=new int[]{1,2,3};
System.out.println(anar[1]);
}
}
1) 1
2) Error anar is referenced before it is initialized
3) 2
4) Error: size of array must be defined
7. What will happen if you try to compile and run the following code?
public class Q {
public static void main(String argv[]){
int anar[]=new int[5];
System.out.println(anar[0]);
}
}
1) Error: anar is referenced before it is initialized
2) null
3) 0
4) 5
8. What will be the result of attempting to compile and run the following code?
abstract class MineBase {
abstract void amethod();
static int i;
}
public class Mine extends MineBase {
public static void main(String argv[]){
int[] ar=new int[5];
for(i=0;i < ar.length;i++)
System.out.println(ar[i]);
}
}
1) a sequence of 5 0's will be printed
2) Error: ar is used before it is initialized
3) Error Mine must be declared abstract
4) IndexOutOfBoundes Error
9. What will be printed out if you attempt to compile and run the following code ?
int i=1;
switch (i) {
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
case 2:
System.out.println("two");
default:
System.out.println("default");
}
1) one
2) one, default
3) one, two, default
4) default
10. Which of the following lines of code will compile without error
1) int i=0;
if(i) {
System.out.println("Hello");
}
2) boolean b=true;
boolean b2=true;
if(b==b2) {
System.out.println("So true");
}
3) int i=1;
int j=2;
if(i==1|| j==2)
System.out.println("OK");
4) int i=1;
int j=2;
if(i==1 &| j==2)
System.out.println("OK");
11. What will be output if you try to compile and run the following code, but there is no file called Hello.txt in the current directory?.
import java.io.*;
public class Mine
{
public static void main(String argv[])
{
Mine m=new Mine();
System.out.println(m.amethod());
}
public int amethod()
{
try
{
FileInputStream dis
=new FileInputStream("Hello.txt");
}
catch (FileNotFoundException fne)
{
System.out.println("No such file found");
return -1;
}
catch(IOException ioe)
{}
finally
{
System.out.println("Doing finally");
}
return 0;
}
}
1) No such file found
2 No such file found ,-1
3) No such file found, Doing finally, -1
4) 0
12.Which of the following statements are true?
1) Methods cannot be overriden to be more private
2) static methods cannot be overloaded
3) private methods cannot be overloaded
4) An overloaded method cannot throw exceptions not checked in the base class
13.What will happen if you attempt to compile and run the following code?
class Base {}
class Sub extends Base {}
class Sub2 extends Base {}
public class CEx{
public static void main(String argv[]){
Base b=new Base();
Sub s=(Sub) b;
}
}
1) Compile and run without error
2) Compile time Exception
3) Runtime Exception
14.Which of the following statements are true?
1) System.out.println( -1 >>> 2);will output a result larger than 10
2) System.out.println( -1 >>> 2); will output a positive number
3) System.out.println( 2 >> 1); will output the number 1
4) System.out.println( 1 <<< 2); will output the number 4
15.What will happen when you attempt to compile and run the following code?
public class Tux extends Thread{
static String sName = "vandeleur";
public static void main(String argv[]){
Tux t = new Tux();
t.piggy(sName);
System.out.println(sName);
}
public void piggy(String sName){
sName = sName + " wiggy";
start();
}
public void run(){
for(int i=0;i < 4; i++){
sName = sName + " " + i;
}
}
}
1) Compile time error
2) Compilation and output of "vandeleur wiggy"
3) Compilation and output of "vandeleur wiggy 0 1 2 3"
4) Compilation and output of either "vandeleur", "vandeleur 0", "vandeleur 0 1" "vandaleur 0 1 2" or "vandaleur 0 1 2 3"
16.What will be displayed when you attempt to compile and run the following code
//Code start
import java.awt.*;
public class Butt extends Frame{
public static void main(String argv[]){
Butt MyBut=new Butt();
}
Butt(){
Button HelloBut=new Button("Hello");
Button ByeBut=new Button("Bye");
add(HelloBut);
add(ByeBut);
setSize(300,300);
setVisible(true);
}
}
//Code end
1) Two buttons side by side occupying all of the frame, Hello on the left and Bye on the right
2) One button occupying the entire frame saying Hello
3) One button occupying the entire frame saying Bye
4) Two buttons at the top of the frame one saying Hello the other saying Bye
17.What will be output by the following code?
public class MyFor{
public static void main(String argv[]){
int i;
int j;
outer:
for (i=1;i <3;i++)
inner:
for(j=1; j<3; j++) {
if (j==2)
continue outer;
System.out.println("Value for i=" + i + " Value for j=" +j);
}
}
}
1) Value for i=1 Value for j=1
2) Value for i=2 Value for j=1
3) Value for i=2 Value for j=2
4) Value for i=3 Value for j=1
18.Which statement is true of the following code?
public class Agg{
public static void main(String argv[]){
Agg a = new Agg();
a.go();
}
public void go(){
DSRoss ds1 = new DSRoss("one");
ds1.start();
}
}
class DSRoss extends Thread{
private String sTname="";
DSRoss(String s){
sTname = s;
}
public void run(){
notwait();
System.out.println("finished");
}
public void notwait(){
while(true){
try{
System.out.println("waiting");
wait();
}catch(InterruptedException ie){}
System.out.println(sTname);
notifyAll();
}
}
}
1) It will cause a compile time error
2) Compilation and output of "waiting"
3) Compilation and output of "waiting" followed by "finished"
4) Runtime error, an exception will be thrown
19.Which of the following methods can be legally inserted in place of the comment //Method Here ?
class Base{
public void amethod(int i) { }
}
public class Scope extends Base{
public static void main(String argv[]){
}
//Method Here
}
1) void amethod(int i) throws Exception {}
2) void amethod(long i)throws Exception {}
3) void amethod(long i){}
4) public void amethod(int i) throws Exception {}
40.You have created a simple Frame and overridden the paint method as follows
public void paint(Graphics g){
g.drawString("Dolly",50,10);
}
What will be the result when you attempt to compile and run the program?
1) The string "Dolly" will be displayed at the centre of the frame
2) An error at compilation complaining at the signature of the paint method
3) The lower part of the word Dolly will be seen at the top of the frame, with the top hidden.
4) The string "Dolly" will be shown at the bottom of the frame.
21.What will be the result when you attempt to compile this program?
public class Rand{
public static void main(String argv[]){
int iRand;
iRand = Math.random();
System.out.println(iRand);
}
}
1) Compile time error referring to a cast problem
2) A random number between 1 and 10
3) A random number between 0 and 1
4) A compile time error about random being an unrecognised method
22.Given the following code
import java.io.*;
public class Th{
public static void main(String argv[]){
Th t = new Th();
t.amethod();
}
public void amethod(){
try{
ioCall();
}catch(IOException ioe){}
}
}
What code would be most likely for the body of the ioCall method
1) public void ioCall ()throws IOException{
DataInputStream din = new DataInputStream(System.in);
din.readChar();
}
2) public void ioCall ()throw IOException{
DataInputStream din = new DataInputStream(System.in);
din.readChar();
}
3) public void ioCall (){
DataInputStream din = new DataInputStream(System.in);
din.readChar();
}
4) public void ioCall throws IOException(){
DataInputStream din = new DataInputStream(System.in);
din.readChar();
}
23.What will happen when you compile and run the following code?
public class Scope{
private int i;
public static void main(String argv[]){
Scope s = new Scope();
s.amethod();
}//End of main
public static void amethod(){
System.out.println(i);
}//end of amethod
}//End of class
1) A value of 0 will be printed out
2) Nothing will be printed out
3) A compile time error
4) A compile time error complaining of the scope of the variable i
24.You want to lay out a set of buttons horizontally but with more space between the first button and the rest. You are going to use the GridBagLayout manager to control the way the buttons are set out. How will you modify the way the GridBagLayout acts in order to change the spacing around the first button?
1) Create an instance of the GridBagConstraints class, call the weightx() method and then pass the GridBagConstraints instance with the component to the setConstraints method of the GridBagLayout class.
2) Create an instance of the GridBagConstraints class, set the weightx field and then pass the GridBagConstraints instance with the component to the setConstraints method of the GridBagLayout class.
3) Create an instance of the GridBagLayout class, set the weightx field and then call the setConstraints method of the GridBagLayoutClass with the component as a parameter.
4) Create an instance of the GridBagLayout class, call the setWeightx() method and then pass the GridBagConstraints instance with the component to the setConstraints method of the GridBagLayout class.
25.Which of the following can you perform using the File class?
1) Change the current directory
2) Return the name of the parent directory
3) Delete a file
4) Find if a file contains text or binary information
26.Which statement is true of the following code?
public class Rpcraven{
public static void main(String argv[]){
Pmcraven pm1 = new Pmcraven("One");
pm1.run();
Pmcraven pm2 = new Pmcraven("Two");
pm2.run();
}
}
class Pmcraven extends Thread{
private String sTname="";
Pmcraven(String s){
sTname = s;
}
public void run(){
for(int i =0; i < 2 ; i++){
try{
sleep(1000);
}catch(InterruptedException e){}
yield();
System.out.println(sTname);
}
}
}
1) Compile time error, class Rpcraven does not import java.lang.Thread
2) Output of One One Two Two
3) Output of One Two One Two
4) Compilation but no output at runtime
27.You are concerned that your program may attempt to use more memory than is available. To avoid this situation you want to ensure that the Java Virtual Machine will run its garbage collection just before you start a complex routine. What can you do to be certain that garbage collection will run when you want .
1) You cannot be certain when garbage collection will run
2) Use the Runtime.gc() method to force garbage collection
3) Ensure that all the variables you require to be garbage collected are set to null
4) Use the System.gc() method to force garbage collection
28、Which statements about the garbage collection are true?
1. The program developer must create a thread to be responsible for free the memory.
2. The garbage collection will check for and free memory no longer needed.
3. The garbage collection allow the program developer to explicity and immediately free the memory.
4. The garbage collection can free the memory used java object at expect time.
29.You have these files in the same directory. What will happen when you attempt to compile and run Class1.java if you have not already compiled Base.java
//Base.java
package Base;
class Base{
protected void amethod(){
System.out.println("amethod");
}//End of amethod
}//End of class base
package Class1;
//Class1.java
public class Class1 extends Base{
public static void main(String argv[]){
Base b = new Base();
b.amethod();
}//End of main
}//End of Class1
1) Compile Error: Methods in Base not found
2) Compile Error: Unable to access protected method in base class
3) Compilation followed by the output "amethod"
4)Compile error: Superclass Class1.Base of class Class1.Class1 not found
30.What will happen when you attempt to compile and run the following code
class Base{
private void amethod(int iBase){
System.out.println("Base.amethod");
}
}
class Over extends Base{
public static void main(String argv[]){
Over o = new Over();
int iBase=0;
o.amethod(iBase);
}
public void amethod(int iOver){
System.out.println("Over.amethod");
}
}
1) Compile time error complaining that Base.amethod is private
2) Runtime error complaining that Base.amethod is private
3) Output of "Base.amethod"
4) Output of "Over.amethod"
一个袋子中有100个黑球,100个白球,每次从中取出两个球,然后放回一个球,如果取出两个球颜色相同,则放入一个黑球,如果取出一百一黑,则放入一个白球,请问到最后袋中剩下的球的颜色:
1)黑球 2)白球 3)不一定。
给出证明。
建立一个数据库模型,用于管理一个公司部门及其内部雇员,每个部门都有一个负责人。根据你的数据库模型,编写sql语句建立你的数据库表,给出一个雇员的姓名,查询该雇员所属的部门负责人。
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
1. 5)
2. 1)
3. 2)3)
4. 4)
5. 4)
6. 3)
7. 3)
8. 3)
9. 3)
10. 2)3)
11. 3)
12. 1)
13. 3)
14. 1)2)3)
15. 4)
16. 3)
17. 1)2)
18. 4)
19. 2)3)
20. 3)
21. 1)
22. 1)
23. 3)
24. 2)
25. 2,3
26. 2)
27. 1)
28. 2
29. 4
30. 4
黑球。
软件研发人员笔试(初试)
2004年度软件研发人员招聘笔试试题(初试)
应聘者资料:
姓名
|
|
性别
|
|
出生日期
|
|
籍贯&户口所在地
|
|
身份证号
|
|
婚姻状况
|
|
电话
|
|
Email
|
|
毕业院校
|
|
毕业时间
|
|
专业
|
|
学历
|
|
学位
|
|
英语水平(资格)
|
|
计算机水平(资格)
|
|
要求职位和希望担任的角色
|
|
待遇要求
|
|
工作经历(由近及远)
|
时间
|
单位名称
|
职务
|
工作职责
|
离职原因
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
技能评估(请标明您掌握的语言,并在后面的空白处标明您从事了多少个月)
|
C/C++ ;Java ;汇编 ;Windows 9X ;WinNT ;UNIX/LINUX ;Oracle ;Informix ;Sybase ;MS SQL Server ;MS Access ;VC ;VB ;PB ;Delphi ;ASP ;XML ;Javascript ;Rational Rose ;MS SourceSafe ;其它
|
评估意见(由招聘小组填写)
|
|
试题一:基础知识(必作题)
1、从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。
假设某计算机具有1M 字节的内存(目前使用的计算机往往具有64M字节以上的内存),并按字节编址,为了能存取该内存各地址的内容,其地址寄存器至少需要二进制_A_位。为使4字节组成的字能从存储器中一次读出,要求存放在存储器中的字边界对齐,一个字的地址码应_B_。若存储周期为200NS,且每个周期可访问4个字节,则该存储器带宽为_C_BIT/S。假如程序员可用的存储空间为4M字节,则程序员所用的地址为_D_,而真正访问内存的地址称为_E_。
供选择的答案:
A: ①10 ②16 ③20 ④32
B: ①最低两位为00 ②最低两位为10 ③最高两位为00 ④最高两位为10
C: ①20M ②40M ③80M ④160M
D: ①有效地址 ②程序地址 ③逻辑地址 ④物理地址
E: ①指令 ②物理地址 ③内存地址 ④数据地址
2、从供选择的答案中。选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。
给定结点的关键字序列(F、B、J、G、E、A、I、D、C、H),对它按字母的字典顺序进行排列,采用不同方法,其最终结果相同。但中间结果是不同的。
Shell排序的第一趟扫描(步长为5)结果应为_A_。
冒泡排序(大数下沉)的第一趟起泡的效果是_B_.
快速排序的第一趟结果是_C_。
二路归并排序的第一趟结局是 _D_。
供选择的答案
A:①(B、F、G、J、A、D、I、E、H、C)
②(B、F、G、J、A、E、D、I、C、H)
③(A、B、D、C、E、F、I、J、G、H)
④(C、B、D、A、E、F、I、G、J、H)
B:①(A、B、D、C、F、E、I、J、H、G)
②(A、B、D、C、E、F、I、H、G、J)
③(B、F、G、E、A、I、D、C、H、J)
④(B、F、G、J、A、E、D、I、C、H)
C:①(C、B、D、A、F、E、I、J、G、H)
②(C、B、D、A、E、F、I、G、J、H)
③(B、A、D、E、F、G、I、J、H、C)
④(B、C、D、A、E、F、I、J、G、H)
D:①(B、F、G、J、A、E、D、I、G、H)
②(B、A、D、E、F、G、I、J、H、C)
③(A、B、D、C、E、F、I、J、G、H)
④(A、B、D、C、F、E、J、I、H、C)
3、从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答.把相应编号写在答卷的对应栏内。
进程是操作系统中的一个重要概念。进程是一个具有一定独立功能的程序在某个数据集合上的一次_A_。
进程是一个_B_的概念,而程序是一个_C_的概念。
进程的最基本状态有_D_。在一个单处理机中,若有6个用户进程,在非管态的某一时刻,处于就绪状态的用户进程最多有_E_个。
供选择的答案
A:①单独操作 ②关联操作 ③运行活动 ④并发活动
B:①静态 ②动态 ③逻辑 ④物理
C:①物理 ②逻辑 ③动态 ④静态
D:①就绪、运行、隐蔽 ②停止、就绪、运行③运行、就绪、阻塞 ④就绪、撤消、运行
E:①5 ②6 ③1 ④4
4、软件设计中划分模块的一个准则是_A_。两个模块之间的耦合方式中,_B_耦合的耦合度最高,_C_耦合的耦合度最低。一个模块内部的内聚种类中_D_内聚的内聚度最高,_E_内聚的内聚度最低。
供选择的答案
A:①低内聚低耦合②低内聚高耦合③高内聚低耦合④高内聚高耦合
B:①数据 ②非直接 ③控制 ④内容
C:①数据 ②非直接 ③控制 ④内容
D:①偶然 ②逻辑 ③功能 ④过程
E:①偶然 ②逻辑 ③功能 ④过程
5、从供选择的答案中选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。
最常用的一种基本数据模型是关系数据模型,它用统一的_A_结构来表示实体及实体之间的联系。关系数据库的数据操作语言(DML)主要包括_B_两类操作。
关系运算以关系代数为理论基础,关系代数的最基本操作是并、差、笛卡尔积、_C_。用R∣×∣S表示关系 R和关系 S的_D_。
设关系R和关系S图示如下:
R: A B C S: B C D T: A B C D
则关系T是关系R和关系S_E _的结果。
供选择的答案
A:①树 ②网络 ③图 ④二维表
B:①插入和删除 ②检索和更新 ③查询和编辑 ④统计和修改
C:①投影、联接 ②联接、选择 ③选择、投影 ④交、选择
D:①联接 ②笛卡尔积 ③日联接 ④自然联接
E:①自然联接 ②θ联接 ③笛卡尔积 ④并
试题二:程序设计(任选一题)
1.用你所熟悉的任意一种程序语言,编写一个完整的过程,将一个字符串插入到另一个字符串的某个位置后面(例如:将“abc”插入到“abcdef”的第三个字符位置后面,结果为“abcabcdef”)。编写程序时,请在必要的地方加以注释(注:不能用该程序语言的内置函数或过程)。
2.用你所熟悉的任意一种程序语言,编写一个完整的过程,完成从一个给定的完整的文件路径(如“C:\My Documents\Software Test 1.00.doc”)中,析取文件名,扩展名和文件所处目录的功能,编写程序时,请在必要的地方加以注释(注:不能用该程序语言的内置函数或过程)。
试题三:数据库设计(任选一题)
1.下面的表有问题吗?如果有,如何改进?
城市*
|
街道*
|
邮政编码
|
佛山
|
金鱼街
|
528000
|
佛山
|
大福路
|
528000
|
佛山
|
季华路
|
528000
|
广州
|
北京路
|
510000
|
广州
|
三元里
|
510000
|
广州
|
中山路
|
510000
|
…
|
…
|
…
|
*城市和街道联合做主键
分成二个表,第一个表有以下字段:城市和街道,以城市作为主键;第二个表:街道和邮政编码,以街道为主键.通过街道与第一个表的街道相关联
2.假设有以下的两个表:
Cus_A
Cus_B
*主键
表Cus_A和表Cus_B的结构完全相同,表Cus_A和表Cus_B中既存在ID相同的记录,也存在ID不同的记录。现要求将ID只存在于表Cus_A中而不存在于表Cus_B中的记录全部插入到Cus_B表中,并用表Cus_A中的记录更新表Cus_B中相同的ID的记录,请写出完成这一功能的存储过程。
Create or procedure test is
Declare id1 CusA.id%type;
Begin
Select id into id1 from CusA a,CusB b where a.id=b.id;
3、某公司正在开发一个档案管理系统,要求在关系数据库中实现和Windows文件系统完全一致的树状文件目录。为了实现这一目录结构,至少需求哪些表?请详细描述这些表的用途和结构(如有必要,可用图表进行描述)。最后,请用伪编码(或自然语言)描述按树状结构遍历所有档案的算法。
试题四:系统设计(任选一题)
1.简述“面向对象”的概念,并设计一个学校选课系统的对象模型。
2.简述“软件系统的两层和多层体系结构”的概念(如有必要,可用图表进行描述),并指出两者的主要区别。
3.简述一个软件工程的主要步骤,并指出每个步骤的明确目标及实施办法。最后分析哪些是关键步骤。
试题五:综合(必作题)
你认为在团队开发中,你能发挥自己的能力吗?为什么?当个人意见与主管出现矛盾时,你用什么方法解决?
试题六:其它(思考题)
您为何选择这类职业?
您生活的最终目标是什么?
您怎样做好准备来实现这些目标?
如果面试通过是否能够在工作遵循公司或客户公司的管理规定与制度及信息安全管理规定?
软件研发人员招聘笔试(培训)
试题一:综合(基本知识引导,思考,)
1. 面向对象语言的特征?Java I/O中字符流和字节流的区别?
2. HashTable和HashMap的区别?EJB的生命周期? Servlet的生命周期?
3. HTTP协议是长连接还是短连接?
4. JAVA的基本数据类型有那些? String是不是基本类型?
5. MVC的概念和在项目中的应用?
6. 如何避免多个SOCKET的读写阻塞,JDK1.4新增了那些方法解决这个问题?
7. 如果一个变量的值为NULL,观察以下程序:
8. IF 变量=NULL THEN
分支1;
ELSE
分支2;
END IF
程序最终执行那一个分支?
9. JSP中有那些重定向方法,它们的区别?EJB的优势和特点?List 和 Vector的区别?
10. 在ORACLE数据库中,一个表被删除后,还能否将空间分配给其它表,SQL SERVER哪?
11. 在ORACLE数据库中,一个表有两千万条数据,怎样最有效的将其删除?
12. 在数据库中,如果处理表中的每一条数据,用那种方法?
13. 发送一条邮件的几个步骤在JNDI中如何初始化URL上下文
14. 常用的组件技术?会话BEAN的属性?实体BEAN的属性?
15. STATE SESSION BEAN 与STATELESS SESSION BEAN的区别?
16. JMS编程具体步骤?事务模式?
17. JAVA容器管理事务的事务属性为REQUIRESNEW的意义
18. 事务失败时的会话BEAN的重新初始化方法
19. WEBLOGIC SERVER中开发JDBC应用通常遵循的步骤
试题二:分类试题(分类必作题)
Java基础
1. 作用域public,private,protected,以及不写时的区别?
2. ArrayList和Vector的区别, HashMap和Hashtable的区别
3. char型变量中能不能存贮一个中文汉字?为什么?
4. 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
5. 继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
6. 内部类的实现方式?
父类:
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();
}
}
输出结果:
7. You need to insert an inner class declaration at line 3. Which two inner class declarations are valid?(Choose two.)
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();
}
8. 垃圾回收机制,如何优化程序?
9. float型float f=3.4是否正确?
10. 介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?
11. Java中异常处理机制,事件机制?
12. JAVA中的多形与继承?
13. 抽象类与接口?
14. Java 的通信编程,用JAVA SOCKET编程,读服务器几个字符,再写入本地显示?
15. 用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如在COLLECTION框架中,实现比较要实现什么样的接口?
16. 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
17. STRING 与 STRINGBUFFER 的区别。
18. == 与 equals 的区别
19. JAVA的基本数据类型有哪些 ?String 是不是基本数据类型?
20. 面向对象语言的特征:a抽象性 b封装 c继承 d多态
21. 链表和数组的区别?
Jsp基础
22. jsp有哪些内置对象?作用分别是什么?
23. jsp有哪些动作?作用分别是什么?
24. JSP中动态INCLUDE与静态INCLUDE的区别?
25. 两种跳转方式分别是什么?有什么区别?
Servlet基础
26. 说一说Servlet的生命周期?
27. Servlet版本间(忘了问的是哪两个版本了)的不同?
28. JAVA Servlet API中 forward() 与 redirect() 的区别?
29. Servlet的基本架构
Jdbc、Jdo基础
30. 可能会让你写一段Jdbc连Oracle的程序,并实现数据查询
31. Class.forName的作用?为什么要用?
32. Jdo是什么?
33. 在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。
Xml基础
34. xml有哪些解析技术?区别是什么?
35. 你在项目中用到了xml技术的哪些方面?如何实现的?
36. 用jdom解析xml文件时如何解决中文问题?如何解析?
37. 编程用JAVA解析XML的方式
EJB基础
38. EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别?
39. EJB与JAVA BEAN的区别?
40. EJB的基本架构?
41. 会话 BEAN 的属性?
42. 实体 BEAN 的属性?
43. STATES SESSION BEAN 与 STATELESS SESSION BEAN的区别?
J2EE MVC基础
44. MVC的各个部分都有那些技术来实现?如何实现?
45. 应用服务器与WEB SERVER的区别?
46. J2EE是什么?
47. WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。
48. BS与CS的联系与区别。
49. STRUTS的应用(如STRUTS架构)
设计模式方面
50. 开发中都用到了那些设计模式?用在什么场合?
JavaScript方面
51. 如何校验数字型?
CORBA方面
52. CORBA是什么?用途是什么?
LINUX方面
53. LINUX下线程,GDI类的解释。
数据库方面
54. 写一个 SQL Server 中的存储过程:
55. 写一个 Oracle 中的存储过程:
HTTP方面
56. HTTP的请求过程:
有感:应聘Java笔试时可能出现问题及其答案
前段时间因为要参加一个笔试,在准备期间在网上找到了两条关于笔试题目的文章,其中一篇为<<有感:应聘Java笔试时可能出现问题>>,还有一篇忘了名字,读后深受启发。
在寻找这些答案的过程中,我将相关答案记录下来,就形成了以下这些东西。需要说明的是以下答案肯定有很多不完整甚至错误的地方,需要各位来更正与完善它,千万不要扔我的鸡蛋啊。
希望本文能够给即将奔赴笔试考场的同仁些许帮助,更希望更多的人加入到收集整理笔试题与完善答案的这些工作中来,为大家更好的获得工作机会做一点贡献。
在此感谢前面两文的作者的对笔试题目的收集与整理。
如有任何意见与建议请通过QQ:6045306,Mail:huijunzi@21cn.com与我联系。
Java基础方面:
1、作用域public,private,protected,以及不写时的区别
答:区别如下:
作用域: 当前类 , 同一package , 子孙类 , 其他package
public √ √ √ √ //能被所有类访问
protected √ √ √ × //本类和其子类访问, 同一包中的所有类访问
friendly √ √ × × //可以被本类和同一包中的的其他类访问
private √ × × × //只能在本类中访问
不写时默认为friendly
2、ArrayList和Vector的区别, HashMap和Hashtable的区别
答: 就ArrayList与Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
就HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
3、char型变量中能不能存贮一个中文汉字?为什么?
答: 是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的
4、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答: 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized, wait与notify
5、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
答:父类:
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();
}
}
输出结果:
C:\>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
6、内部类的实现方式?
答:示例代码如下:
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();
}
}
输出结果:
C:\>java test/OuterClass
InterClass Create
OuterClass Create
再一个例题:
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();
}
说明如下:
一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 故 A、B 错
二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错,故 D 错
三.非静态内部类的非静态成员可以访问外部类的非静态变量。 故 C 正确
四.答案为C、E
7、垃圾回收机制,如何优化程序?
答: 结束方法 finalize() 可以用来帮助优化对象,该方法在释放对象时被子引用,它是 java 中为了有效地进行垃圾收集而引入的一个特殊方法, finalize() 方法属于 java.lang.Object 的系统类方法,它能被所有类访问, 当一个对象实例已经完全没有被任何变量引用时,则可以对它进行垃圾收集标记,在进行”垃圾收集”之前,系统将自动调用对象的 finalize() 方法,释放对象实例所占用的系统资源.
8、float型float f=3.4是否正确?
答: 不正确。精度不准确, 应该用强制类型转换,如下所示:float f=(float)3.4
9、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?
答: Collection FrameWork如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)
Map提供key到value的映射
10、Java中异常处理机制,事件机制?
11、JAVA中的多形与继承?
希望大家补上,谢谢
12、抽象类与接口?
答: 抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识 (同时有多重继承的功能)。
13、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();
}
};
14、用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 ArrayList Sort Before:");
for (int i=0;i<num ;i++ )
{
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<al.size();i++)
{
tempInt = (Integer)al.remove(i);
if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
{
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
}
else
{
for (int j=0;j<MaxSize ;j++ )
{
if (((Integer)al.get(j)).intValue()>=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<al.size();i++)
{
System.out.println("al["+i+"]="+al.get(i));
}
}
public static void main(String[] args)
{
InsertSort is = new InsertSort(10,100); //定义一个类的对象
is.SortIt(); //调用类中的方法, 执行排序
}
}
JAVA类实现序例化的方法是实现java.io.Serializable接口
Collection框架中实现比较要实现Comparable 接口和 Comparator 接口
15、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
答:代码如下:
package test;
class SplitString
{
String SplitStr;
int SplitByte;
public SplitString(String str,int bytes) //带参数的构造函数,给类变量赋初值
{
SplitStr=str;
SplitByte=bytes;
System.out.println("The String is:´"+SplitStr+"´;SplitBytes="+SplitByte);
}
public void SplitIt()
{
int loopCount;
loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split
Byte+1);
System.out.println("Will Split into "+loopCount);
for (int i=1;i<=loopCount ;i++ )
{
if (i==loopCount){
System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
} else {
System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));
}
}
}
public static void main(String[] args)
{
SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人 0ewldfls=103",4);
ss.SplitIt();
}
}
16、JAVA多线程编程。 用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。
希望大家补上,谢谢
17、STRING 与 STRINGBUFFER 的区别。
答: STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
18. == 与 equals 的区别:
答: "==" 比较的是两个对象的引用 (references),并不是他们的内容.
equals(Object) 方法与 "==" 相比的特殊之处就在于它可以覆盖,所以我们可以通过覆盖的办法让它不是比较引用而是比较数据内容。当然 JDK 中也有覆盖过 equals(Object) 方法的类,如 java.lang.String,它就覆盖了从 Object 继承来的的 equals(Object) 方法,用以比较字符串内容是否相同。
19. JAVA的基本数据类型有哪些 ? String 是不是基本数据类型 ?
Java 有8种基本数据类型:
byte int short long double float Boolean char
其中, byte int short long 都属于整数类型.
Double float 属于浮点类型.
Boolean 为布尔类型
Char 为字符型
String 不是基本数据类型.它定义的为对象
20. 面向对象语言的特征:
a. 抽象性
b. 封装
c. 继承
d. 多态
20. 链表和数组的区别:
创建数组必须明确说明数组的长度,(即数组中元素的个数),以便在内存中留出一块空间存放所有的数组元素,数组中各数据元素在内存中是顺序存放的.
创建链表时,不需要给出链表中元素(称为节点)的个数,可以先只创建一个链表头,其他
元素在需要时动态地创建并加入到链表,链表的数据无素在内存中不是连续存放的.
Jsp方面
1、jsp有哪些内置对象?作用分别是什么?
答: JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
config servlet的构架部件
out 用来传送回应的输出 (用来向客户端输出数据)
page JSP网页本身
exception 针对错误网页,未捕捉的例外 (异常)
2、jsp有哪些动作?作用分别是什么?
答: JSP共有以下6种基本动作
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记
3、JSP中动态INCLUDE与静态INCLUDE的区别?
答: 动态INCLUDE用jsp:include动作实现
<jsp:include page="included.jsp" flush="true" />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面
<%@ include file="included.htm" %>
4、两种跳转方式分别是什么?有什么区别?
答: 有两种,分别为:
<jsp:include page="included.jsp" flush="true">
<jsp:forward page= "nextpage.jsp"/>
前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.
后者完全转向新页面,不会再回来。相当于go to 语句。
Servlet方面
1、说一说Servlet的生命周期?
答: Servlet 的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入 Servlet 时结束。包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由 javax.servlet.Servlet 接口的 init, service 和 destroy 方法表达。
2、Servlet版本间(忘了问的是哪两个版本了)的不同?
希望大家补上,谢谢
3、JAVA Servlet API中 forward() 与 redirect() 的区别?
答: 前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。
所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。但在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
4、Servlet的基本架构
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
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 {
doPost(request,response);
}
}
Jdbc、Jdo方面
1、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询.
答: 程序如下:
package hello.ant;
import java.sql.*;
public class jdbc
{
String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String theUser="admin";
String thePw="manager";
Connection conn=null;
Statement stmt;
ResultSet rs=null;
public jdbc()
{
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
conn = DriverManager.getConnection(dbUrl,theUser,thePw);
stmt=conn.createStatement();
}catch(Exception e){
e.printStackTrace();
}
}
public boolean executeUpdate(String sql)
{
try
{
stmt.executeUpdate(sql);
return true;
}
catch (SQLException e)
{
e.printStackTrace();
return false;
}
}
public ResultSet executeQuery(String sql)
{
rs=null;
try
{
rs=stmt.executeQuery(sql);
}
catch (SQLException e)
{
e.printStackTrace();
}
return rs;
}
public void close()
{
try
{
stmt.close();
conn.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
ResultSet rs;
jdbc stmt = new jdbc(); //定义上面 jdbc 类的对象,并调用其中的查询方法.
rs=stmt.executeQuery("select * from test");
try{
while (rs.next())
{
System.out.println(rs.getString("id"));
System.out.println(rs.getString("name"));
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}
2、Class.forName的作用?为什么要用?
答: 调用该访问 返回一个以字符串指定类名的类的对象。
3、Jdo是什么?
答: JDO是Java对象持久化的新的规范,为Java Data 0bject的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS) , JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。
4、在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<numPages*(currentPage-1))&&rs.next()){i++;}
%>
//输出内容
//输出翻页连接
合计:<%=currentPage%>/<%=intPageCount%><a href="List.jsp?page=1">第一页</a><a
href="List.jsp?page=<%=upPage%>">上一页</a>
<%
for(int j=1;j<=intPageCount;j++){
if(currentPage!=j){
%>
<a href="list.jsp?page=<%=j%>">[<%=j%>]</a>
<%
}else{
out.println(j);
}
}
%>
<a href="List.jsp?page=<%=nextPage%>">下一页</a><a href="List.jsp?page=<%=intPageCount%>">最后页
</a>
Xml方面
1、xml有哪些解析技术?区别是什么?
答: 有DOM , SAX , STAX 等
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存, 适合对XML的随机访问
SAX:不同于DOM(文档驱动型), SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
STAX: Streaming API for XML (StAX)
2、你在项目中用到了xml技术的哪些方面?如何实现的?
答: 用到了 数据存贮, 信息配置 两方面。
在做数据交换平台时,将数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再对XML文件中还原的相关信息进行处理。
在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。
3、用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());
}
}
}
4、编程用JAVA解析XML的方式.
答: 用SAX方式解析XML,XML文件如下:
<?xml version="1.0" encoding="gb2312"?>
<person>
<name>王小明</name>
<college>信息学院</college>
<telephone>6258113</telephone>
<notes>男,1955年生,博士,95年调入海南大学</notes>
</person>
事件回调类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:
<HTML>
<HEAD>
<TITLE>剖析XML文件people.xml</TITLE>
</HEAD>
<BODY>
<%@ 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("<TABLE BORDER=2><CAPTION>教师信息表</CAPTION>");
out.println("<TR><TD>姓名</TD>" + "<TD>" +
(String)hashTable.get(new String("name")) + "</TD></TR>");
out.println("<TR><TD>学院</TD>" + "<TD>" +
(String)hashTable.get(new String("college"))+"</TD></TR>");
out.println("<TR><TD>电话</TD>" + "<TD>" +
(String)hashTable.get(new String("telephone")) + "</TD></TR>");
out.println("<TR><TD>备注</TD>" + "<TD>" +
(String)hashTable.get(new String("notes")) + "</TD></TR>");
out.println("</TABLE>");
%>
</BODY>
</HTML>
EJB方面
1、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别?
答: 规范内容包括 Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。 JSP, Servlet, EJB, JNDI, JDBC, JMS.....
2、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组件。
3、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 javax.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 javax.ejb.SessionContext;
public class AddBean implements SessionBean
{
//some method declare
}
4. 会话 BEAN 的属性:
a. 会话Bean是一种作为单用户执行的对象,作为对远程任务请求的响应,容器产生一个Session Bean 的实例,一个 Session Bean 有一个用户,从某种程度上来说,一个 Session Bean 对于服务器来说就代表了它的那个用户.
b. Session Bean 也能用于事务,它能够更新共享的数据,但它不直接描述这些共享的数据.
c. Session Bean 的生命周期是相对短暂的,只用当用户保持会话的时候, Session Bean 才是活着的.
5. 实体 BEAN 的属性:
a. Entity Bean 对数据库中的数据提供了一种对象的视图.
b. 多个 Client 能够共享访问同一个 Entity Bean ,多个 Client 也能够同时地共享访问同一个 Entity Bean .
c. Entity Bean 通过事务的上下文来访问或更新下层的数据.这样,数据的完整性就能够被保证.
d. Entity Bean 能够存活相对较长的时间,并且状态是持续的.只要数据库存在, Entity Bean 就一直存活,即使EJB容器崩溃了, Entity Bean 也是存活的.
6. STATES SESSION BEAN 与 STATELESS SESSION BEAN 的区别:
a. 一个具有状态的Session Bean 称为有状态的Session Bean ,当用户终止与 Session Bean 互操作的时候,会话终止了, Bean 也不再拥有状态值.
b. 无状态的Session Bean 并不掌握它的客户的信息或者状态,用户能够调用Bean的一些方法来完成一些操作.但是,Bean只是在方法调用的时候才知道用户的参数变量,当方法调用完成的时候, Bean不再保持这些参数变量.
J2EE MVC方面
1、MVC的各个部分都有那些技术来实现?如何实现?
答: MVC是Model-View-Controller的简写。
"Model" 代表的是应用的业务逻辑 (通过JavaBean,EJB组件实现),
"View" 是应用的表示面(由JSP页面产生),
"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
2、应用服务器与WEB SERVER的区别?
希望大家补上,谢谢
3、J2EE是什么?
答: Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)
企业级应用模型(enterpriese application model). 在这样的一个应用系统中,可按照功能划分为
不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括 客
户层(clietn tier)组件, web层和组件, Business层和组件, 企业信息系统(EIS)层。
4、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。
答: Web Service描述语言WSDL
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。
5、BS与CS的联系与区别。
答: C/S 模式, 即客户端( Clinet)和服务器端 (Server)的两层结构模式, 其特点就是主要业务逻辑集中在客户端,因此,也带来了一定的弊端 :
a. 首先,在安装,调试,维护,升级方面比较因难, 因为每个客户端的配置不同,所以在配置的时候,必须对每个客户端进行配置.
b. 由于主要业务逻辑集中在客户端,系统的安全受到影响.
B/S 模式, 即浏览器端(Browers)和服务器端(Server)的结构模式, 其核心是用浏览器(Browers)取代C/S模式中的客户端。其优点是:
a. 首先,在维护,升级的时候,只须对服务器端进行维护和升能就可以了。
b. 由于客户端就是浏览器,有利于系统的安全。
6、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属性、国际化的提示和消息。
设计模式方面
1、开发中都用到了那些设计模式?用在什么场合?
答: 每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需再重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。
2、UML方面
答: 标准建模语言UML。 用例图, 静态图 ( 包括 类图、对象图 和 包图 ), 行为图, 交互图
( 顺序图, 合作图 ), 实现图,
JavaScript方面
1、如何校验数字型?
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); // 转型
}
CORBA方面
1、CORBA是什么?用途是什么?
答: CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。 其目的为:
a. 用不同的程序设计语言书写
b. 在不同的进程中运行
c. 为不同的操作系统开发
LINUX方面
1、LINUX下线程,GDI类的解释。
答: LINUX实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。
GDI类为图像设备编程接口类库。
数据库方面
1.写一个 SQL Server 中的存储过程:
以下为一个带有一个输入参数Vdeptno ,返回部门为Vdeptnor 的所有职员的信息.
create procedure Emp_dept
@Vdeptno number(2) AS
begin
select * from emp where deptno=@Vdeptno
end
2.写一个 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;
HTTP方面
1. 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 ,因此有时候这个过程是很慢的。
|
JAVA培训资料
一、Java语言
1、面向对象的三个基本特征
2、方法重载和方法重写的概念和区别
3、接口和内部类、抽象类的特性
4、文件读写的基本类
**5、串行化的注意事项以及如何实现串行化
6、线程的基本概念、线程的基本状态以及状态之间的关系
7、线程的同步、如何实现线程的同步
8、几种常用的数据结构及内部实现原理。
9、Socket通信(TCP、UDP区别及Java实现方式)
**10、Java的事件委托机制和垃圾回收机制
11、JDBC调用数据库的基本步骤
**12、解析XML文件的几种方式和区别
13、Java四种基本权限的定义
14、Java的国际化
二、JSP
1、至少要能说出7个隐含对象以及他们的区别
** 2、forward 和redirect的区别
3、JSP的常用指令
三、servlet
1、什么情况下调用doGet()和doPost()?
2、servlet的init()方法和service()方法的区别
3、servlet的生命周期
4、如何现实servlet的单线程模式
5、servlet的配置
6、四种会话跟踪技术
四、EJB
**1、EJB容器提供的服务
主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。
2、EJB的角色和三个对象
EJB角色主要包括Bean开发者 应用组装者 部署者 系统管理员 EJB容器提供者 EJB服务器提供者
三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类
2、EJB的几种类型
会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean
会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种
实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种
3、bean 实例的生命周期
对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池管理,而对于Entity Bean和Statefull Session Bean存在Cache管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove等过程,对于存在缓冲池管理的Bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。
4、激活机制
以Statefull Session Bean 为例:其Cache大小决定了内存中可以同时存在的Bean实例的数量,根据MRU或NRU算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean实例则从其去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的ejbActive和ejbPassivate方法。
5、remote接口和home接口主要作用
remote接口定义了业务方法,用于EJB客户端调用业务方法
home接口是EJB工厂用于创建和移除查找EJB实例
6、客服端调用EJB对象的几个基本步骤
一、设置JNDI服务工厂以及JNDI服务地址系统属性
二、查找Home接口
三、从Home接口调用Create方法创建Remote接口
四、通过Remote接口调用其业务方法
五、数据库
1、存储过程的编写
2、基本的SQL语句
六、weblogic
1、 如何给weblogic指定大小的内存?
在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M
2、 如何设定的weblogic的热启动模式(开发模式)与产品发布模式?
可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。
3、 如何启动时不需输入用户名与密码?
修改服务启动文件,增加 WLS_USER和WLS_PW项。也可以在boot.properties文件中增加加密过的用户名和密码.
4、 在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中?
保存在此Domain的config.xml文件中,它是服务器的核心配置文件。
5、 说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp放入何目录下,然的在浏览器上就可打入http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其中用到了一个自己写的javaBean该如何办?
Domain目录\服务器目录\applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。
6、 如何查看在weblogic中已经发布的EJB?
可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB
7、 如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置
缺省安装中使用DemoIdentity.jks 和 DemoTrust.jks KeyStore实现SSL,需要配置服务器使用Enable SSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创建identity和trust keystore,装载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。
8、在weblogic中发布ejb需涉及到哪些配置文件
不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP实体Bean一般还需要weblogic-cmp-rdbms-jar.xml
9、EJB需直接实现它的业务接口或Home接口吗,请简述理由.
远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。
10、说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃。
11、说说你所熟悉或听说过的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架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性
|