`
wjheye
  • 浏览: 83958 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

面试题收集

阅读更多
0 、javaBean的设计规范
      ①、一个javaBean类必须是一个公共类
      ②一个javaBean类必须有一个空的构造函数
      ③一个javaBean类不应有公共实例变量
      ④持有值应该通过一组存取方法(getXxx和setXxx)来访问
1、编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,如果存在,则返回这个字符在字符数组中第一次出现的位置(序号从0开始计算),否则,返回-1。要搜索的字符数组和字符都以参数形式传递传递给该方法,如果传入的数组为null,应抛出IllegalArgumentException异常。在类的main方法中以种可能出现的情况测试验证该方法编写得是否正确,例如,字符不存在,字符存在,传入的数组为null等。
publicclass Check {
    /**
     *@paramargs
     */
    publicint check(String[] src,String str) throws IllegalArgumentException
    {
       int location=-1;
       if(src==null)
       {
           thrownew IllegalArgumentException(); 
       }
       for(int i=0;i<src.length;i++)
       {
           if(src[i].equals(str))
           {
              location=i;
              break;
           }
       }
       return location;
    }
    publicstaticvoid main(String[] args) {
       // TODO Auto-generated method stub
       Check c=new Check();
       String[] a={"a","b","c"};
       int location;
       String str="a";
       try {
           location=c.check(a, str);
           if(location==-1)
              System.out.println("查找的字母"+str+"没有在数组中");
           else
              System.out.println("Location is :"+location);
       } catch (IllegalArgumentException e) {
           // TODO Auto-generated catch block
           System.out.println("请不要输入null数组");
       }
    }
}

2、编写一个程序,这个程序把一个整数数组中的每个元素用逗号连接成一个字符串,例如,根据内容为[1][2][3]的数组形成内容为"1,2,3"的字符串。
publicclass ConnectArrayWithComma {
    void test(String[] src)
    {             
       String str="";
       for(int i=0;i<src.length;i++)
       {
           str+=src[i];
           if(i<src.length-1)
              str+=",";
       }
       System.out.println(str);
    }
    /**
     *@paramargs
     */
    publicstaticvoid main(String[] args) {
       // TODO Auto-generated method stub
       ConnectArrayWithComma c=new ConnectArrayWithComma();
       String[] a={"a","b","c"};
       c.test(a);
    }
}

3、请编写一个字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。
import java.io.*;
publicclass PackTextFileWithLineNumber {
    void doPack(String fileNameAndPath)
    {   
       FileReader fr;
       try {
           fr=new FileReader(fileNameAndPath);
           BufferedReader br=new BufferedReader(fr);
           String readLine=null;
           int lineNumber=1;
           while((readLine=br.readLine())!=null)
           {
              readLine=lineNumber+":"+readLine;
              System.out.println(readLine);
              lineNumber++;
           }
       } catch (Exception e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }      
    }
    /**
     *@paramargs
     */
    publicstaticvoid main(String[] args) {
       // TODO Auto-generated method stub
       PackTextFileWithLineNumber test=new PackTextFileWithLineNumber();
       String fileNameAndPath="c:\\change.txt";
       test.doPack(fileNameAndPath);
 
    }
}

4、Servlet的生命周期
一个servlet的生命周期由部署servlet的容器来控制。当一个请求映射到一个servlet时,该容器执行下列步骤。
1).如果一个servlet的实例并不存在,Web容器
    a.   加载servlet类。
    b.   创建一个servlet类的实例。
    c.   调用init初始化servlet实例。该初始化过程将在初始化servlet中讲述。
2).调用service方法,传递一个请求和响应对象。
3).如果该容器要移除这个servlet,可调用servlet的destroy方法来结束该servlet。
5、页面之间传递数据的方法
       通过request, session, application, javaBean, sessionBean, 当然还有数据库了
6、JSP和Servlet有哪些相同点和不同点,它们之间的联系是什么?
       JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。
7、四种会话跟踪技术
答:会话作用域ServletsJSP 页面描述
page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面
request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
session是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域
9、J2EE是技术还是平台还是框架
       J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。
10、B/S和C/S的区别
Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的.
1).硬件环境不同:
C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务.
B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行
2).对安全要求不同
C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.
B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群.
3).对程序架构不同
C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑.
B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟.
4).软件的可重用性
C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.
B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子
5).系统维护不同
系统维护是软件生存周期中,开销大, -------重要
C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统
B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级.
6).处理问题不同
C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统
B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小.
7).用户接口不同
C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高
B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.
8).信息流不同
C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低
B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更象交易中心
11、面向对象的特征有哪些方面,分别是什么?
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
12、栈和队列的区别
栈和队列都是在一个特定范围的存储单元中存储的数据,这些数据都可以重新被取出使用。不同的是,栈就象一个很窄的桶先存进去的数据最后才能取出来,即“先进后出”。而队列则不一样,队列有点象日常排队买东西的人的“队列”先排队的人先买,后排队的人后买,即“先进先出”。有时在数据结构中还有可能出现按照大小排队或按照一定条件排队的数据队列,这时的队列属于特殊队列,就不一定按照“先进先出”的原则读取数据了。
13、范式
请参见文章(数据库设计三大范式应用实例剖析(讲得比较清楚)
14、数据库的事务处理
事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚(回到最初的系统状态)。事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。
15、EJB
EJB技术定义了一组可重用的组件:Enterprise JavaBeans。你可以利用这些组件,像搭积木一样的建立你的分布式应用程序。当你把代码写好之后,这些组件就被组合到特定的文件中去。每个文件有一个或多个Enterprise Beans,在加上一些配置参数。最后,这些Enterprise Beans被配置到一个装了EJB容器的平台上。客户能够通过这些Beans的home接口,定位到某个beans,并产生这个beans的一个实例。这样,客户就能够调用Beans的应用方法和远程接口。EJB技术简化了用JAVA语言编写的企业应用系统的开发、配置和执行。有三种类型的Enterprise beans: Session beans、 entity beans和Message-driven Beans。
16、JavaBean
JavaBean是用Java语言编写的与平台无关的组件。它是描述Java的软件组件模型,有点类似于Microsoft的COM组件的概念。在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。JavaBean可以实现代码的重复利用,对于程序的易维护性也有重大的意义。非可视化的JavaBean,在JSP程序中常用来封装事务逻辑、数据库操作等,可以很好的实现业务逻辑和前台程序的分离。JavaBean在服务器端的应用方面表现出了越来越强的生命力。
17 、下题的输出是什么:

/**

* 问下题的输出结果是什么?

* @author Administrator

*

*/

class A1

{

    public A1()

    {

       System.out.print("A");

    }

}

class B1

{

    //如下写会出错

    //new A1();放于方法内部不会出错

    public B1()

    {

       new A1();

       System.out.print("B");

    }

}

public class TestPrint {

    public TestPrint()

    {

       System.out.print("Test");

    }

    public static void main(String[] arg)

    {

       new B1();

    }

}

/**

* 结果是"AB",我想有些人可能和我一样,认为结果是"ABTest",我也做错了,

* 我的思想也是一直被"如果没有其它的构造函数,默认的构造函数要被运行"

* 所占据。

*/

编程题(下面二题二选一):

18 、怎么样实现自己的LinkedList

答案:继承LinkedList就可以实现了,我下面写了一个简单的:

/**

* 继承链表,用以实现自己的链表

* @author Administrator

*

*/

import java.util.Collection;

import java.util.LinkedList;

public class DoMyLinkedList extends LinkedList {

    public DoMyLinkedList()

    {

       super();

    }

    public void addFirst1(Object o)

    {

       addFirst(o);

    }

    public void removeFirst1()

    {

       removeFirst();

    }

    public void add1(Object o)

    {      

       add(o);

    }

    public boolean addAll1(Collection c)

    {

       return addAll(c);

    }

    public boolean remove1(Object o)

    {

       return remove(o);

    }

    

    void print(LinkedList ll)

    {

       for(int i=0;i<ll.size();i++)

       {

           System.out.println(ll.get(i));         

       }

    }

    public static void main(String[] arg)

    {

       DoMyLinkedList ll=new DoMyLinkedList();

       ll.add1("a");

       ll.addFirst1("b");

       ll.print(ll);

       ll.remove1("a");

       ll.print(ll);

       ll.addFirst1("c");

       ll.print(ll);

    }

}

19 、用任意一种算法实现整型数组的排序

请参看经典排序算法(Java版)

20 、List和Hashtable都是可以存储数据的,可为什么有时选择List,有时需要Hashtable,这两个有什么区别?
List是按位置取值,Hashtable是按键取值,更详细的示例说明,请参看:
List和Hashtable都是可以存储数据的,可为什么有时选择List,有时需要Hashtable,这两个有什么区别?


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fenglibing/archive/2007/08/22/1754451.aspx
分享到:
评论

相关推荐

    面试试题收集1.1 面试试题收集1.1

    面试试题收集1.1 面试试题收集1.1 面试试题收集1.1

    java面试题收集集锦

    Java面试题集锦涵盖了广泛的Java基础知识,JSP与Servlet技术,J2EE相关知识以及其他一些IT领域的要点。以下是对这些知识点的详细说明: 1. **Java基础** - Java有八种基本数据类型:byte, short, int, long, float...

    sql面试题收集.pdf

    SQL面试题收集 SQL面试题收集是指通过收集和整理SQL相关问题,帮助开发人员和数据库管理员备战面试和工作中遇到的挑战。本文档汇总了多种表连接方式,包括等连接、非等连接、自连接、外连接(左、右、全)等,并对...

    IT公司笔试\linux c网络网络编程面试题收集

    Linux C 网络编程面试题收集 本文总结了 Linux C 网络编程面试题,涵盖了基础知识、网络编程、路由等方面的知识点,旨在帮助读者更好地理解和掌握相关知识。 一、基础知识 1. 对于程序 `func(char *str){printf(...

    linux c/网络/网络编程面试题收集| 经典实例

    Linux C 网络面试题收集经典实例 本文收集了一些常见的 Linux C 网络面试题,涵盖了网络编程、 socket 编程、网络协议等方面的知识点。本文将从标题、描述、标签和部分内容中提取知识点,详细解释每个问题的答案。 ...

    Android面试题收集(Word)

    以下是一些基于"Android面试题收集"主题的重要知识领域: 1. **Android基础知识**: - 应用程序架构:理解Activity、Service、BroadcastReceiver和ContentProvider四大组件及其生命周期。 - UI组件:包括...

    运维工程师面试题收集.pdf

    运维工程师面试题收集.pdf

    J2EE面试题收集(三大框架)

    **J2EE面试题收集(三大框架)** 在Java企业级开发中,三大框架——Struts、Hibernate和Spring——占据着核心地位。这些框架分别解决了Web应用中的展示层、持久层和业务逻辑层的问题,形成了高效且易于维护的开发模式...

    JAVA企业面试真题收集

    JAVA企业面试真题收集

    金蝶公司面试题收集,供大家参考

    金蝶公司面试题收集,供大家参考 金蝶公司面试题收集,供大家参考

    经典Sql面试题收集.doc

    经典Sql面试题收集.doc

    iOS面试题收集,用于准备面试,复习面试题~_面试题都是套路_iOSFace2Face.zip

    iOS面试题收集,用于准备面试,复习面试题~_面试题都是套路_iOSFace2Face

    c算法和面试题收集

    标题“c算法和面试题收集”表明这是一份与计算机科学和编程相关的资源集合,主要集中在C语言的算法和面试准备上。这份资料可能包含了不同公司的面试题目,以及C++的学习材料和数据结构算法的讲解。 描述中的“NULL...

    2013java面试题收集

    这份"2013java面试题收集"是作者基于2013年时的行业趋势和面试经验精心编纂的,旨在帮助求职者更好地准备Java相关的面试。 一、基础知识 1. Java语言特性:理解面向对象编程的基本概念,如封装、继承、多态,以及...

    JAVA程序员面试题收集

    JAVA程序员面试题收集

    最新.net面试题收集了各公司的面试题型

    最新.net面试题收集了各公司的面试题型

    JAVA程序员面试题收集.doc

    【Java程序员面试题收集】 Java面试题主要涵盖了基础类、应用类和其他类的知识点,旨在测试面试者的Java语言掌握程度和实际应用能力。以下是一些关键知识点的详细说明: 1. **Java基础知识** - Java的基本数据...

    c语言常见面试题收集

    以下是一些基于“C语言常见面试题收集”主题的详细知识点: 1. **基本语法**: - 数据类型:了解整型(int)、字符型(char)、浮点型(float、double)等基本数据类型的定义、范围和用途。 - 变量声明:理解变量...

    .net C#面试题收集

    .NET C#面试题收集是为初级求职者准备的一份宝贵资料,涵盖了ASP.NET和C#的基础及进阶知识点。这份资料旨在帮助应聘者在面试前系统地复习和了解相关技术,提升自己的竞争力。 1. **C#基础** - 类与对象:C#是一种...

Global site tag (gtag.js) - Google Analytics