三七互娱笔试总结(求职广州中...)

web后端工程师:

经验总结:

出来实习学校的基础都没看过了。。。复习只是看了看Java 和JavaWeb和数据库的东西,校招笔试都是基础呀,数据结构,操作系统,网络七层模型,算法比较多!

 

选择题:

675  225  90  45  30  30 根据规律推测下一个数为()

A,28 B,0  C,15 D,30 

解析:第一个数为第二个数的3倍,第二个数为第三个数的2.5倍,第三个数是第四个数的2倍...倍数0.5递减,所以最后一个数为C,15(当时激动竟然没看出来。。。)

Cookie:

解析:使用Cookie对象必须设置其生存期限,否则Cookie将会随着浏览器的关闭而自动消失。

第一道编程题:一个整数如果其因子全部由3和7组成就叫做37数,

比如3和7,21都是37数,6就不是因为其因子含有2。

请你设计一个函数判断一个整数是否属于37数,不限语言。

import java.util.Scanner; 
public class Test {
    public static void main(String []args) {
       System.out.println("请输入一个整数");
Scanner sc = new Scanner(System.in);
int num=sc.nextInt();
if(is37Number(num)){
System.out.println("此数字是37数");
}else{
System.out.println("此数字不是37数");
}
    }
public static boolean is37Number(int num){
if(num<=1){
return false; //认为含有0,-1 ,不属于37数
}

while((num!=1)&&(num!=3)&&(num!=7)){

    if(num%21==0){

        num=num/21;

    }else if(num%3==0){

         um=num/3;
    }else if(num%7==0){
        num=num/7;
    }else{
        return false;
    }
}
return true;
}

}

第二道编程题:如果你是一个强盗,正准备抢劫一条街道,这条街道上装有互联监视系统,

也就是如果连续抢劫两家相邻的商店就会引发报警。你如何从这条街道盗取最大收益。

给定一列整数表示 每家商店的价值,在不能取相邻两数的情况下如何从这列整数中得到和的最大值。

//下面是以递归的方式解决,如果整数列比较长的话系统开销会比较大:

public class Test {

    public static void main(String []args) {

        List street=new ArrayList();

        //一列整数 模拟商店价值(假定三家商店,数少好理解)

        street.add(10);

        street.add(90);

        street.add(100);

 

        int result =maxValue(street);

        System.out.println("从这条街道能获得的最大价值为"+result+"美元");//输出结果(结果为110美元)

 

    }

 

         public static int maxValue(List list){

                    if(list.size()==1){

                        return list.get(0);

                    }else if(list.size==2){

                        if(list.get(0)>list.get(1)){

                            return list.get(0);

                        }else{

                            return list.get(1);

                            }

                    }if(list.size()>2){

                            int n=list.remove(list.size()-1);    //最后一家商店的价值 (第一次执行为100)

                            List list2=new ArrayList(list);    //list2第一次执行为 10 90

                            int r1=maxValue(list2);  //r1是让舍弃最后一家商店不抢,所能盗取的最大值(第一次执行为90)

                            list.remove(list.size()-1);

                            List list3=new ArrayList(list);   

                            //list3第一次执行为[ 10 ],因为执行力两次remove()方法

                            int r2=n+maxValue(list3);  //r2是选择抢最后一家商店,所能盗取的最大值(第一次执行为110)

                            if(r1>r2){ //比较之后决定抢不抢最后一家,就能利用递归倒推出抢那些商店能获得最大价值

                                    return r1;

                            }else{

                                    return r2;

                            }

                    }

 

            }

}

//尝试对第二题进行优化:

你可能感兴趣的:(笔试题)