2013金山校园招聘Java笔试题

今年金山校园招聘Java笔试题目,昨天(2012.9.17)参加完笔试的留下来的

 

第一题 :栈内存与堆内存的特点与区别,java中是怎样分配的?

                  栈内存中用来存放基本数据类型(8种基本类型)和对象的引用变量,存取速度比堆快,栈中的数据可以被共享使用,堆内存中用来存放new创建的对象和数组对象。

第二题:对象序列化,作用,那些不能序列化?

               对象序列化是为了能够让对象像其他变量数据一样能够长久的保存下来,其实质是把对象在内存中的数据按照一定的规则,变成一系列的字节数据,然后写入到流中。没有实现java.io.Seralizabled接口的类不能实例化。关于序列化更加详细的介绍:Java序列化的那些事

第三题 线程的p、v操作

              线程对于程序员而言,是比较重要的一块知识,不会线程编程,就算不上一个合格的程序员。因此,线程也是各个公司笔试面试必考的内容之一。PV操作本是操作系统中相关的内容,简单来说,P操作是申请资源,V操作是释放资源。本题最好可以用生产者/消费者来实现PV操作最为合适,同时也考虑到了多线程同步的问题。举例说明:

package common;

import org.junit.Test;

/**
 * PV操作示例
 * @author xcbeyond
 *
 * 2012-10-2下午08:05:09
 */
public class PVOperator {
	public static void main(String [] args){
		Store s = new Store(5);
		Produce pro1 = new Produce(s);
		Produce pro2 = new Produce(s);
		Consumer con1 = new Consumer(s);
		Consumer con2 = new Consumer(s);
		pro1.start();
		con1.start();
		pro2.start();
		con2.start();
	}
}
/**
 * 仓库类:临界资源
 *
 */
class Store{
	private  final int maxSize;	//最大容量
	private int count;	
	
	public Store(int size){
		maxSize = size;
		count = 0;
	}
	/**
	 * 添加资源
	 */
	public synchronized void add(){
		while(count >=maxSize){
			System.out.println("----仓库满了!----");
			try {
				wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		count++;
		System.out.println(Thread.currentThread().toString()+ "put" +count);
		notifyAll();
	}
	
	public synchronized void remove() {
		while(count <= 0) {
			System.out.println("----仓库空了!----");
			try {
				wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		System.out.println(Thread.currentThread().toString()+ "get"+count);
		count--;
		notify();
	}
}
/**
 * 生产者:P操作
 */
class Produce extends Thread {
	private Store s;
	
	public Produce(Store s) {
		this.s = s;
	}
	@Override
	public void run() {
		while(true){
			s.add();
			try {
				Thread.sleep(1000);//只是为了利于查看线程间的同步,所以延迟1s
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}
/**
 * 消费者:V操作
 */
class Consumer extends Thread {
	private Store s;
	
	public Consumer(Store s) {
		this.s = s;
	}
	
	@Override
	public void run() {
		while(true) {
			s.remove();
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}



第四题  设计一个文本编辑器,类似于wps,写出思想和架构。

第五题:


共五道题

 

 

现不给出具体答案,望大家给出合理的答案,相互参考!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xcbeyond

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值