招银网络笔试java_招银网络科技提前批 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 + " ");

}

}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值