[讨论] 今天去面试了,有三个题目问倒我了,写出来大家做做!

wenjinglian 2012-07-24
第一题:如果需动态添加属性,那么一开始就要设计好
http://www.iteye.com/topic/197752
http://www.blogjava.net/canonical/archive/2008/03/17/59703.html
http://www.blogjava.net/sparkyang/archive/2005/09/12/12782.html
yjl49 2012-07-24

第三个

select id,name,sex,age
from (
select *
from tableA
union
select *
from tableB
)
group by id,name,sex,age
having count(*)<2
kevincollins 2012-07-24
问题3:
select id, code
  from (select *
          from a1
        union all
        select * from a2) a
group by id, code
having count(id) = 1

--解1--
select * from a1 where a1.id not in (select a2.id from a2)
union all
select * from a2 where a2.id not in (select a1.id from a1)
WHOINSKY 2012-07-24
用注解应该行
直线曲线 2012-07-24
针对第一题:首先需要确认是否真的要改变表的结构?
若果不是:可以采用添加“新属性表”“新属性值表”以及几个关联表的方式来实现需求。
之前做过的一个需求:每个用户可以在任意表中添加专属于自己的属性。
shuaiji 2012-07-25
huangshanghua 写道
1、有一个表有姓名,性别,年龄三个属性,表用hibernate进行表映射。显示页面显示表的所有属性,如下:

姓名   性别  年龄
name  sex  age

那么我要动态增加一个属性值,如:地址;怎样在表中增加一个属性并且映射文件也要同时修改,映射文件要生效。有什么好办法??(用SSH实现)

2、spring有IOC模式,如果不用spring,请设计一个与spring的IOC模式一样功能的代码??

3、有两个表,表的属性都有:id,name,sex,age;第一个表有700条数据,第二个表有500条数据,其中两个表中有300条是id相同的,如何把两个表中不相同的数据取出来,面试官说只能用exist关键字才能做到?还有其它好办法吗?

这个第一题:可以设计一个无意义N 列的表,用配置文件去对应。C1=NAME,C2=SEX,等等。这样可以随意增加列,然后动态RELOAD 配置文件。
FrankTiger 2012-07-25
第三题:
抽象工厂模式和单例模式实现
抽象类
package com.factory;

import com.singleton.Singleton;

public abstract class AbstractFactory {

	public abstract Singleton createSingleton();
}


工厂类
package com.factory;

import com.singleton.Singleton;

public class Factory extends AbstractFactory{

	@Override
	public Singleton createSingleton() {
		return Singleton.getInstance();
	}

}


单例类
package com.singleton;

public class Singleton {

	private static Singleton instance = null;
	
	public Singleton(){
		
	}
	
	public static synchronized Singleton getInstance(){
		if(instance == null){
			instance = new Singleton();
		}
		return instance;
	}
	
	public String testSingleton(){
		return "Hello Singleton";
	}
}


测试类
package com.test;

import com.factory.Factory;
import com.singleton.Singleton;

public class Test {

	
	public static void main(String[] args){
		Factory factory = new Factory();
		Singleton s = factory.createSingleton();
		System.out.print(s.testSingleton());
	}
}


单例中也可以使用ThreadLocal实现多线程,希望抛砖引玉。
zbzbzb022 2012-07-25
可以通过hibernate的动态模型实现。
具体实现办法就是将Map作为一个持久化对象,可以对Map进行动态添加key-value,同时要注意在***.hbm.xml中,将name变成entity-name。
与数据库同步时使用重载的save方法。即:save(String str,Object obj)
huangshanghua 2012-07-26
坏孩子 写道
charles751 写道
问题1:
1.jsp页面提供添加参数的界面。
可以包含要添加的字段值、映射名称、表名、字段类型、映射类型等配置信息

2.后台处理
2.1添加字段到数据库指定的表
2.2添加配置信息到hbm.xml中。

3.映射文件生效
可以重新load下hibernate的context


你敢在生产环境下reload吗?

第一题你把表设计成key value的方式就可以了,就是效率低一点,不知道对方是要考数据库还是hibernate

第二题最简单的就直接用反射了


把表设计成key、value方式:
我的理解:
设计两个表:一个表A设计成key、value,另一个表B就是题目标那个表。那么表A用hibernate进行映射,表B不映射,动态增加一个表B属性时,在表A中增加一条相应属性记录。然后表B只能用JDBC查找数据了。
huangshanghua 2012-07-26
shuaiji 写道
huangshanghua 写道
1、有一个表有姓名,性别,年龄三个属性,表用hibernate进行表映射。显示页面显示表的所有属性,如下:

姓名   性别  年龄
name  sex  age

那么我要动态增加一个属性值,如:地址;怎样在表中增加一个属性并且映射文件也要同时修改,映射文件要生效。有什么好办法??(用SSH实现)

2、spring有IOC模式,如果不用spring,请设计一个与spring的IOC模式一样功能的代码??

3、有两个表,表的属性都有:id,name,sex,age;第一个表有700条数据,第二个表有500条数据,其中两个表中有300条是id相同的,如何把两个表中不相同的数据取出来,面试官说只能用exist关键字才能做到?还有其它好办法吗?

这个第一题:可以设计一个无意义N 列的表,用配置文件去对应。C1=NAME,C2=SEX,等等。这样可以随意增加列,然后动态RELOAD 配置文件。

这样不会很浪费?
Global site tag (gtag.js) - Google Analytics