`
dasheng
  • 浏览: 147996 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

最近去某公司面试,做了一些题目,很多不会,写下来供参考一下:

 

1,overload和overided的区别?

override(重写)
1、方法名、参数、返回值相同。
2、子类方法不能缩小父类方法的访问权限。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、存在于父类和子类之间。
5、方法被定义为final不能被重写。
overload(重载)
1、参数类型、个数、顺序至少有一个不相同。  
2、不能重载只有返回值不同的方法名。
3、存在于同类中。

 

2,一些代码的输出结果:

 

public static void print(int[] array,int i)

{

            try{

                

                       System.out.println("arry["+i+"]="+array[i]);

                      } 

                finally{

 

                      System.out.println("---");

                    }

}

 

 

public static void main(String[] arrg)

{

 

                  int[]  arry = new  int[3] ;

 

             try{

 

                for( int i=0;;i++)

                  {

                        print(arry,i);

                          }

                 }

                catch(Exception e)

              {

                e.printStackTrace();

               }

              finally{

                     System.out.println("what is up?");

                 }

}  

 

output:

 

arry[0]=0
---
arry[1]=0
---
arry[2]=0
---
---
java.lang.ArrayIndexOutOfBoundsException: 3
 at testOracle.print(testOracle.java:9)
 at testOracle.main(testOracle.java:33)
what is up?

 

3,Arraylist,Vector,ArrayLinked的区别

 

.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程不安全的,不是同步的
.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半

 ArrayLinked是用链表实现的数组,顺序访问速度比较快。

Arraylist适合于随机访问。

 

4,jms支持那两种消息模型?

1、P2P模型
在P2P模型中,有下列概念:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。队列保留着消息,直到它们被消费或超时。
 每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)
 发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列。
 接收者在成功接收消息之后需向队列应答成功 
 2、Pub/Sub模式
在Pub/Sub模型中,有下列概念: 主题(Topic)、发布者(Publisher)、订阅者(Subscriber)。客户端将消息发送到主题。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
 每个消息可以有多个消费者
 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅之后,才能消费发布者的消息,而且,为了消费消息,订阅者必须保持运行的状态。
当然,为了缓和这种严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
如果你希望发送的消息可以不被做任何处理、或者被一个消费者处理、或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型。

 

5,ejb 的home interface和 remote interface作用是什么?

remote接口定义了业务方法,用于EJB客户端调用业务方法。
home接口是EJB工厂用于创建和移除查找EJB实例

 

6,ebj findejb list ejb?

 

7,RMI远程调用的过程?

1. 创建远程接口及声明远程方法(HelloInterface.java)
2. 实现远程接口及远程方法(继承UnicastRemoteObject)(Hello.java)
3. 启动RMI注册服务,并注册远程对象(HelloServer.java)
4. 客户端查找远程对象,并调用远程方法(HelloClient)
5. 执行程序:启动服务HelloServer;运行客户端HelloClient进行调用

 

8,什么是事务?acid分别是什么? 

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

原子性

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

一致性

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

隔离性

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

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

9,jdbc数据库驱动有几种方式?

(1)JDBC-ODBC桥加ODBC驱动程序

  JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。注意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。因此,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。

  (2)本地API

  这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。

  (3)JDBC网络纯Java驱动程序

  这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。

  (4)本地协议纯Java驱动程序

  这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源,有几家提供者已在着手做这件事了。

 

10,jta和jts分别是什么?

Java TM2 Platform, Enterprise Edition(J2EE)简化了分布式事务管理应用程序的编写。J2EE包括了两套规范,用来支持分布式的事务,一种是Java Transaction API(JTA),另一种是Java Transaction Service(JTS)。JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务。JTS则规定了支持JTA的事务管理器的实现规范,在高层API之下实现了OMG Object Transaction Service(OTS) 1.1规范的Java映射。JTS使用Internet Inter-ORB Protocol(IIOP)来传播事务。作为J2EE平台实现的一部分,SUN实现了一个支持JTS的事务管理器,同时还实现了JTA。

 

11,unit test .system test ,check-in test ,depress test分别是什么?

 

12,用你熟悉的linu写一个脚本,查找包含tranction或Tranction的他txt文件 。

 

find -name '*tranction*.txt' or '*Tranction*.txt'

 

13,用junit写单元测试代码。

/**
*
* 测试对象
* User: leizhimin
* Date: 2008-3-13 14:58:58
*/

public class Calcuator {
    public double add(double n1, double n2) {
        return n1 + n1;
    }
}     

 

/**
* 测试用例
* File: TestCalcuator.java
* User: leizhimin
* Date: 2008-3-13 15:00:17
*/

public class TestCalcuator extends TestCase {
    public void testAdd(){
        Calcuator calcuator=new Calcuator();
        double result=calcuator.add(1,2);
        assertEquals(3,result,0);
    }

}

 

/**
* 测试用例
* File: TestCalcuator2.java
* User: leizhimin
* Date: 2008-3-13 16:13:29
*/

public class TestCalcuator2 extends TestCase  {
    public void testAdd(){
        Calcuator calcuator=new Calcuator();
        double result=calcuator.add(1,2);
        assertEquals(3,result,0);
    }
}

 

/**
* 测试单元
* File: TestAll.java
* User: leizhimin
* Date: 2008-3-13 16:17:10
*/

public class TestAll extends TestSuite {
    public static Test suite() {
        TestSuite suite = new TestSuite("TestSuite Test");
        suite.addTestSuite(TestCalcuator.class);
        suite.addTestSuite(TestCalcuator2.class);
        return suite;
    }
    public static void main(String args[]){
        TestRunner.run(suite());
    }
}

 

 

当面提问的问题有:

 

1,写一个银行账户的类,需要有存取钱的功能?

 

public Class User

{

 

          private String name=null;

 

          private int cardNum =0;

 

 

          private  int posiNum =0;

 

 

            public  int QueryCount()

          {

 

                   return posiNum ;

           }

 

          public boolean withDrawl(int out)

         {

 

                 if(out>posiNum )

                   return false;

                  posiNum = posiNum  - out;

 

                    return true;

         }

 

         public int save(int saveNum)

      {

            posiNum = posiNum  + saveNum;

           

          return posiNum

      }

 

 

}

 

   写出来后,又提了一个需求,如何保证可以同步操作。于是又作了一下修改。

 

public Class User

{

 

          private String name=null;

 

          private int cardNum =0;

 

 

          private  int posiNum =0;

 

 

            public  int QueryCount()

          {

 

                   return posiNum ;

           }

 

          public synchronized  boolean withDrawl(int out)

         {

 

                 if(out>posiNum )

                   return false;

                  posiNum = posiNum  - out;

 

                    return true;

         }

 

         public synchronized  int save(int saveNum)

      {

            posiNum = posiNum  + saveNum;

           

          return posiNum

      }

 

 

}

 

之后又提了一个问题,增加一个转帐的方法,需要保证线程安全

 

public void transfer(User a,User b,int num)

{

           //加锁

             a.withDrawl(num);

              b.save(num); 

         //解锁   

}

 

2,有两个类

 

   第一个:class1  ;第二类是:class2.

 

   class1的代码中有 class2 intance= new class2 ();

  class2的包路径已经放到classpath上,执行 java class1是否能正常执行。为什么?

 

答:可以 ,因为是同一个类加载器加载的

 

3,两个已经排好序的数组,其中一个数组有足以容纳另一个数组的位置,要求用最少的移动和空间来实现把短的数组

 

合并到长的数组中,结果必须是排好序的。时间复杂度是多少?


public class mixcture {
 
 
 public static void main(String[] args){
  
  
  int[] array1 ={2,3,5};
  int[] array2 = new int[20];
  array2[0]=4;
  array2[1]=5;
  array2[2]=8;
  array2[3]=10;
  
  int size1= array1.length;
  int size2 = array2.length;
  int real = 0;
  
 
  
  for(int i=0;i<size2;i++)
  {
   if(array2[i]==0)
   {
    real = i;
    break;
   }
  }
  
  int all = size1 + real;
  
  int stop = 0;
  
  int j = real-1;
  
  int cursor = j;
  
  for(int i = size1-1;i>=0;i--)   
  {
   cursor = j;
   for(j = cursor;j>=0;j--)
   {
    if(array1[i]>array2[j])
    {
     array2[all-1] = array1[i];
     all--;
     break;
    }else if(array1[i]==array2[j])
    {
     array2[all-1] = array1[i];
     array2[j]=0;
     all--;
     j--;
     break;
    }
    else
    {
     array2[all-1] = array2[j];
     array2[j]=0;
    }
    System.out.println("array2["+(all-1)+"]="+array2[all-1]);
    //System.out.println("array2["+(all-2)+"]="+array2[all-2]);
    System.out.println("stop="+stop);
    System.out.println("all="+all);
    System.out.println("i="+i);
    System.out.println("j="+j);
    all--;
    stop = i;
   }
  }
  
  if(stop>0)
  {
   for(int i=0;i<=stop;i++)
    array2[i] = array1[i];
  }
  
  for(int i=0;i<size2;i++)
  System.out.println(array2[i]);
  //System.out.println(array2.toString());
 }

}

 

时间复杂度是O(n^2)

  

分享到:
评论

相关推荐

    某著名公司的计算机面试题目

    在计算机编程领域,尤其是C++语言中,面试题目经常涉及基础概念、语法细节以及最佳实践。以下是基于给定文件内容的详细知识点解析: 1. 字符串比较:在C++中,字符串可以用字符数组或字符指针表示。当比较两个字符...

    毕业生经典面试题目,各大公司顶级面试考官分析面试

    #### 面试题目二:为何选择我们公司? - **问题概述**:为什么想加入我们公司?你对我们公司有什么了解? - **解析**: - **公司文化**:了解公司的企业文化和发展愿景,说明这些因素如何吸引你。 - **产品和服务*...

    sqlserver面试他常见问题,一些大型公司的面试题目

    根据给定文件的信息,我们可以总结出以下几个重要的SQL Server 2005相关的知识点: ### 1. NULL 值的理解与处理 ...这些知识点不仅对于面试准备非常重要,也是日常数据库管理和开发工作中必不可少的基础技能。

    某著名公司面试题目,很好的

    根据给定文件中的标题、描述、标签以及部分内容,我们可以从中提炼出多个与C/C++相关的知识点,具体包括但不限于以下几个方面: ### 1. 字符串常量与变量比较 ```cpp char str1[] = "abc"; char str2[] = "abc";...

    java面试宝典(内附真实软件公司面试题目)

    这份资源内附的真实软件公司面试题目,使得学习更加贴近实际工作场景,有助于提升应聘者的实战能力。 首先,Java面试题.doc可能涵盖了以下几个方面: 1. **Java基础知识**:包括数据类型、运算符、流程控制语句、...

    某家大公司的J2EE面试题目

    以下是根据提供的面试题目分析的一些关键知识点: 1. **对象创建与回收**: - 在Java中,创建对象确实使用`new`关键字,但回收无用对象不是通过`free`,而是由垃圾收集器(Garbage Collector)自动完成。 - 一旦...

    c语言课件 及公司面试题目

    "C语言课件及公司面试题目"这个主题,主要涵盖了C语言的基本概念、语法、数据类型、控制结构、函数、数组、指针、结构体等核心知识点,同时也包含了针对C语言的公司面试常见问题。 1. **基本概念**:C语言是一种...

    某家大公司的J2EE面试题目.doc

    从给定的文件信息来看,这是一份关于Java平台企业版(J2EE)的面试题目文档,由liliugen于2007年整理。文档包含了一系列的判断题和选择题,旨在测试应试者对Java语言核心概念的理解程度。下面,我们将详细解析文档中...

    毕业生经典面试题目,各大公司顶级面试考官分析面试2

    ### 一、面试题目及准备 #### 面试题目概述 面试题目在IT行业的招聘过程中扮演着极其重要的角色,它不仅能够帮助面试官了解求职者的技能水平和技术背景,还能够评估求职者的逻辑思维能力、沟通技巧以及解决问题的...

    腾讯面试题目

    腾讯面试题目解读 腾讯公司作为中国最大的互联网公司,每年吸引了众多的计算机软件专业人才。面试题目涵盖了计算机软件专业的基础知识,包括数据库、数据结构、组成原理、操作系统、计算机网络、java/C++等编程语言...

    某一家公司的面试题目,只能说这么多了

    在IT行业中,求职面试是每个开发者都需要面对的重要环节。尤其对于前端开发人员,掌握Vue.js这一流行的JavaScript框架显得尤为重要。本篇文章将详细解析Vue.js面试中可能会遇到的关键知识点,帮助你为Vue.js相关的...

    公司Java职位面试题目及解析

    内容概要:这份Java职位的面试题由某信息科技有限公司设计。题目包含了对基础概念的理解(如Java核心),数据结构与算法(如线程的实现方式、线程同步)、集合操作、单例模式实现,以及对Redis数据库的操作理解和...

    微软最新面试题目

    本文档提供了微软等公司的数据结构和算法面试题目的概述,其中包括100个典型的问题及其解答。这些题目覆盖了多种编程语言如C++、Java、PHP等,并且涉及到了数据结构的基础知识以及算法的设计与分析。 #### 题目详解...

    java面试题目与技巧1

    │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ ...

    微软公司的三道面试题目

    根据提供的信息,我们可以总结出微软面试中的三个案例问题及其解决方案,这些案例主要涉及逻辑思维、团队协作以及商业决策等方面。 ### 第一题:解决突然出现的资金短缺问题 **背景描述**: 一位员工在工作中突然...

    京东方应聘笔试面试题目及答案

    例如,针对公司的发展历程,面试官可能会询问应聘者对京东方某些重要发展节点的看法,或者让应聘者就公司的某一业务战略进行分析和讨论。此外,应聘者可能还需展示自己的专业知识,如在技术面试环节中对某一特定显示...

    java和android2012面试题目

    这是一份从某公司带出来的面试题,大概情况就这样 需要的可以下载看看,反正我当时做的还满高分的

    android面试题目+2份+对大家有个测试

    以下是一些基于“android面试题目+2份+对大家有个测试”主题的关键知识点,这些内容可能会出现在某公司的Android面试题或者练习题中: 1. **Android基础知识** - **Android系统架构**:包括Linux内核层、硬件抽象...

    经典面试题目百问百答.docx

    经典面试题目百问百答 面试中一些常见的问题和回答技巧: 问题1:请给我们谈谈你自己的一些情况 回答:简要的描述自己的相关工作经历以及自己的特征,包括与人相处的能力和个人的性格特征。 点评:企业以此来...

Global site tag (gtag.js) - Google Analytics