SlideShare une entreprise Scribd logo
1  sur  12
JAVA 方面

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

   封装: 一个类中有多个的属性与方法,对于方法与属性有四种修

饰符:public protected private 无

   继承:子类继承父类的所有方与属性。可以覆盖,在覆盖的构造函

数及方法通过 super(),方法 super.父类方法名()

   多态:

      静态:方法名相同,参数不同。

      动态:

          将子类的实例传与父类的引用,调用的是子类的方法。

          将实现接口的类的实例传与接口的引用,调用的是实现类

      的方法。

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

   不 是 , 是 一 个 类 。 基 本 的 数 据 类 型 是

int、long、boolean、char、float、double

3 int 和 Integer 有什么区别

   Int 是基本的数据类型,不是对象。

   Integer 是一个封装类,其实例可以封装一个整型值,其有多个方

法,如 parseInt(“”),将字符串转化为了一整型。

4 String 和 StringBuffer 的区别

   String 在合并字符串时要转化成 StringBuffer ,所以效率较低度 。

StringBuffer 的效率较高
5 运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通
常操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明

抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时
异常。
运行时异常:由 java 虚拟机抛出的异常。用户不必处理。
一般异常是用户可以抛出的异常,如果抛出调用必须进行处理。
6 说出一些常用的类,包,接口,请各举 5 个

类:Math ClassLoader Class Method HttpServlet String Integer

包:java.lang.*;java.sql.*;java.io.*;javax.xml.*;java.util.*

接口: Collection Set List Map EJBObject EntityBean SessionBean EJBHome

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

ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的

数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要
涉及数组元素移动等内存操作,所以索引数据快而插入数据慢, 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 实例

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

相同的数据。
参见课程中 socket 通讯例子。


public class ServerSocket_1
{
  public static void main(String[] args)
        throws Exception
  {
     ServerSocket ss = new ServerSocket(4001);
     Socket s = ss.accept();
     BufferedReader br = new BufferedReader(new InputStreamReader(s.
           getInputStream()));
     PrintStream ps=new PrintStream(s.getOutputStream());
     String temp = br.readLine();
     while (true)
     {
          System.out.println("客户端:"+temp);
          ps.println(temp);
          if (temp.equals("stop"))
          {
             break;
          }
          temp = br.readLine();
        }
        br.close();
        ps.close();
        ss.close();
    }
}
public class ClientSocket
{
  public static void main(String[] args) throws Exception
  {
    Socket s = new Socket("localhost", 4001);
    PrintStream ps = new PrintStream(s.getOutputStream());
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedReader br_server = new BufferedReader(new InputStreamReader(s.
          getInputStream()));
    String temp = br.readLine();
    while (true)
    {
       ps.println(temp);
       temp = br_server.readLine();
          System.out.println("服务器的信息:" + temp);
          if (temp.equals("stop"))
          {
             break;
          }
          temp = br.readLine();
        }
        s.close();
        br.close();
        br_server.close();
    }
}
11 说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别。

Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方

法, service 方法自动派遣运行与请求对应的 doXXX 方法( doGet ,doPost )等,

当服务器决定将实例销毁的时候调用其 destroy 方法。

与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service

方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每

个请求都产生新的进程,服务完成后就销毁,所以效率上低于 servlet。

12.EJB 是 基 于 哪 些 技 术 实 现 的 ? 并 说 出 SessionBean 和 EntityBean 的 区 别 ,
StatefulBean 和 StatelessBean 的区别。

EJB 是基于哪些技术实现

   JNDI:

   RMI:远程方法调用

SessionBean 和 EntityBean 的区别

   SessionBean:只是一个会话,StatelessBean 只是一个过程,不记忆任何信息 。

StatefulBean 对于个用户,在多次调用的方法中保留状态信息,但是主机关闭后

这些信息会消失。
   EntityBean: 使 用 o/rMaping 将 对 象 持 久 化 到 数 据 库 中 , 其 包 括 cmp 及

Bmp,cmp 的持久化通过容器来实现,我们不写 sql。Bmp 通过 JDBC 实现,要写

大量的 sql 语句。在开发 cmp 较 bmp 容易。在效率上 cmp 低于 bmp。

   EntityBean 代表的是一个业务实体,如银行系统中的 IC 卡,应该是实体

Bean。sessionBean 只是一个过程。如登陆校验。EntityBean 有主键,可以共享该问。

sessionBean 没有主键,对 StatelessBean 可以共享访问,但 StatefulBean 不可以

共享访问。


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

务的?
   SessionBean,EntityBean 的 事 务 管 理 是 由 容 器 实 的 。 主 要 的 方 式

struts+session+entityBean 实现系统的。 当 sessionBean 调用多个实体 Bean 时,事

务由 SessionBean 统一管理,entityBean 共享 sessionBean 中的事务。

   无状态的 SessionBean
不存在


       remove                            create
       ejbRemove                         ejbCreate


                              就绪



    有状态的 sessionBean



                                   不存在


             remove                                  setSessionContext
             ejbRemove                               create
                                                     ejbCreate
                                   就绪
        ejbRemove

                    ejbPassivate

              挂起
                                    ejbActivate

entityBean
不存在



  remove                             setSessionContext
  ejbRemove                          create
                                     ejbCreate

                         入池




      ejbPassivate         ejbActivate



                         就绪



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

容器或相关的应用程序在其池中实例化多个边接,当应用程序在使用时,容器
直接将池中的连接取出应用程序直接使用,同时当应用程序使用完后,容器还
可以将连接收回。从而提高系统的效率。
15 同步和异步有和异同,在什么情况下分别使用他们?举例说明。

同步:上一段代码没的完成,下一段必须等到上一段代码完成后才可以执行。如
买标排队
异步:上一段代码没的完成,下一段不必等到上一段代码完成就可以执行。如手
机发送短信。
16 应用服务器有那些?

Jboss:支持 ejb 的自由软件.

Tomcat:不支持 ejb 的自由软件.

Weblogic: :支持 ejb 的商业软件.

Websphere: 支持 ejb 的商业软件.

17 你所知道的集合类都有哪些?主要方法?
            Collection         Map       Collections(算法)
   List      set         HashMap
ArrayList linkedList HashSet TreeSet


主要方法:
    Add remove get(i) contains containsAll iterate addAll deleteAll


18 给你一个 : 驱动程序 A, 数据源名称为 B, 用户名称为 C, 密码为 D, 数据库表为

T,请用 JDBC 检索出表 T 的所有数据。
Class.forName(A);
Connection con=DriverManager.openConnection(“jdbc:odbc:B”,C,D)
preparedStatment ps=Con.preparedStatment(“select * from T”);
ResultSet rs=ps.executeQuery();
While(rs.next)
{
    Rs.getString(1) 或 rs.getString(“字段名”)
}
19.说出在 JSP 页面里是怎么分页的?

页面需要保存以下参数:
总行数:根据 sql 语句得到总行数
每页显示行数:设定值
当前页数:请求参数
页面根据当前页数和每页行数计算出当前页第一行行数,定位结果集到此行,
对结果集取出每页显示行数的行即可。


Int allrows//总行

Int eachrow //每页显的行数

Int currentPage //当前页

Resulte rs //结果集


Int currentRow //当前页的第一行

currentRow=(currentPage -1)* eachrow //第一页的下标从 0 开始
for(int i=1;i< currentRow;i++)
{
     Rs.next();
}
for(int i= currentRow;i<currentRow+ eachrow ;i++)
{
     If(rs.next)
     {
          输出
     }
     Else
     {
          Break;
     }
}

在 jsp 页面中通过 session 设置如下信息

    总行数:根据 sql 语句得到总行数
  每页显示行数:设定值
  当前页数:请求参数
  ResultSet rs
数据库方面:


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

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

            存储过程可以通过输出参数返回 n 个结果。通过 select 语句无法直接

         调用,可以通过 exec 存储过程名(参数 )执行。

            函数只返回一个值,只有输入参数。通过 select 语句可以直接调用

    2.   事务是什么?


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

原子性
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行
回退,只要有了一个错误就报错。

一致性

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

隔离性

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

  事务之间相互隔离,不相互影响。如一个事务正在修改的行另一个事务只可
以看已提交的信息,不可以修改相应的行。

持久性

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



 3.   游标的作用?如何知道游标已经到了最后?
      游标用于定位结果集的行,


      在 sql-server 中通过判断全局变量 @@FETCH_STATUS 可以判断是否到了最
      后,通常此变量不等于 0 表示出错或到了最后。
      在 Oracle 中通过 c1%found 如果为假,表示到了行的最后。

 4.   触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和
      行级触发有何区别。
      事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发
      生之后。通常事前触发器可以获取事件之前和新的字段值。
      事前触发器:在修改基表内容之前触发。

      事后触发器:在修改基表内容之后触发。
语句级触发器一个 delete 或 insert 或 update 执行一次触发触发器仅一次,

而行级触发, delete 或 insert 或 update 修改的行可能有多个,如果是多

个 sql 的触发的每一行触发一次触发器执行一次。

Contenu connexe

Tendances

Jni攻略之八――操作对象的构造方法
Jni攻略之八――操作对象的构造方法Jni攻略之八――操作对象的构造方法
Jni攻略之八――操作对象的构造方法yiditushe
 
Python xmlrpc-odoo
Python xmlrpc-odooPython xmlrpc-odoo
Python xmlrpc-odoorobin yang
 
线程编程方面
线程编程方面线程编程方面
线程编程方面yiditushe
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验QLeelulu
 
所谓闭包
所谓闭包所谓闭包
所谓闭包ilovey4
 
Java程序员面试之葵花宝典
Java程序员面试之葵花宝典Java程序员面试之葵花宝典
Java程序员面试之葵花宝典yiditushe
 
Javascript之昨是今非
Javascript之昨是今非Javascript之昨是今非
Javascript之昨是今非Tony Deng
 
Hash map导致cpu100% 的分析
Hash map导致cpu100% 的分析Hash map导致cpu100% 的分析
Hash map导致cpu100% 的分析wang hongjiang
 
Ecmascript
EcmascriptEcmascript
Ecmascriptjay li
 
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorInside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorAdy Liu
 
异步编程与浏览器执行模型
异步编程与浏览器执行模型异步编程与浏览器执行模型
异步编程与浏览器执行模型keelii
 
JAVA内存泄漏及诊断
JAVA内存泄漏及诊断JAVA内存泄漏及诊断
JAVA内存泄漏及诊断ivannotes
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascriptjay li
 
180518 ntut js and node
180518 ntut js and node180518 ntut js and node
180518 ntut js and nodePeter Yi
 
Spring4.x + hibernate4.x_配置详解
Spring4.x + hibernate4.x_配置详解Spring4.x + hibernate4.x_配置详解
Spring4.x + hibernate4.x_配置详解zany_hui
 
IOS入门分享
IOS入门分享IOS入门分享
IOS入门分享zenyuhao
 
Keep your code clean
Keep your code cleanKeep your code clean
Keep your code cleanmacrochen
 

Tendances (20)

Sun java
Sun javaSun java
Sun java
 
Jni攻略之八――操作对象的构造方法
Jni攻略之八――操作对象的构造方法Jni攻略之八――操作对象的构造方法
Jni攻略之八――操作对象的构造方法
 
Python xmlrpc-odoo
Python xmlrpc-odooPython xmlrpc-odoo
Python xmlrpc-odoo
 
线程编程方面
线程编程方面线程编程方面
线程编程方面
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
 
所谓闭包
所谓闭包所谓闭包
所谓闭包
 
Java程序员面试之葵花宝典
Java程序员面试之葵花宝典Java程序员面试之葵花宝典
Java程序员面试之葵花宝典
 
Javascript之昨是今非
Javascript之昨是今非Javascript之昨是今非
Javascript之昨是今非
 
泛型总结
泛型总结泛型总结
泛型总结
 
Hash map导致cpu100% 的分析
Hash map导致cpu100% 的分析Hash map导致cpu100% 的分析
Hash map导致cpu100% 的分析
 
Ecmascript
EcmascriptEcmascript
Ecmascript
 
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorInside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
 
异步编程与浏览器执行模型
异步编程与浏览器执行模型异步编程与浏览器执行模型
异步编程与浏览器执行模型
 
Java Thread
Java ThreadJava Thread
Java Thread
 
JAVA内存泄漏及诊断
JAVA内存泄漏及诊断JAVA内存泄漏及诊断
JAVA内存泄漏及诊断
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
 
180518 ntut js and node
180518 ntut js and node180518 ntut js and node
180518 ntut js and node
 
Spring4.x + hibernate4.x_配置详解
Spring4.x + hibernate4.x_配置详解Spring4.x + hibernate4.x_配置详解
Spring4.x + hibernate4.x_配置详解
 
IOS入门分享
IOS入门分享IOS入门分享
IOS入门分享
 
Keep your code clean
Keep your code cleanKeep your code clean
Keep your code clean
 

En vedette

Prototype开发手册
Prototype开发手册Prototype开发手册
Prototype开发手册yiditushe
 
Linux必学的60个命令
Linux必学的60个命令Linux必学的60个命令
Linux必学的60个命令yiditushe
 
1 软件开发过程概述
1  软件开发过程概述1  软件开发过程概述
1 软件开发过程概述yiditushe
 
Java案例开发集锦
Java案例开发集锦Java案例开发集锦
Java案例开发集锦yiditushe
 
Jdbc Odbc使用Excel作数据源
Jdbc Odbc使用Excel作数据源Jdbc Odbc使用Excel作数据源
Jdbc Odbc使用Excel作数据源yiditushe
 
Java相关基础知识
Java相关基础知识Java相关基础知识
Java相关基础知识yiditushe
 
Java 推荐读物
Java 推荐读物Java 推荐读物
Java 推荐读物yiditushe
 
Jdbc中驱动加载的过程分析(下)
Jdbc中驱动加载的过程分析(下)Jdbc中驱动加载的过程分析(下)
Jdbc中驱动加载的过程分析(下)yiditushe
 
Java 面试32问
Java 面试32问Java 面试32问
Java 面试32问yiditushe
 

En vedette (9)

Prototype开发手册
Prototype开发手册Prototype开发手册
Prototype开发手册
 
Linux必学的60个命令
Linux必学的60个命令Linux必学的60个命令
Linux必学的60个命令
 
1 软件开发过程概述
1  软件开发过程概述1  软件开发过程概述
1 软件开发过程概述
 
Java案例开发集锦
Java案例开发集锦Java案例开发集锦
Java案例开发集锦
 
Jdbc Odbc使用Excel作数据源
Jdbc Odbc使用Excel作数据源Jdbc Odbc使用Excel作数据源
Jdbc Odbc使用Excel作数据源
 
Java相关基础知识
Java相关基础知识Java相关基础知识
Java相关基础知识
 
Java 推荐读物
Java 推荐读物Java 推荐读物
Java 推荐读物
 
Jdbc中驱动加载的过程分析(下)
Jdbc中驱动加载的过程分析(下)Jdbc中驱动加载的过程分析(下)
Jdbc中驱动加载的过程分析(下)
 
Java 面试32问
Java 面试32问Java 面试32问
Java 面试32问
 

Similaire à Java华为面试题

J2ee经典学习笔记
J2ee经典学习笔记J2ee经典学习笔记
J2ee经典学习笔记yiditushe
 
线程与并发
线程与并发线程与并发
线程与并发Tony Deng
 
jsp基础速成精华讲解
jsp基础速成精华讲解jsp基础速成精华讲解
jsp基础速成精华讲解wensheng wei
 
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7javatwo2011
 
Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研lorisjand
 
Spring 2.0 技術手冊第五章 - JDBC、交易支援
Spring 2.0 技術手冊第五章 - JDBC、交易支援Spring 2.0 技術手冊第五章 - JDBC、交易支援
Spring 2.0 技術手冊第五章 - JDBC、交易支援Justin Lin
 
中远公司 Java培训资料
中远公司  Java培训资料中远公司  Java培训资料
中远公司 Java培训资料yiditushe
 
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletJustin Lin
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
test
testtest
testxieyq
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践Li JianYe
 
中心教员J2 Ee面试题
中心教员J2 Ee面试题中心教员J2 Ee面试题
中心教员J2 Ee面试题yiditushe
 
Java面试宝典
Java面试宝典Java面试宝典
Java面试宝典ma tao
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backboneJerry Xie
 
Java并发核心编程
Java并发核心编程Java并发核心编程
Java并发核心编程wavefly
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试lydiafly
 
Java Script 引擎技术
Java Script 引擎技术Java Script 引擎技术
Java Script 引擎技术bigqiang zou
 

Similaire à Java华为面试题 (20)

J2ee经典学习笔记
J2ee经典学习笔记J2ee经典学习笔记
J2ee经典学习笔记
 
Exodus2 大局观
Exodus2 大局观Exodus2 大局观
Exodus2 大局观
 
线程与并发
线程与并发线程与并发
线程与并发
 
jsp基础速成精华讲解
jsp基础速成精华讲解jsp基础速成精华讲解
jsp基础速成精华讲解
 
Js培训
Js培训Js培训
Js培训
 
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
 
Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研
 
Spring 2.0 技術手冊第五章 - JDBC、交易支援
Spring 2.0 技術手冊第五章 - JDBC、交易支援Spring 2.0 技術手冊第五章 - JDBC、交易支援
Spring 2.0 技術手冊第五章 - JDBC、交易支援
 
中远公司 Java培训资料
中远公司  Java培训资料中远公司  Java培训资料
中远公司 Java培训资料
 
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
test
testtest
test
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践
 
中心教员J2 Ee面试题
中心教员J2 Ee面试题中心教员J2 Ee面试题
中心教员J2 Ee面试题
 
Jsp
JspJsp
Jsp
 
Java面试宝典
Java面试宝典Java面试宝典
Java面试宝典
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backbone
 
Java并发核心编程
Java并发核心编程Java并发核心编程
Java并发核心编程
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
Java Script 引擎技术
Java Script 引擎技术Java Script 引擎技术
Java Script 引擎技术
 

Plus de yiditushe

Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要yiditushe
 
J Bpm4 1中文用户手册
J Bpm4 1中文用户手册J Bpm4 1中文用户手册
J Bpm4 1中文用户手册yiditushe
 
性能测试实践2
性能测试实践2性能测试实践2
性能测试实践2yiditushe
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1yiditushe
 
性能测试技术
性能测试技术性能测试技术
性能测试技术yiditushe
 
Load runner测试技术
Load runner测试技术Load runner测试技术
Load runner测试技术yiditushe
 
J2 ee性能测试
J2 ee性能测试J2 ee性能测试
J2 ee性能测试yiditushe
 
面向对象的Js培训
面向对象的Js培训面向对象的Js培训
面向对象的Js培训yiditushe
 
Flex3中文教程
Flex3中文教程Flex3中文教程
Flex3中文教程yiditushe
 
开放源代码的全文检索Lucene
开放源代码的全文检索Lucene开放源代码的全文检索Lucene
开放源代码的全文检索Luceneyiditushe
 
基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍yiditushe
 
Lucene In Action
Lucene In ActionLucene In Action
Lucene In Actionyiditushe
 
Lucene2 4学习笔记1
Lucene2 4学习笔记1Lucene2 4学习笔记1
Lucene2 4学习笔记1yiditushe
 
Lucene2 4 Demo
Lucene2 4 DemoLucene2 4 Demo
Lucene2 4 Demoyiditushe
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践yiditushe
 
Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析yiditushe
 
7 面向对象设计原则
7 面向对象设计原则7 面向对象设计原则
7 面向对象设计原则yiditushe
 
10 团队开发
10  团队开发10  团队开发
10 团队开发yiditushe
 
9 对象持久化与数据建模
9  对象持久化与数据建模9  对象持久化与数据建模
9 对象持久化与数据建模yiditushe
 
8 Uml构架建模
8  Uml构架建模8  Uml构架建模
8 Uml构架建模yiditushe
 

Plus de yiditushe (20)

Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要
 
J Bpm4 1中文用户手册
J Bpm4 1中文用户手册J Bpm4 1中文用户手册
J Bpm4 1中文用户手册
 
性能测试实践2
性能测试实践2性能测试实践2
性能测试实践2
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1
 
性能测试技术
性能测试技术性能测试技术
性能测试技术
 
Load runner测试技术
Load runner测试技术Load runner测试技术
Load runner测试技术
 
J2 ee性能测试
J2 ee性能测试J2 ee性能测试
J2 ee性能测试
 
面向对象的Js培训
面向对象的Js培训面向对象的Js培训
面向对象的Js培训
 
Flex3中文教程
Flex3中文教程Flex3中文教程
Flex3中文教程
 
开放源代码的全文检索Lucene
开放源代码的全文检索Lucene开放源代码的全文检索Lucene
开放源代码的全文检索Lucene
 
基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍基于分词索引的全文检索技术介绍
基于分词索引的全文检索技术介绍
 
Lucene In Action
Lucene In ActionLucene In Action
Lucene In Action
 
Lucene2 4学习笔记1
Lucene2 4学习笔记1Lucene2 4学习笔记1
Lucene2 4学习笔记1
 
Lucene2 4 Demo
Lucene2 4 DemoLucene2 4 Demo
Lucene2 4 Demo
 
Lucene 全文检索实践
Lucene 全文检索实践Lucene 全文检索实践
Lucene 全文检索实践
 
Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析Lucene 3[1] 0 原理与代码分析
Lucene 3[1] 0 原理与代码分析
 
7 面向对象设计原则
7 面向对象设计原则7 面向对象设计原则
7 面向对象设计原则
 
10 团队开发
10  团队开发10  团队开发
10 团队开发
 
9 对象持久化与数据建模
9  对象持久化与数据建模9  对象持久化与数据建模
9 对象持久化与数据建模
 
8 Uml构架建模
8  Uml构架建模8  Uml构架建模
8 Uml构架建模
 

Java华为面试题

  • 1. JAVA 方面 1 面向对象的特征有哪些方面 封装: 一个类中有多个的属性与方法,对于方法与属性有四种修 饰符:public protected private 无 继承:子类继承父类的所有方与属性。可以覆盖,在覆盖的构造函 数及方法通过 super(),方法 super.父类方法名() 多态: 静态:方法名相同,参数不同。 动态: 将子类的实例传与父类的引用,调用的是子类的方法。 将实现接口的类的实例传与接口的引用,调用的是实现类 的方法。 2 String 是最基本的数据类型吗? 不 是 , 是 一 个 类 。 基 本 的 数 据 类 型 是 int、long、boolean、char、float、double 3 int 和 Integer 有什么区别 Int 是基本的数据类型,不是对象。 Integer 是一个封装类,其实例可以封装一个整型值,其有多个方 法,如 parseInt(“”),将字符串转化为了一整型。 4 String 和 StringBuffer 的区别 String 在合并字符串时要转化成 StringBuffer ,所以效率较低度 。 StringBuffer 的效率较高
  • 2. 5 运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通 常操作中可能遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明 抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时 异常。 运行时异常:由 java 虚拟机抛出的异常。用户不必处理。 一般异常是用户可以抛出的异常,如果抛出调用必须进行处理。 6 说出一些常用的类,包,接口,请各举 5 个 类:Math ClassLoader Class Method HttpServlet String Integer 包:java.lang.*;java.sql.*;java.io.*;javax.xml.*;java.util.* 接口: Collection Set List Map EJBObject EntityBean SessionBean EJBHome 7 说出 ArrayList,Vector, ArrayLlinkedListd 的存储性能和特性 ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的 数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要 涉及数组元素移动等内存操作,所以索引数据快而插入数据慢, 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();
  • 3. 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 相关功能的方 法 。
  • 4. session session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户 的 状 态 信 息 application applicaton 表 示 一 个 javax.servle.ServletContext 对 象 。 这 有 助 于 查 找 有 关 servlet 引 擎 和 servlet 环 境 的 信 息 config config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初 始 化 参 数 。 page page 表示从该页面产生的一个 servlet 实例 10.用 socket 通讯写出客户端和服务器端的通讯,要求客户发送数据后能够回显 相同的数据。 参见课程中 socket 通讯例子。 public class ServerSocket_1 { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(4001); Socket s = ss.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(s. getInputStream())); PrintStream ps=new PrintStream(s.getOutputStream()); String temp = br.readLine(); while (true) { System.out.println("客户端:"+temp); ps.println(temp); if (temp.equals("stop")) { break; } temp = br.readLine(); } br.close(); ps.close(); ss.close(); } }
  • 5. public class ClientSocket { public static void main(String[] args) throws Exception { Socket s = new Socket("localhost", 4001); PrintStream ps = new PrintStream(s.getOutputStream()); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedReader br_server = new BufferedReader(new InputStreamReader(s. getInputStream())); String temp = br.readLine(); while (true) { ps.println(temp); temp = br_server.readLine(); System.out.println("服务器的信息:" + temp); if (temp.equals("stop")) { break; } temp = br.readLine(); } s.close(); br.close(); br_server.close(); } } 11 说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别。 Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方 法, service 方法自动派遣运行与请求对应的 doXXX 方法( doGet ,doPost )等, 当服务器决定将实例销毁的时候调用其 destroy 方法。 与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每 个请求都产生新的进程,服务完成后就销毁,所以效率上低于 servlet。 12.EJB 是 基 于 哪 些 技 术 实 现 的 ? 并 说 出 SessionBean 和 EntityBean 的 区 别 ,
  • 6. StatefulBean 和 StatelessBean 的区别。 EJB 是基于哪些技术实现 JNDI: RMI:远程方法调用 SessionBean 和 EntityBean 的区别 SessionBean:只是一个会话,StatelessBean 只是一个过程,不记忆任何信息 。 StatefulBean 对于个用户,在多次调用的方法中保留状态信息,但是主机关闭后 这些信息会消失。 EntityBean: 使 用 o/rMaping 将 对 象 持 久 化 到 数 据 库 中 , 其 包 括 cmp 及 Bmp,cmp 的持久化通过容器来实现,我们不写 sql。Bmp 通过 JDBC 实现,要写 大量的 sql 语句。在开发 cmp 较 bmp 容易。在效率上 cmp 低于 bmp。 EntityBean 代表的是一个业务实体,如银行系统中的 IC 卡,应该是实体 Bean。sessionBean 只是一个过程。如登陆校验。EntityBean 有主键,可以共享该问。 sessionBean 没有主键,对 StatelessBean 可以共享访问,但 StatefulBean 不可以 共享访问。 13 . EJB 包括( SessionBean,EntityBean )说出他们的生命周期,及如何管理事 务的? SessionBean,EntityBean 的 事 务 管 理 是 由 容 器 实 的 。 主 要 的 方 式 struts+session+entityBean 实现系统的。 当 sessionBean 调用多个实体 Bean 时,事 务由 SessionBean 统一管理,entityBean 共享 sessionBean 中的事务。 无状态的 SessionBean
  • 7. 不存在 remove create ejbRemove ejbCreate 就绪 有状态的 sessionBean 不存在 remove setSessionContext ejbRemove create ejbCreate 就绪 ejbRemove ejbPassivate 挂起 ejbActivate entityBean
  • 8. 不存在 remove setSessionContext ejbRemove create ejbCreate 入池 ejbPassivate ejbActivate 就绪 14.说出数据连接池的工作机制是什么? 容器或相关的应用程序在其池中实例化多个边接,当应用程序在使用时,容器 直接将池中的连接取出应用程序直接使用,同时当应用程序使用完后,容器还 可以将连接收回。从而提高系统的效率。 15 同步和异步有和异同,在什么情况下分别使用他们?举例说明。 同步:上一段代码没的完成,下一段必须等到上一段代码完成后才可以执行。如 买标排队 异步:上一段代码没的完成,下一段不必等到上一段代码完成就可以执行。如手 机发送短信。 16 应用服务器有那些? Jboss:支持 ejb 的自由软件. Tomcat:不支持 ejb 的自由软件. Weblogic: :支持 ejb 的商业软件. Websphere: 支持 ejb 的商业软件. 17 你所知道的集合类都有哪些?主要方法? Collection Map Collections(算法) List set HashMap
  • 9. ArrayList linkedList HashSet TreeSet 主要方法: Add remove get(i) contains containsAll iterate addAll deleteAll 18 给你一个 : 驱动程序 A, 数据源名称为 B, 用户名称为 C, 密码为 D, 数据库表为 T,请用 JDBC 检索出表 T 的所有数据。 Class.forName(A); Connection con=DriverManager.openConnection(“jdbc:odbc:B”,C,D) preparedStatment ps=Con.preparedStatment(“select * from T”); ResultSet rs=ps.executeQuery(); While(rs.next) { Rs.getString(1) 或 rs.getString(“字段名”) } 19.说出在 JSP 页面里是怎么分页的? 页面需要保存以下参数: 总行数:根据 sql 语句得到总行数 每页显示行数:设定值 当前页数:请求参数 页面根据当前页数和每页行数计算出当前页第一行行数,定位结果集到此行, 对结果集取出每页显示行数的行即可。 Int allrows//总行 Int eachrow //每页显的行数 Int currentPage //当前页 Resulte rs //结果集 Int currentRow //当前页的第一行 currentRow=(currentPage -1)* eachrow //第一页的下标从 0 开始 for(int i=1;i< currentRow;i++) { Rs.next();
  • 10. } for(int i= currentRow;i<currentRow+ eachrow ;i++) { If(rs.next) { 输出 } Else { Break; } } 在 jsp 页面中通过 session 设置如下信息 总行数:根据 sql 语句得到总行数 每页显示行数:设定值 当前页数:请求参数 ResultSet rs 数据库方面: 1. 存储过程和函数的区别 存储过程是用户定义的一系列 sql 语句的集合,涉及特定表或其它对象 的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法, 它接收参数并返回某种类型的值并且不涉及特定用户表。 在 Oracle 中 存储过程可以通过输出参数返回 n 个结果。通过 select 语句无法直接 调用,可以通过 exec 存储过程名(参数 )执行。 函数只返回一个值,只有输入参数。通过 select 语句可以直接调用 2. 事务是什么? 事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四 个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成 为一个事务: 原子性
  • 11. 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行 回退,只要有了一个错误就报错。 一致性 事务在完成时,必须使所有的数据都保持一致状态。 在相关数据库中,所有规则 都必须应用于事务的修改,以保持所有数据的完整性。 事务结束时,所有的内部 数据结构(如 B 树索引或双向链表)都必须是正确的。 隔离性 由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据 时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务 修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能 够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事 务执行的状态相同。 事务之间相互隔离,不相互影响。如一个事务正在修改的行另一个事务只可 以看已提交的信息,不可以修改相应的行。 持久性 事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一 直保持。 3. 游标的作用?如何知道游标已经到了最后? 游标用于定位结果集的行, 在 sql-server 中通过判断全局变量 @@FETCH_STATUS 可以判断是否到了最 后,通常此变量不等于 0 表示出错或到了最后。 在 Oracle 中通过 c1%found 如果为假,表示到了行的最后。 4. 触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和 行级触发有何区别。 事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发 生之后。通常事前触发器可以获取事件之前和新的字段值。 事前触发器:在修改基表内容之前触发。 事后触发器:在修改基表内容之后触发。
  • 12. 语句级触发器一个 delete 或 insert 或 update 执行一次触发触发器仅一次, 而行级触发, delete 或 insert 或 update 修改的行可能有多个,如果是多 个 sql 的触发的每一行触发一次触发器执行一次。