Code Bye

两条游戏公司面试题

 

1 为什么说arraylist比vector 快?(除线程安全不安全问题)

2 在mybatis 和 hibernate 两者里面, 它们各自有什么东西 是对方实现不了的?


10分
第一个看了源码,都是通过数组实现的,get、add方法除了synchronized,似乎没有啥其它区别,难道是指其它方法实现方面?

第二个,确实没怎么系统思考过,找到一篇博文:http://blog.csdn.net/firejuly/article/details/8190229

你应聘的什么职位?mybatis和hibenate和游戏开发有什么关系?
1.扩容
2.mb的sql配置化,,hb的hql   
大家看看:ArrayList与Vector的线程保险 
http://www.myexception.cn/program/1045146.html

我不明白 那个 null 为何有时 出来 有时候不出来


import java.util.ArrayList;
import java.util.Vector;
/**
 * Copyright(c), 2011-2100
 * <p>Cwc System
 * @description:Synchronized of Vector and ArrayList  
 * @file name:	com.cwc.util.SynchronizedCollection.java
 * @create:		by author axis on Mar 2, 2011 5:53:52 PM
 * @since: 		JDK1.6u21
 */
public class SynchronizedCollection {

	@SuppressWarnings("unchecked")
	static ArrayList arrayList = new ArrayList(20);
	@SuppressWarnings("unchecked")
	static Vector vector = new Vector();

	public static void main(String[] args) {
		Thread threadOne = new Thread(){
			@SuppressWarnings("unchecked")
			public void run(){
				for (int i = 0; i < 10; i++) {
					arrayList.add(arrayList.size(),new Integer(i));
					vector.add(vector.size(),new Integer(i));
					try {
						Thread.sleep(10);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		};

		Thread threadTwo= new Thread(){
			@SuppressWarnings("unchecked")
			public void run(){
				for (int i = 0; i < 10; i++) {
					arrayList.add(arrayList.size(),new Integer(i));
					vector.add(vector.size(),new Integer(i));
					try {
						Thread.sleep(10);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		};

		try {
			threadOne.start();
			threadTwo.start();
			threadOne.join();
			threadTwo.join();
			System.out.println(arrayList);
			System.out.println(vector);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

 

[0, 0, 1, 1, 2, null, 3, 3, 4, 4, 5, 5, 6, 6, 7, null, 8, 8, 9, 9]
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]

[0, 1, 2, 3, 3, 4, null, 5, 6, 6, 7, 7, 8, 8, 9, 9]
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]

i < size ??

arraylist和vector都是集合类,但是一个是线程安全的,一个是不安全的
vector是枚举过时的方法,为线程同步,因此方法里面都加了sysn同步锁,每次运行代码都要访问这个锁,里面是否有内容在执行,若有程序停止,若没有,继续运行。
而arraylist集合没有同步锁,为线程不安全的,程序一直运行。 

18分
1.应该就是5楼说的扩容了,vector成倍扩容,arraylist按50%扩容。在查询插入删除元素上,两个的复杂度是一样的。
学习一下!!!!
第一个不清楚;
第二个不知道;
过来学习一下
涨知识了。。。。
1、同步必然导致性能下降,但是JDK1.5之后,synchronized的效率有了很高的提升
2、mybatis sql配置化,hibernate hql
learning
先顶再看,学学经验
页游啊?

我还是以为是端游呢。

我面试的游戏的公司,基本都在问并发、多线程、优化,代码基本不问。
看看..学习学习
进来学习一下。。。

2分
学习中~~知道了Vector扩容是成倍增长的,而ArrayList是50%增长。同步的就不用说了~~
学习来了
路过,学习了
过了N年以后再回来看,哇,这么简单!但现在是真不会啊..学习学习…
学习了 
第一题让我想起了当初去阿里面试的时候。那个面试官让我写arraylist的源码~结果我不知道是多少扩容的~so~
一个是线程安全的,一个是不安全的 !
引用 35 楼 u010111184 的回复:

第一题让我想起了当初去阿里面试的时候。那个面试官让我写arraylist的源码~结果我不知道是多少扩容的~so~

你面试的”复读机”职位吗?

引用 38 楼 sjlzcj 的回复:
Quote: 引用 35 楼 u010111184 的回复:

第一题让我想起了当初去阿里面试的时候。那个面试官让我写arraylist的源码~结果我不知道是多少扩容的~so~

你面试的”复读机”职位吗?

这面试时候不是很常见么?能扯到复读机上去?

我是来看评论的
想学习一下,结果也没看大神级的回答,期待…
游戏 从来不用这2个。
引用 2 楼 kiyoki 的回复:

你应聘的什么职位?mybatis和hibenate和游戏开发有什么关系?

服务端要用数据库啊。。

引用 43 楼 bill0605030109 的回复:
Quote: 引用 2 楼 kiyoki 的回复:

你应聘的什么职位?mybatis和hibenate和游戏开发有什么关系?

服务端要用数据库啊。。

直接插入写SQL语句就好,hi什么bernate呢

不明觉历啊a
学习了
新年大吉啊啊啊啊
mybatis sql全在配置文件便于管理,弊端在于不利于跟踪代码定位。  hb的hql都是写在代码里面的 后期要是改下条件什么的找起来麻烦 但是便于跟踪,纠错。
学习了
且学且珍惜,得认学习真正消化
感觉不错,很好,学习了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明两条游戏公司面试题