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

huangshanghua 2012-07-20
1、有一个表有姓名,性别,年龄三个属性,表用hibernate进行表映射。显示页面显示表的所有属性,如下:

姓名   性别  年龄
name  sex  age

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

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

3、有两个表,表的属性都有:id,name,sex,age;第一个表有700条数据,第二个表有500条数据,其中两个表中有300条是id相同的,如何把两个表中不相同的数据取出来,面试官说只能用exist关键字才能做到?还有其它好办法吗?
巴巴米 2012-07-20
第一个问题困扰我很久了。。
charles751 2012-07-20
问题1:
1.jsp页面提供添加参数的界面。
可以包含要添加的字段值、映射名称、表名、字段类型、映射类型等配置信息

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

3.映射文件生效
可以重新load下hibernate的相关表的context
坏孩子 2012-07-20
charles751 写道
问题1:
1.jsp页面提供添加参数的界面。
可以包含要添加的字段值、映射名称、表名、字段类型、映射类型等配置信息

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

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


你敢在生产环境下reload吗?

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

第二题最简单的就直接用反射了
huangshanghua 2012-07-20
在表中增加一个属性很容易,但要使表的映射文件同时生效就有点麻烦了!我在面试的时候想了半天也没想出来。有什么好办法,说出来听听
如果风…… 2012-07-20
2、spring有IOC模式,如果不用spring,请设计一个与spring的IOC模式一样功能的代码??

这个可以借用工厂加单例的模式来实现。。。
如果风…… 2012-07-20
面试这样的题目,你工作多久了,?
huangshanghua 2012-07-20
刚刚两年,在制造企业上班,接触的知识面不广,这些问题一时半会还真想不出来
tlde_ti 2012-07-21
sql 不熟。只听说它的概念是 集合 之间的操作。

而3是根据id来区别集合相同的。
结果表= {1表过滤2表相同的后的集合} + {2表 过滤 表1 相同的后的集合}t

想当然的假设sql的语法的写一个sql语句的话,大概是
select * from 表1 as t1 where t1.id not in (select t2.id from 表2 as t2)
union
select * from 表2 as t2t where t2t.id not in (select t1t.id from 表1 as t1t)
或者换一个角度,直接把两个表的数据都抽取出来然后根据id 去除重复的。
select distinct on (id)  *  from (from 表1 union from 表2)

以上是我的想象中的sql代码,不要在意.
coderliang2018 2012-07-21
1、在页面上面弄一个添加的字段的名称, 字段值类型名称,新建立一个类 Address property 比如动态添加的属性有 String id, String addressName, String dataType String personId(这个是之前表Person的ID)  在Person 类当中有一个address 的一条记录的引用  hibernate加载的时候就可以加载这条记录, 然后你通过反射机制根据dataType字段的类型来赋值。
Global site tag (gtag.js) - Google Analytics