阿里巴巴java研发工程师面试题-2016年

问答题

一、HTTP 报文包含内容;

二、线程同步,并发操作怎么控制; 

三、谈谈HibernateIbatis的区别,哪个性能会更高一些。

四、实现冒泡排序

五、虚类和接口的区别

参考答案

一、答:主要包含四部分:

1、request line

2、header line

3、blank line

4、request body

二、答:Java中可在方法名前加关键字syschronized来处理当有多个线程同时访问共享资源时候的问题。syschronized相当于一把锁,当有申请者申请该资源时,如果该资源没有被占用,那么将资源交付给这个申请者使用,在此期间,其他申请者只能申请而不能使用该资源,当该资源被使用完成后将释放该资源上的锁,其他申请者可申请使用。并发控制主要是为了多线程操作时带来的资源读写问题。如果不加以空间可能会出现死锁,读脏数据、不可重复读、丢失更新等异常。并发操作可以通过加锁的方式进行控制.

三、答:1Hibernate偏向于对象的操作达到数据库相关操作的目的;而ibatis更偏向于sql语句的优化。

2、Hibernate的使用的查询语句是自己的hql,而ibatis则是标准的sql语句。

3、Hibernate相对复杂,不易学习;ibatis类似sql语句,简单易学。

性能方面:

1、如果系统数据处理量巨大,性能要求极为苛刻时,往往需要人工编写高性能的sql语句或存错过程,此时ibatis具有更好的可控性,因此性能优于Hibernate

2、同样的需求下,由于hibernate可以自动生成hql语句,而ibatis需要手动写sql语句,此时采用Hibernate的效率高于ibatis

四、答:

/*
 * 冒泡排序
 */
public class BubbleSort {
  public static void main(String[] args) {
    int[] arr={6,3,8,2,9,1};
    System.out.println("排序前数组为:");
    for(int num:arr){
      System.out.print(num+" ");
    }
    for(int i=0;i<arr.length-1;i++){//外层循环控制排序趟数
      for(int j=0;j<arr.length-1-i;j++){//内层循环控制每一趟排序多少次
        if(arr[j]>arr[j+1]){
          int temp=arr[j];
          arr[j]=arr[j+1];
          arr[j+1]=temp;
        }
      }
    } 
    System.out.println();
    System.out.println("排序后的数组为:");
     for(int num:arr){
       System.out.print(num+" ");
     } 
  }
 }

五、答:抽象类可以有构造方法,接口中不能有构造方法

抽象类中可以有普通成员变量,接口中没有普通成员变量

抽象类中可以包含静态方法,接口中不能包含静态方法

一个类可以实现多个接口,但只能继承一个抽象类。

个人资料
游弋的蔷薇
等级:7
文章:27篇
访问:3.8w
排名: 10
上一篇: 阿里巴巴java工程师面试题-2016年
下一篇:聚美优品IOS开发工程师面试(第一面)-2015年
猜你感兴趣的圈子:
阿里巴巴笔试面试圈
标签: arr、ibatis、hibernate、申请者、抽象类、面试题
隐藏