恒生电子笔试复盘

恒生回来的新问题→SQL[闭嘴] 
1.构造方法 模模糊糊记住然后蒙对了
2.C语言指针的题目蒙的  
3.编程题两道都很简单 
4.栈数据结构应用的几种场景 (逆序/程序装载/递归/链表的删除?) 选了13 还没找到答案 
5.class A {} class B extends A{} 问B()的问题 回来写了下代码发现做错了 

6.JAVA main方法里面的string [] args

不就是一个String数组么,传一个String数组参数进去
作为参数,写成String[] args、String[] aaaa、String... aaa都行

 7.拓扑排序

例如,假定一个计算机专业的学生必须完成图3-4所列出的全部课程。在这里,课程代表活动,学习一门课程就表示进行一项活动,学习每门课程的先决条件是学完它的全部先修课程。如学习《数据结构》课程就必须安排在学完它的两门先修课程《离散数学》和《算法语言》之后。学习《高等数学》课程则可以随时安排,因为它是基础课程,没有先修课。若用AOV网来表示这种课程安排的先后关系,则如图3-5所示。图中的每个顶点代表一门课程,每条有向边代表起点对应的课程是终点对应课程的先修课。从图中可以清楚地看出各课程之间的先修和后续的关系。如课程C5的先修课为C2,后续课程为C4和C6。

5和1竟然是同一个方法,构造方法与继承的问题

public class NO_Hengsheng_1 {
        NO_Hengsheng_1(){
            System.out.println("1");
        }
}
public class NO_Hengsheng_2 extends NO_Hengsheng_1 {
    NO_Hengsheng_2(){
        System.out.println("2");
    }
}
public class NO_Hengsheng_3 extends NO_Hengsheng_2 {
    NO_Hengsheng_3(){
        System.out.println("3");
    }
}
public class NO_Hengsheng {
    public static void main(String[] args) {
        new NO_Hengsheng_3();
    }
}

继承问题,子类实例化生成对象时,把这个类加载到JVM上,会先生成类的实例,但是new关键字有一个特殊的性质就是会先调用类的无参构造方法,如果这个类继承了父类,则子类实例化时,会先调用父类的无参构造方法,因此在这儿B b = new B()的过程中,会先调用A类的无参构造方法

首先,方法是没有继承一说的,只有覆写或者重载,类和类之间才能叫继承。
其次,你所出现的效果,是类的一个初始化的顺序问题,子类在初始化的时候会先调用父类的构造方法,所以打出了你的那句话。
最后,子类可以使用super()显示调用父构造器,没有重写的必要。

 

编程题一:15个信教徒15个异教徒,30个人围成一圈报数,每报到9,则报数人卒,问怎么站可以让15个异教徒全死结束。

public class NO_Hengsheng_Kill {
    public static boolean is_in(int mark,int [] A){
        for (int i=0;i){
            if (mark==A[i]){
                return true;
            }
        }
        return false;
    }
    public static int[] out(){
        int mark=0;
        int [] outs = new int[15];
        outs[14]=-1;
        int count = 0;
        while (outs[14]==-1){
            for (int i=0;i<9;i++){
                mark = mark + 1;
                if (mark == 31)
                    mark = 1;
                if (is_in(mark,outs)){
                    mark=mark+1;
                }
            }
            outs[count] = mark;
            count++;
        }
        return outs;
    }

    public static void main(String[] args) {
        int [] save = new int[15];
        save=out();
        Arrays.sort(save);
        for (int i:save){
            System.out.print(i+" ");
        }

    }

}

应该是对的把,笔算了一下差不多;

编程题二:四位数3025,3025=(30+25)^2,按照这个规律求出所有1000-9999满足这个条件的四位数。

public class NO_Hengsheng_sqrt {
    public static void main(String[] args) {
        print_num();
    }
    public static void print_num(){
        for (int i=1000;i<10000;i++){
            String a = Integer.toString(i);
            int x = Integer.parseInt(a.substring(0,2));
            int y = Integer.parseInt(a.substring(2));
            if ((x+y)*(x+y)==i){
                System.out.println(i);
            }
        }
    }
}

感觉有取巧的地方把,应该不是最优解,可能会有使用数学方法来计算会时间上更快一点;

 

SQL在下一篇博客复盘把

你可能感兴趣的:(恒生电子笔试复盘)