招银网络科技提前批 6.22笔试

共分为三部分:
客观题:50 min,30道选择
主观题:70 min,方向四选一,3道代码题
性格测试:30 min,100道(5分钟就做完了。。)

代码题1(填空处填写):
剑指 第5题 — 替换空格

public class ZYWK_1 {
    public static void main(String[] args) {
        String s = "I love China";
        String str = replaceSpace(s);
        System.out.println(str);
    }
    public static String replaceSpace(String s) {
        StringBuilder str = new StringBuilder();
        for (char c : s.toCharArray()) {
            if (c == ' ')
                str.append("%20");
            else
                str.append(c);
        }
        return str.toString();
    }
}

代码题2(填空处填写):
动态代理模式,注解

//接口
interface Human{
    String getBelief();
    void eat(String food);
}
//被代理类
class SuperMan implements Human{
    @Override
    public String getBelief() {
        return "I believe I can fly!";
    }
    @Override
    public void eat(String food) {
        System.out.println("我喜欢吃" + food);
    }
}
//动态代理
class ProxyFactory{
    //输入: obj 被代理类对象
    //输出: 代理类对象
    public static Object getProxyInstance(Object obj){
        MyInvocationHandler handler = new MyInvocationHandler();
        handler.bind(obj);
        return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),handler);
    }
}
class MyInvocationHandler implements InvocationHandler{
    private Object obj;
    public void bind(Object obj){   //使用被代理类对象进行赋值
        this.obj = obj;
    }
    //通过代理类对象调用方法a时,自动调用invoke()
    //被代理类要执行的方法a的功能声明在invoke()中
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Object returnValue = method.invoke(obj, args);
        return returnValue;
    }
}

public class ProxyTest {
    public static void main(String[] args) {
        SuperMan superMan = new SuperMan();   //被代理类对象
        Human proxyInstance = (Human) ProxyFactory.getProxyInstance(superMan);   //代理类对象
        //当通过代理类对象调用方法时,会自动的调用被代理类中同名的方法
        proxyInstance.eat("四川麻辣烫");
        NikeClothFactory nikeClothFactory = new NikeClothFactory();   //被代理类对象
        ClothFactory proxyClothFactory = (ClothFactory) ProxyFactory.getProxyInstance(nikeClothFactory);  //代理类对象
        proxyClothFactory.produceCloth();
    }
}

代码题3:
模拟洗牌
题目:一副扑克牌,从上到下数值分别为 1,2,...,n。将扑克牌分为两半,上半部分放在左手上,下半部分放在右手上,如果扑克牌有奇数个,则左手边多放一张。洗牌时,如果是第奇数次洗牌,则先把右手边的扑克牌的最下面一张放在下面,然后把左手边扑克牌的最下面一张放在其上,接着把右手边扑克牌的倒数第二张放在其上,...。如果是第偶数次洗牌,则先把左手边扑克牌的最下面一张放在下面,然后把右手边扑克牌的最下面一张放在其上,接下来的步骤同上。
输入:7 2 1 2 3 4 5 6 7
第一个数为扑克牌的张数,第二个数为洗牌次数,其后为扑克牌的数值。
输出:1 6 2 4 5 7 3
洗牌后的结果。

import java.util.Scanner;
import java.util.Stack;

public class ZYWK_3 {
    public static void main(String[] args) {
        Scanner scan =  new Scanner(System.in);
        String str = scan.nextLine();
        String[] strs = str.split(" ");
        int[] nums = new int[strs.length];
        for (int i = 0; i < nums.length; i++)
            nums[i] = Integer.parseInt(strs[i]);

        int n = nums[0];
        int k = nums[1];
        int[] pocker = new int[n];
        for (int i = 0; i < n; i++)
            pocker[i] = nums[i+2];
        Stack stack1 = new Stack<>();
        Stack stack2 = new Stack<>();
        for (int i = 1; i <= k; i++) {
            for (int j = 0; j < n; j++) {
                if (j <= (n-1)/2)
                    stack1.add(pocker[j]);
                else
                    stack2.add(pocker[j]);
            }

            int tmp = n;
            while (!stack1.isEmpty() || !stack2.isEmpty()) {
                if ((i & 1) != 0) {
                    if (!stack2.isEmpty())
                        pocker[--tmp] = stack2.pop();
                    if (!stack1.isEmpty())
                        pocker[--tmp] = stack1.pop();
                }
                else {
                    if (!stack1.isEmpty())
                        pocker[--tmp] = stack1.pop();
                    if (!stack2.isEmpty())
                        pocker[--tmp] = stack2.pop();
                }
            }
        }
        for (int num : pocker)
            System.out.print(num + " ");
    }
}

你可能感兴趣的:(招银网络科技提前批 6.22笔试)