Java实习-网易线上笔试

2021.04.10 在线笔试
题型:4道编程题,2道问答题

一、问答题

(本人菜鸡,想知道标准答案的麻烦自己查哈哈哈!)

1.Java中的绑定是什么?静态绑定和动态绑定的区别?动态绑定的过程?
不知道。。。我按照泛型的理解硬编了一些字。

2.ArrayList和LinkedList的区别?
(1)ArrayList是基于数组的。LinkedList是基于链表的
(2)ArrayList有索引,所以查询比较快,增删比较慢。LinkedList需要一个节点一个节点找,所以查询比较慢,增删比较快。
(3)ArrayList基于数组,Java中数组长度不可变,如果超过容量需要扩容,而我们加入的元素往往并不能填满每一个位置,所以可能造成资源的浪费。LinkedList就不会。
(4)我觉得ArrayList比较常用

二、编程题

1、【问题描述】一家煎饼店,店主有2张5元,一张饼5元。确保正确找零,并且只要无法为一位顾客找零,整个生意就结束。给我们一个数组(表示顾客们有的现金),只有5、10、20元的钱。求最多能完成几次交易?
【示例代码】

/**
	 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
	 *
	 * 
	 * @param bills int整型一维数组 顾客队列
	 * @return int整型
	 */
	public int billsChange (int[] bills) {
		// write code here
		int success = 0;
		int five = 2;
		int ten = 0;
		for(int i = 0; i< bills.length;i++){
			if(bills[i] == 5) {
				five++;
				success++;
			}else if(bills[i] == 10) {
				if(five > 0) {
					five--;
					ten++;
					success++;
				}else {
					return success;
				}
			}else if(bills[i] == 20){
				if((five>0 && ten>0)) {
					five--;
					ten--;
					success++;
				}else if(five>=3){
					five-=3;
					success++;
				}else {
					return success;
				}
			}
		}
		return success;
	}

2、【问题描述】有0,1,2,3,4号5个充电桩,组成一个圆圈,每个充电桩能提供的电量用数组e表示,每个充电桩到下一个充电桩需要的电量用数组c表示,求是否能够完成一次绕圈?返回最小的起点序号,如果不能成功就返回-1。
【示例代码】

public int canCompleteRace (int[] e, int[] c) {
		for (int begin = 0; begin < c.length-1; begin++) {
			int have = 0;
			boolean success = true;
			for (int i = 0; i < e.length-1; i++) {
				have += e[i];
				if(have > c[i]) {
					have -= c[i];
				}else {
					success = false;
					break;
				}
			}

			if(!success) {
				//变换起点
				int num = 0;
				int newLast1 = e[0];
				int newLast2 = c[0];
				for (int i = 0; i < e.length-1; i++) {
					e[i] = e[i+1];
					c[i] = c[i+1];
				}
				e[e.length-1] = newLast1;
				c[c.length-1] = newLast2;
			}
			if(success) {
				return begin;
			}
		}
		return -1;
	}

3、4、没做出来。。
3是一个什么链表表示一个数,然后求两个链表的和。貌似需要我们自己写链表的数据结构。
4是一个最优选址。为我们提供一个二维数组,每一个有(城市1坐标,城市2坐标,两城市的距离),求哪个城市作为最优(距离最短)选址?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值