您的位置:首页 > 职场人生

java面试总结

2011-09-25 20:36 218 查看
一、Struts和servlet的关系?

答:

i. 在struts2.0中,可以通过ServletActionContext.getRequest()获取request对象。

ii. Struts2.0的原理:

a) 客户端提起一个(HttpServletRequest)请求,如上文在浏览器中输入”http://localhost:8080/TestMvc/add.action” 。

b) 请求被提交到一系列(主要是三层)的过滤器(Filter),如ActionContextCleanUp,FilterDispatcher等 。

c) FilterDispatcher是控制器的核心,FilterDispatcher进行初始化并启用核心doFilter 。

d) FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 。

e) ActionProxy通过(struts.xml)询问框架的配置文件,找到需要调用的Action类. 。

f) ActionProxy创建一个ActionInvocation的实例,同时ActionInvocation通过代理模式调用Action。但在调用之前ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)

iii. ActionInvocation工作原理:

a) ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor。

b) 通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。

c) 一 旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果



二、 冒泡排序的过程

答:

a) 基本思想:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,关键字较小的记录将逐渐从后面向前面移动,就象气泡在水中向上浮一样,所以该算法也称为气泡排序法。

改进方案:了提升冒泡排序法的效率,可对BubbleSort函数进行改进,当在某一遍扫描时,发现数据都已经按顺序排列了,就不再进行后继的扫描,而结束排序过程。

b) 图形表示:


a) 算法程序:

为改进前:

void BubbleSort(int a[],int n)

{

int i,j,t;

for(i=0;i<n-1;i++)

{

for(j=n-1;j>i;j--)

{

if(a[j-1]>a[j])

{

t=a[j-1];

a[j-1]=a[j];

a[j]=t;

}

}

printf("第%2d遍:",i+1);

for(j=0;j<n;j++)

printf("%d ",a[j]);

printf("\n");

}

}

改进后:

void BubbleSort1(int a[],int n)

{

int i,j,t,flag=0; //flag用来标记是否发生交换

for(i=0;i<n-1;i++)

{

for(j=n-1;j>i;j--)

{

if(a[j-1]>a[j])//交换数据

{

t=a[j-1];

a[j-1]=a[j];

a[j]=t;

flag=1;

}

}

printf("第%2d遍:",i+1);

for(j=0;j<n;j++)

printf("%d",a[j]);

printf("\n");

if(flag==0) //没发生交换,直接跳出循环

break;

else

flag=0;

}

}

三、有两个表,一个学生表SC一个选课表SC,没选课的同学在SC表中没有记录,请查询出没有选修英语科目的学生。入下图

S(学生表)

学号

S_no

姓名

S_name

年龄

S_age

SC(选课表)

学号

S_no

科目

Sc_name

成绩

Sc_score

答:SELECT s_no, s_name, s_ageFROM S WHERE NOT EXISTS (SELECT * FROM SC WHERES.s_no=SC.s_no ANDSC.sc_name = '英语');

测试建立数据表的语句:

create table S(

s_novarchar(10) primary key,

s_namevarchar(25),

s_ageint

);

create table SC(

s_novarchar(10),

sc_namevarchar(25),

s_score varchar(6),

primary key(s_no,sc_name)

);

alter table SC add constraint fk_user_role_userforeign key(s_no) references S(s_no);

insert into S values('1','张三', 22);

insert into S values('2','李四', 20);

insert into S values('3','王五', 24);

insert into SC values('1','英语', 85);

insert into SC values('1','数学', 90);

insert into SC values('2','语文', 79);

四、描述面向对象语言Java三大特征中多态的特性?

答:

a) 一个接口定义了N个抽象方法,接口的M个实现类都实现了这N个方法,通过这N个方法建立了一种父子引用联系——“父类引用指向子类对象”。

b) Overload(重载)和Override(重写)。其中重载是一个类中的多态性的一种体现;重写是父类和子类之间多态性的一种体现。

五、 Java中创建多线程的几种方法?

答:

a) 继承Thread类后覆盖其中的public void run()方法。

b) 创建一个线程类Thread的实例,在构造函数中把实现Runnable接口后的实例对象当成参数传递进去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: