PPmoney面试

今日参加万惠集团(PPmoney)的面试,首先要进行一个小时的机试;机试题目难度适中,抽空分享一下:

1.经度纬度重构代码题

原来的代码逻辑大概是这样的: 

public static Boolean judgeLngLaxfilter(int lng,int lax,int lngMax,int lngMin, int laxMax,int laxMin){
boolean flag =true;
boolean lngFlag1 = false;
boolean lngFlag2 = false;
boolean laxFlag1 = false;
boolean laxFlag2= false;    
if(lngMax==0){
   lngFlag1 = true;
}else if(lng <=lngMax){
   lngFlag1 = true;
}
if(laxMax==0){
   laxFlag1 = true;
}else if(lax<=laxMax){
   laxFlag1 = true;
}
if(lngMin==0){
  lngFlag2 = true;
}else if(lngMin>=lngMin){
  lngFlag2 = true;
}
if(laxMin==0){
  laxFlag2= false;
}else if(laxFlag2>=laxMin){
  laxFlag2= false;
}
if(lngFlag1==true&&lngFlag2==true&&
laxFlag1==true&&laxFlag2==true){
  flag = flase;
}
}

重构后的代码,答案:

public class LngLaxJudge {

    public static Boolean judgeLngLaxfilter(int lng,int lax,int lngMax,int lngMin, int laxMax,int laxMin){
        boolean flag =true;
        
        boolean lngFlag1 = false;
        if(lngMax==0){
            lngFlag1 = true;
        }else if(lng <=lngMax){
            lngFlag1 = true;
        }
        
        boolean laxFlag1 = false;
        if(laxMax==0){
            laxFlag1 = true;
        }else if(lax<=laxMax){
            laxFlag1 = true;
        }
        
        boolean lngFlag2 = false;
        if(lngMin==0){
            lngFlag2 = true;
        }else if(lngMin>=lngMin){
            lngFlag2 = true;
        }
        
        boolean laxFlag2= true;
        if(laxMin==0){
            laxFlag2= true;
        }else if(lax >= laxMin){
            laxFlag2= true;
        }
        
        if(lngFlag1==true
            &&lngFlag2==true
            &&laxFlag1==true
            &&laxFlag2==true){
            flag = false;
        }
        return flag;
    }
}

2.sql找出人数大于2de部门中员工的平均工资数


  工资表如下
员工编号    员工姓名    部门    实发工资    实扣工资    应发工资    日期
1                   张三           A           100           0                   100          2018-07-18
2                   李四           B           100           0                   100          2018-07-18
3                   王武           B           100           0                   100          2018-07-18
4                   王码           B           100           0                   100          2018-07-18
5                   黎黎          C            100           0                   100          2018-07-18   
6                   kk              C            100           0                   100          2018-07-18    
7                   nini             C            100           0                   100         2018-07-18   

答案:SELECT 部门,AVG(应发工资)AS平均工资  FROM 工资表 GROUP BY 部门 HAVING COUNT(姓名) >2;

3.设计模式题目


  策略模式
  找出父类接口跟几个子接口的关系

挺简单的一道题,就不发答案了。


4.选择题目(时序图)


  返回的方法
  Account类必须要实现的方法

也是挺简单的一道题。


5.计算利息题目


  A=P(1+r/n)^nt
  A位本息总和,P为本金,r为利息,t为每年计算利息次数,n为投资年限
  要求:输入时进行校验,junit单元测试通过等等

public class RateTest {
    public static void main(String args[]){
        System.out.println("请输入参数:");
        Scanner scan = new Scanner(System.in);
        //本金
        double P = scan.nextDouble();
        System.out.println("本金是:"+P);
        //利息
        int r = scan.nextInt();
        System.out.println("本金是:"+r);
        //投资年限
        int n = scan.nextInt();
        System.out.println("投资年限是:"+n);
        //每年计息次数
        int t = scan.nextInt();
        System.out.println("每年计息次数是:"+t);
        //本息总和
        double A = 0;
        double lixi = RateTest.countLixi(P, r, t, n);
        System.out.println("利息是:"+lixi);
        A = RateTest.countSum(lixi, P, t, n);
        System.out.println("本息总和:"+A);
    }
    //计算利息P(1+r/n)^nt
    public static double countLixi(double P,int r,int t,int n){
        double lixi= P*r/n;
        for(int i=0;i<=n*t;i++){
            lixi = lixi*lixi;
        }
        return lixi;
    }
    //计算本息总和
    public static double countSum(double lixi,double P,int t,int n){
        double sum =0;
        for(int i=0;i<=t*n;i++){
            P = P*P;
        }
        sum = P + lixi;
        return sum;
    }
}

给准备要面试的同胞一些经验了,如果对你有帮助,点个赞。

 

 

同名原创公众号: 程序大视界

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序大视界

原创不易,请给点支持和鼓励吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值