分享

华为面试题-JAVA

 昵称22369024 2015-05-02

,JAVA方面

面向对象的特征有哪些方面   

封装 继承  多态

2 String是最基本的数据类型吗?

不是

3 int 和 Integer 有什么区别

int 是基本数据类型

Integer int的包装类

4 String StringBuffer的区别

String创建的对象的内容不能改变

StringBuffer创建的对象的内容可以改变是在构造字符串中的一种过度形式,构件字符串各种数据类型的可扩充的缓冲区。

5运行时异常与一般异常有何异同?

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出被捕获的运行时异常

 

运行异常是指因设计或实现方式不当导致的问题。可以说是程序员原因导致的,本来可以避免发生的情况

一般的异常是描述运行时遇到的困难,它通常是由环境而非程序员的原因引起的,可以进行处理。

说出一些常用的类,包,接口,请各举5

类:Math  String  StringBuffer

包:java.lang java.uilt,java.net,java.io,java.awt

接口:collection ,set,list,map,runable

说出ArrayList,Vector, LinkedList的存储性能和特性

ArrayListVector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全)通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

8设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。

以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。

public class ThreadTest1{

private int j;

public static void main(String args[]){

ThreadTest1 tt=new ThreadTest1();

Inc inc=tt.new Inc();

Dec dec=tt.new Dec();

for(int i=0;i<2;i++){

Thread t=new Thread(inc);

t.start();

t=new Thread(dec);

t.start();

}

}

private synchronized void inc(){

j++;

System.out.println(Thread.currentThread().getName()+"-inc:"+j);

}

private synchronized void dec(){

j--;

System.out.println(Thread.currentThread().getName()+"-dec:"+j);

}

class Inc implements Runnable{

public void run(){

for(int i=0;i<100;i++){

inc();

}

}

}

class Dec implements Runnable{

public void run(){

for(int i=0;i<100;i++){

dec();

}

}

}

}

9. JSP的内置对象及方法。

request request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, session数据的有用的方法。 
 
response response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等) 

out out 对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。 

pageContext pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 

session session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息 

application applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息 

config config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 

page page表示从该页面产生的一个servlet实例

 

request:客户端请求,包括GET/POST请求传递过来的参数

 

response:网页传回客户端的反应

 

pagecontext:管理网页属性

 

session:与请求相关的会话

 

application:脚本程序的运行环境

 

out:传送响应的输出流

 

config:脚本程序的配置对象

 

exception:处理异常和错误

 

page:JSP 网页本身

 

10.socket通讯写出客户端和服务器端的通讯,要求客户发送数据后能够回显相同的数据。

 

TestServer.java

import java.net.*;

import java.io.*;

 

public class TestServer {

public static void main(String args[]) {

try {

ServerSocket s = new ServerSocket(8888);

while (true) {

Socket s1 = s.accept();

InputStream is = s1.getInputStream();

DataInputStream dis = new DataInputStream(is);

OutputStream os = s1.getOutputStream();

DataOutputStream dos = new DataOutputStream(os);

    dos.writeUTF(dis.readUTF());

    dis.close();

dos.close();

s1.close();

}

}catch (IOException e) {

System.out.println("程序运行出错:" + e);

}

}

}

TestClient.java

import java.net.*;

import java.io.*;

public class TestClient {

public static void main(String args[]) {

try {

Socket s1 = new Socket("127.0.0.1", 8888);

OutputStream os = s1.getOutputStream();

DataOutputStream dos = new DataOutputStream(os);

dos.writeUTF("i love you!!!");

InputStream is = s1.getInputStream();

DataInputStream dis = new DataInputStream(is);

System.out.println(dis.readUTF());

dos.close();

dis.close();

s1.close();

} catch (ConnectException connExc) {

System.err.println("服务器连接失败!");

} catch (IOException e) {

}

}

}

11说出Servlet的生命周期,并说出ServletCGI的区别。

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGetdoPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet

12.EJB是基于哪些技术实现的?并说出SessionBeanEntityBean的区别,StatefulBeanStatelessBean的区别。

EJB是基于对象组件模型的,低层的事务服务用了API技术

会话bean是一种作为单用户执行的对象

实体bean是用来对包含在企业系统中的数据进行封装EJB,是对数据库中的数据提供了一种对象的映射,它是用来代表底层的对象。

 

实体bean

会话bean

持久对象,允许保存记录的信息

不是持久的,允许保存客户端的状态信息

有一个主键,可以搜索到

不可以被搜索

可以被共享

通常一个用户使用一个bean

必须被显示删除

过一段非活动期后将被自动回收

不受服务器宕机影响

受服务器宕机影响

删除意味着底层数据库记录被删除

删除意味着从容器中删除,不能再使用,并且其状态信息也将丢失

 

13EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?

 

14.说出数据连接池的工作机制是什么?

 

15同步和异步有和异同,在什么情况下分别使用他们?举例说明。

 

16应用服务器有那些?

 

17你所知道的集合类都有哪些?主要方法?

 

18给你一个:驱动程序A,数据源名称为B,用户名称为C,密码为D,数据库表为T,请用JDBC检索出表T的所有数据。

19.说出在JSP页面里是怎么分页的?

页面需要保存以下参数:

总行数:根据sql语句得到总行数

每页显示行数:设定值

当前页数:请求参数

页面根据当前页数和每页行数计算出当前页第一行行数,定位结果集到此行,对结果集取出每页显示行数的行即可。

 

 

数据库方面:

 

1. 存储过程和函数的区别

存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表

2. 事务是什么?

事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:

原子性

事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

一致性

事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。

隔离性

由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

持久性

事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

 

3. 游标的作用?如何知道游标已经到了最后?

游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。

4. 触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。

事前触发器运行触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。

语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。

 

 


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多