阿里巴巴实习生笔试题目

用Java代码模拟实现:一个人不断往箱子里放苹果,另一个人不断从箱子里取苹果,箱子只能放5个苹果,苹果数量无限。要求不使用Java.util.concurrent包中的类。

package fangying;

import java.util.ArrayList;
import java.util.Random;

public class AppleThreadDemo {
	public static void main(String[] args) {
		ArrayList<Apple> al = new ArrayList<Apple>();
		AppleProducer ap = new AppleProducer(al);
		AppleConsumer ac = new AppleConsumer(al);
		new Thread(ap).start();
		new Thread(ac).start();
	}
}

class Apple {
	private int id;

	public Apple(int id) {
		this.id = id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getId() {
		return this.id;
	}

	public String toString() {
		return "Apple " + id;
	}
}

class AppleProducer implements Runnable {
	private ArrayList<Apple> al;

	public AppleProducer(ArrayList<Apple> al) {
		this.al = al;
	}

	@Override
	public void run() {
		while (true) {
			try {
				Thread.sleep(new Random().nextInt(3) * 1000);
				synchronized (this.al) {
					if (al.size() < 5) {
						Apple apple = new Apple(al.size() + 1);
						al.add(apple);
						System.out.println("放入苹果:" + apple);
					} else {
						System.out.println("箱子已满!");
					}
				}
			} catch (InterruptedException ie) {
				ie.printStackTrace();
			}
		}
	}

}

class AppleConsumer implements Runnable {
	private ArrayList<Apple> al;

	public AppleConsumer(ArrayList<Apple> al) {
		this.al = al;
	}

	@Override
	public void run() {
		while (true) {
			try {
				Thread.sleep(new Random().nextInt(2) * 1000);
				synchronized (this.al) {
					if (al.size() > 0) {
						Apple ret = al.remove(al.size()-1);
						System.out.println("拿走苹果"+ret);
					} else {
						System.out.println("盒子为空!");
					}
				}
			} catch (InterruptedException ie) {
				ie.printStackTrace();
			}
		}
	}
}

  

时间: 2024-11-26 02:38:46

阿里巴巴实习生笔试题目的相关文章

阿里巴巴2014年实习生笔试题目

1.设栈S初始状态为空.元素a,b,c,d,e,f依次通过栈S,若出栈的顺序为c,f,e,d,b,a,则栈S的容量至少应该为______ . · 3 · 4 · 5 · 6 2.10个相同的糖果,分给三个人,每个人至少要得一个.有 种不同分法. · 33 · 34 · 35 · 36 3.小数值1.5625的二进制表示是____. · 101.1001 · 0.001 · 101.111 · 1.1001 4.某二叉树的先序遍历是12453,中序遍历是42513,那么其后续遍历是______.

2012-10-9杭州阿里巴巴研发笔试题目

1.参考答案:C. 2.参考答案:D. 解析:对于8位二进制数,对于一个负数,|原码| + 补码 = 1 0000 0000, 所以如果求补码 = 1 0000 0000 - |原码|同理,对于4位三进制数,对于一个负数,|原码| + 补码 = 1 0000, 所以如果求补码 = 1 0000 - |原码|对于这道题,|-10|三进制为0101,则其补码 = 1 0000 - 0101 = 2122, 所以选D 3.参考答案:A. 4.参考答案:B. 解析:假设进程为A.B.C,最大可申请的资源

2015唯品会运维实习生笔试题目(包含个人解答)

1.在linux/unix操作系统中用什么命令可以向一个进程发送信号 A.signal B.kill C.create D.fork 答案:B 2.在Linux/Unix操作系统中当一个进程终止时,下面哪个信号会被发送 A.SIGCHLD(子进程结束父进程会收到) B.SIGINT(中断) C.SIGTERM(终止) D.SIGQUIT(退出) 答案:C 3.下面哪个不是HTTP协议中的请求方法 A.READ B.GET C.HEAD(类似于get但是不返回body) D.PUT 答案:A 参考

软考类----来自淘米2004实习生笔试

淘米2014实习生笔试,今年是淘米第一年招暑期实习生,笔试好大部分考的是软考的题目啊啊啊啊(劳资后悔当年没考软考刷加权),其他是浅而泛的风格,C++,SQL语句,数据结构(哈夫曼树,二叉查找树,栈后缀表达式,连通无向图),排序算法各种最优最差平均 复杂度-- 下面记一下考到的软考风格的题目,不过估计其他家也不会考(劳资什么时候能过个笔试额,锁定C++不搞JS了) 1.计算机中最适合进行数字加减运算的编码是_补码__,最适合表示浮点数的数字编码是_移码__. A.原码 B.反码 C.补码 D.移码

DP - tencent2016实习生笔试A

tencent2016实习生笔试A Problem's Link ---------------------------------------------------------------------------- Mean: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串.如何删除才能使得回文串最长呢?输出需要删除的字符个数. analyse: 对于这题来说,插入字符和删除字符使其成为回文串,答案是一样的. 首先求s的反串rs,然后对s和rs求最长公共子序列,要删除的字

算法学习 并查集(笔试题目:找同伙)

题目背景太长,记得不清楚,暂参考<啊哈算法>一书,根据笔试题目大意改编如下: 警察正要捉获某地区的犯罪团伙,由于强盗人数过大,想查清楚有几个团伙非常困难. 根据上级指示,需要首先尽快抓获强盗A所在的团伙,这需要掌握 1 所在团伙的人数.先有资料如下: 强盗1 和 强盗2 是同伙 强盗3 和 强盗4 是同伙 强盗2 和 强盗5 是同伙 强盗3 和 强盗2 是同伙 注意,强盗的同伙的同伙也是同伙,问  强盗1 的同伙(不包括1自己)有多少人? 该题形式化表示如下: 每个测试实例首先包括2个整数:N

2017 校招网上笔试题目

2017 校招网上笔试题目 做了一下某大厂的笔试的题目 1. 一个表, visit(cookie_id, area1, area2, date) 给出各种查询策略中, 哪一种最好,每一条SQL语句大同小异, 几乎看不出区别, 还有6,7个选项,同时字数很长.一般的SQL语句好像有根据查询的嵌套顺序来比较差异的,但是这道题反而没有.反正蒙了一个.没有数字可算,心里没有底,应该证明了SQL语法可能会很大地影响查询效率. 2. 给了几个条件,判断你的名次.又是球赛的问题,考查你的推理能力. 3. en

几道经典的SQL笔试题目

几道经典的SQL笔试题目(有答案) (1)表名:购物信息 购物人      商品名称     数量 A            甲          2 B            乙          4 C            丙          1 A            丁          2 B            丙          5 …… (其他用户实验的记录大家可自行插入) 给出所有购入商品为两种或两种以上的购物人记录 答:select * from 购物信息 wher

分享两道笔试题目

前几天,给成都的某家公司投了个简历,给发了两道笔试题目,与大家分享一下.附上自己的解题过程,写得不好的地方,还请博友多多指教. 一 .  设计程序输出销售及收费清单 一个电商平台对在其平台之上销售的除了书籍.食品以及药物以外的商品收取 10% 的费用.而对于进口的商品则额外收取 5% 的附加费用.对于平台抽取的费用计算时,舍入的规则是:对于 n% 抽取率,价格为 p的商品, np/100 的值就近舍入到 0.05(如: 7.125 -> 7.15, 6.66 -> 6.70 ). 卖家卖出一些