面试题2016

1:给定1,2,3,4三个数,组成互不相同的数

参考代码如下:

@Test
	public void test(){

//		int count = 0;
//		for(int i=1;i<5;i++)
//			for(int j=1;j<5;j++)
//				for(int k=1;k<5;k++){
//					if(i!=j&&j!=k&&i!=k){
//						count++;
//						System.out.println(""+i+j+k);
//					}
//				}
//		
//		System.out.println("count“:"+count);
		List l = new ArrayList();
		l.add(1);
		l.add(2);
		l.add(3);
		l.add(4);
		getNumCount(l,3,0);
	}
	
	int count=0;
	private void getNumCount(List<Integer> numList, int median, int currNum)
    {
        if (median == 1)
        {
            for (int i = 0; i < numList.size(); i++)
            {
                int result = currNum + numList.get(i);
                count++;
                System.out.println("第" + count + "个数为:" + result);
            }
        }
        else
        {
            for (int i = 0; i < numList.size(); i++)
            {
                int medianNum = numList.get(i);
                int result = (int) (currNum +  medianNum * Math.pow(10, median - 1));
                
                //传入list的一个拷贝(直接传入上级的list,会出现每个层级剩下的数据错误)
                List list = new ArrayList();
                for (Integer num: numList)
                {
                    int copyNum = num;
                    if (copyNum != medianNum)
                    {
                        list.add(copyNum);
                    }
                    
                }
                getNumCount(list, median - 1, result);
            }
        }
    }

  

 

2:有n个数组,每个数组有m个数,从每个数组取一个数,求有多少种组合(组合内顺序不限)

 参考代码如下:

public static void main(String[] args) throws ParseException {
        
        ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> b = new ArrayList<Integer>();
        b.add(1);
        b.add(2);
        b.add(3);
        ArrayList<Integer> c = new ArrayList<Integer>();
        c.add(4);
        c.add(5);
        c.add(6);
        ArrayList<Integer> d = new ArrayList<Integer>();
        d.add(1);
        d.add(2);
        d.add(3);
        ArrayList<Integer> e = new ArrayList<Integer>();
        e.add(1);
        e.add(2);
        e.add(3);
        
        a.add(b);
        a.add(c);
        a.add(d);
        a.add(e);
        
        StringBuffer s = new StringBuffer();
        fun(a,s);
        System.out.println("count:" + count);
    }
    
    static int count = 0;
    public static void fun(ArrayList<ArrayList<Integer>> a , StringBuffer s){
        if(a.size() == 1){
            ArrayList<Integer> list= a.get(0);
            for(Integer l1:list){
                StringBuffer s3 = new StringBuffer();
                s3.append(s);
                s3.append(l1);
                count++;
                System.out.println(s3.toString());
            }
        }else{
            ArrayList<ArrayList<Integer>> bb = new ArrayList<ArrayList<Integer>>();
            bb.addAll(a);
            ArrayList<Integer> b = bb.get(0);
            bb.remove(b);
            for(Integer i :b){
                StringBuffer s2 = new StringBuffer();
                s2.append(s);
                s2.append(i);
                fun(bb,s2);
            }
        }
    }

  

3:有一张用户表,表中有用户信息,所在企业,创建时间,查询出每个月新增人数前三的企业。

参考sql如下:

  

select t2.*
  from (select t1.idCsspOrg,
               t1.cou,
               t1.dateCreated,
               row_number() over(partition by t1.dateCreated order by t1.cou desc) rn
          from (select t.id_cssp_org idCsspOrg,
                       to_char(t.date_created, 'yyyy-MM') dateCreated,
                       count(0) cou
                  from cssp_user_info t
                 group by to_char(t.date_created, 'yyyy-MM'), t.id_cssp_org) t1) t2
 where t2.rn < 4

 4.判断一个字符串是否是数值型字符串

public static int fun(String s){
		int flag =0;
		if(s.matches("^[-]?[1-9][0-9]*[.]?[0-9]+$"))
			flag = 1;
		return flag;
	}

  

原文地址:https://www.cnblogs.com/gexiaoshan/p/5808091.html