首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

阿里地区面试(java)

2012-07-30 
阿里面试(java)面试要点了解一下教育背景,是否有真正做过文本分类的算法,可以了解一下分类算法是否熟悉是

阿里面试(java)
面试要点
了解一下教育背景,是否有真正做过文本分类的算法,可以了解一下分类算法是否熟悉
是否有过B/S的开发经验
传递参数时,什么时候是值传递,什么时候是引用传递
是否使用过JDBC,JDBC的使用方法
try-catch-finally中,如果在try或catch中有return过,是否还执行
简述快速排序
不是用中间变量实现swap(x,y)函数
1、 除了在从前的项目中使用了哪些开源框架开发外,需注重他们是否清楚框架的工作原理;
Jdk1.5新特性,
Spring的原理,事务如何管理,如何防止脏读数据,
你最有成就感的项目,
说说方法sysnchrnized 和方法块sysnchrnized区别,
Hibernate的延迟加载,session何时开启,何时关闭.

2、对java应用的内存处理机制,线程工作原理,并有没有在项目中实际解决该类问题的经验;
3、 有没有在项目中有过系统性能调优,性能跟踪,内存泄漏定位等相关经验,
4、 在解决实际问题时,是否有了解解决问题方法的本质(解决方案的系统原理);
5、 对关系型数据库工作原理,以及关键性能影响点的了解及项目中的实际经验;
6、 是否爱好技术,愿意不断投入时间去跟进,学习(学习的深入度,是否能结合系统原理来看一些新技术);

Java面试题
1.string,stringbuffer 和stringbuilder的区别
2.struts1和2的区别
3.ArrayList,HashMap,HashTable区别
4.谈谈NIO
5.Weblogic怎么发布一个JMS
6.OBJECT有些什么函数,都是做什么用的
7.JSP,SERVLE是线程安全的吗?为什么?
8.了解SOA吗?
9.网页中跨域访问的问题怎么解决
10.ibtas中怎么设置OS CACHE

JAVA面试基础测试题
1.抽象:
 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。

7、String 和StringBuffer的区别
 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据。

9、说出Servlet的生命周期,并说出Servlet和CGI的区别。
 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

10、说出ArrayList,Vector, LinkedList的存储性能和特性
 ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
 
14、HashMap和Hashtable的区别。
    HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

16、sleep() 和 wait() 有什么区别?
    sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
19、同步和异步有何异同,在什么情况下分别使用他们?举例说明。
 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

20、abstract class和interface有什么区别?
 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

22、forward 和redirect的区别
 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
 
27、GC是什么? 为什么要有GC?
  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
 
41、是否可以继承String类?
 String类是final类故不可以继承。

48、编程题: 写一个Singleton出来。
 Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
 第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

public class Singleton {
private Singleton(){}
      //在自己内部定义自己一个实例,是不是很奇怪?
      //注意这是private 只供内部调用
      private static Singleton instance = new Singleton();
      //这里提供了一个供外部访问本class的静态方法,可以直接访问  
      public static Singleton getInstance() {
        return instance;   
      }
    } 


    第二种形式:

public class Singleton {
  private static Singleton instance = null;
  public static synchronized Singleton getInstance() {
  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
  //使用时生成实例,提高了效率!
  if (instance==null)
    instance=new Singleton();
return instance;   }
}


其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些


52、请说出你所知道的线程同步的方法。
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。

 
56、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify


58、线程的基本概念、线程的基本状态以及状态之间的关系
 线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个线程,也就是程序本身。
Java中的线程有四种状态分别是:运行、就绪、挂起、结束。


99、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
有两种实现方法,分别是继承Thread类与实现Runnable接口
用synchronized关键字修饰同步方法
反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用 wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。
 
125、启动一个线程是用run()还是start()?
 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。




Java电话面试题及解答(搜索中心)。

1.HashCode的作用是什么?
答:HashCode就是一个散列码,用来在散列存储结构中确定对象的存储地址。HashMap,HashSet,他们在将对象存储时,需要确定它们的地址,而HashCode就是做这个用的。在默认情况下,由Object类定义的hashCode方法会针对不同的对象返回不同的整数,这一般是通过将该对象的内部地址转换成一个整数来实现的。

2.Hash算法?
答:HashCode是用来查找用的,它可以提高查找效率。举例说:
内存中有0,1,2,3,4,5,6,7…,N一共N+1个位置可以存储对象,然后类中有个字段叫ID,如何确定这个对象在内存中的存储位置呢?用ID%(N+1)得到的余数就是存储的位置,当要查找这个对象的时候,只需要将ID%(N+1)的余数得到,就可以立即找到这个对象,大大提高了查找效率。

3.为什么实现了equals()方法后必须重写hashCode()方法?
答:由于java.lang.Object的规范,如果两个对象根据equals()方法是相等的,那么这两个对象中的每一个对象调用hashCode方法都必须生成相同的整数结果。举例说,在HashSet中,通过被存入对象的hashCode()来确定对象在HashSet中的存储地址,通过equals()来确定存入的对象是否重复,hashCode()和equals()都需要重新定义,因为hashCode()默认是由对象在内存中的存储地址计算返回一个整数得到,而equals()默认是比较对象的引用,如果不同时重写他们的话,那么同一个类产生的两个完全相同的对象就都可以存入Set,因为他们是通过equals()来确定的,这就是HashSet失去了意义。

4.Maven的工作原理?
答:采用远程仓库和本地仓库以及一个类似build.xml的pom.xml,将pom.xml中定义的jar文件从远程仓库下载到本地仓库,哥哥应用使用同一个本地仓库的jar,同一个版本的jar只需要下载一次,而且避免每个应用都去拷贝jar。同时它采用了插件的体系架构,只保留最小号核心,其余功能都通过插件的形式提供。

5.Maven在解决包依赖关系上是怎么做的?
答:在project.xml中配置依赖关系。显式写明依赖的版本号可以解决依赖的问题。

6.iBatis和Hibernate的区别和各自优缺点?
答:IBATIS的最大优点是控制SQL发送的数目,提高数据层的访问效率。IBATIS是半自动化的,通过表和对象的映射以及手写的SQL语句,可以实现比Hibernate更高的查询效率。它的优点具体有易于学习和掌握,容易对SQL进行优化,可以进行细粒度的优化。缺点就是不同的数据库支持不好,缺省的cache支持不好。

Hibernate对JDBC进行了轻量级的封装,使得Java程序员可以使用对象编程的思维来操作数据库。优点是它使用Java反射机制而不是字节码增强程序来实现透明性,它的性能比较好,因为它是个轻量级的框架,映射灵活出色,支持多种关系型数据库,从一对一到多对多的各种复杂关系。缺点是限制你所使用的对象模型,比如一个持久性类不能映射到多个表。

7.HashMap和HashTable的区别?
答:Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2中引进的Map接口的一个实现。Hashtable是线程安全的,HashMap不是线程安全的。HashMap可以将null作为一个条目的key或者value。
8.List,Set和Map的区别?
答:List顺序存储,可以存储相同的对象。Set顺序存储不能存储相同的对象。Map中含有将key,value作为一组值作为一条记录来存储,key和value都可以分别作为一个collection取出来。
9.谈谈Java的反射机制?
答:Java发射机制可以让我们在运行时加载,探知,使用编译期间完全未知的classes。换句话说就是Java程序可以加载一个在运行时才得知名称的class,获悉其完整构造,并生成其对象实体,或对其fields设值,或调用其methods。

10.谈谈JVM工作原理?
答:操作系统装入jvm是通过jdk中的java.exe来完成的,通常有下面四个步骤。1.创建jvm装载环境和配置。2.装载jvm.dll。3.初始化jvm.dll并挂接到JNIENV(JNI调用接口)实例。4.调用JNIENV实例装载并处理class类。

11.谈谈ClassLoader的工作原理?
答:ClassLoader是用来Class文件到JVM的。ClassLoader在JVM运行的时候加载java核心API以满足java程序最基本的需要,其中就包括用户定义的ClassLoader,这里所谓的用户定义是只通过java程序实现的ClassLoader,一个是ExtClassLoader,这个ClassLoader是用来加载java的扩展API的,也就是/lib/ext中的类。一个是AppClassLoader,这个ClassLoader是用来加载用户机器上CLASSPATH设置目录中的Class的,通常在没有指定ClassLoader的情况下,程序员自定义的类就由该ClassLoader来进行加载。
当运行一个程序的时候,JVM启动,运行bootstrap classloader,该ClassLoader加载Java核心API(ExtClassLoader和AppClassLoader也在此时加载),然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class。这就是一个程序最基本的加载流程。

12.什么情况下适合使用分布式系统?

13.Google是怎么做到一提交Query就立马返回结果?
答:因为它使用了倒排索引的技术。

14.说几个J2EE中使用的协议?
答:SOAP, JAXP, JAXM, UDDI

15.JNI和JNDI是干吗用的?区别在哪里?
答:JNI:Java本地接口,允许运行在JVM上的代码调用本地程序和类库,或者被他们调用,这些程序和类库可以是其他语言编写的,比如说C,C++。
JNDI:Java Naming and Directory Interface。Java名称和目录服务接口。提供一个目录系统,让其他各地的应用程序在上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。

16.如何在Oracle中实现分页查询?
答:select * from (select rownum as rowno, T.* from k_task T where … and rownum <= 20) table_alias where table_alias.rowno >= 10; 如果要排序的话把排序子句放到内层查询。
17.final,finally和finalize的区别?

18.UNIX系统下用什么指令查看内存使用情况和CPU型号?
答:AIX下:内存使用情况:lsdev –C | grep mem;CPU型号:lsdev –C | grep –i processor | wc -l

19.大文件的拷贝用什么办法实现?
答:管道,FileChannel

20.Web Application是通过什么来启动Servlet的?
答:Servlet由Web服务器加载启动。

21.EJB在JBoss或Weblogic中的部署描述符是怎样的?
答:JBoss,通过ejb-jar.xml写部署描述符
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd">
<ejb-jar>
    <enterprise-beans>
       <session>
        <description>Deployment descriptor for Rubis SB_BrowseRegions Bean</description>
            <display-name>RUBiS SB_BrowseRegions Bean</display-name>
            <ejb-name>SB_BrowseRegions</ejb-name>
            <home>edu.rice.rubis.beans.SB_BrowseRegionsHome</home>
            <remote>edu.rice.rubis.beans.SB_BrowseRegions</remote>
            <ejb-class>edu.rice.rubis.beans.SB_BrowseRegionsBean</ejb-class>
            <session-type>Stateless</session-type>
            <transaction-type>Bean</transaction-type>
            <ejb-ref>
                <description>This is the reference to the region bean</description>
                <ejb-ref-name>ejb/Region</ejb-ref-name>
                <ejb-ref-type>Entity</ejb-ref-type>
                <ejb-link>Region</ejb-link>
                <home>edu.rice.rubis.beans.RegionHome</home>
                <remote>edu.rice.rubis.beans.Region</remote>
            </ejb-ref>
            <resource-ref>
                <res-ref-name>jdbc/rubis</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
                <res-auth>Container</res-auth>
            </resource-ref>
         </session>

        <entity>
            <description>Region Bean deployment descriptor</description>
            <display-name>Region</display-name>
            <ejb-name>Region</ejb-name>
            <home>edu.rice.rubis.beans.RegionHome</home>
            <remote>edu.rice.rubis.beans.Region</remote>
            <ejb-class>edu.rice.rubis.beans.RegionBean</ejb-class>
            <persistence-type>Container</persistence-type>
            <prim-key-class>edu.rice.rubis.beans.RegionPK</prim-key-class>
            <reentrant>False</reentrant>
            <cmp-field>
                <description>Region name</description>
                <field-name>name</field-name>
            </cmp-field>
            <cmp-field>
                <description>Region id</description>
                <field-name>id</field-name>
            </cmp-field>
            <resource-ref>
                <res-ref-name>jdbc/rubis</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
                <res-auth>Container</res-auth>
            </resource-ref>
        </entity>
    </enterprise-beans>

    <assembly-descriptor>
        <container-transaction>
            <method>
                <ejb-name>Region</ejb-name>
                <method-name>*</method-name>
            </method>
            <trans-attribute>Required</trans-attribute>
        </container-transaction>
    </assembly-descriptor>
</ejb-jar>

22.举例几个Apache上的开源项目?
答:iBatis,Maven,Velocity,POI,Ant, Apache HTTP Server.

23.Perl有面向对象的概念吗?它如何实现代码重用?
答:有,通过包或Module来实现代码重用。

24.JDK1.5和JDK1.4多了哪些东西?
泛型,枚举类型,Autoboxing和Unboxing,可变长度的参数列表,Annotation,for/in语句,静态的Import,格式化输出,java.concurrent包支持多线程。

25.WAR包和EAR包的内部目录结构?
答:WAR:WEB-INF/web.xml
EAR: META-INF

26.Object类有哪些方法?
答:equals(), hashCode(), getClass(), toString(), notify(), notifyAll(), wait(), clone()

27.equals()和==的区别?

28.CVS版本控制原理?
答:CVS服务器用于保存项目源(包括源代码,项目文件,文档等任何需要进行版本控制的对象)。但是CVS服务器中的项目源不能被直接使用。要将其导出到客户端,在客户端建立副本才可以对其进行修改编辑。在进行团队开发时,需要对代码进行共享。通常开发人员首先将自己的代码保存(也叫导入或者签入,英文为Check in)到CVS服务器,这样团队中的其他成员可以把这些代码导出(也叫签出,英文为Check out)到本地计算机上。这样就可以在多个客户端上保存同一项目的副本,实现了代码的共享。

29.Rational Clear Case的Branch合并原理?

热点排行