题目:
一千万条数据,数据载体不定(可为文件或者数据库形式) 数据有不同类型(地区,行业)
取出属于杭州市外贸性质的企业数据
考核指标
1.程序抽象能力
2.用抽象思想去抽取
3.实现方法,最好用对比的形式 比优劣式
回答:
不就是信息检索吗。。。检索先建立索引然后优化吧,空间换时间。
手工也能实现索引建立,不局限于什么编程语言也不局限于什么面向对象不对象。
也不需要像搜索引擎一样对结果排序。。。难点不就在于数字量很大吗
索引可以用倒排文档索引,哈希或者是二叉数结构。
个人以为这道面试题的考点在数据封装这一块,以及对大数量快速查询的考查。数据封装可根据具体业务逻辑来定义业务类,因为涉及到大数据量查询,还需要有基本类,我想亮点应该在这个地方,如果你能把数据库的设计也答上的话就更完美了。业务类可以有企业数据,代表每个企业数据的实体。DAO层的增删改差,用IBATIS来实现,因为介于数据比较复杂,数据量大,所有摒弃了Heibernate。如果对性能要求比较严格还可以从数据库设计下手,比如分表存储,分表查询,建立索引表。顺便问下,回复的时候怎么换行啊。。。
yes
1、建立索引
2、排序
3、比较
4、。。。。。。。。。
你这个问题,就是个非线形边界的判断问题.
建议你看看数据采矿之类的材料。
那就用ado三层吧。再加上实体层,抽象工厂。这样应该够抽象了呵。
再加上数据及性能想必这个对于楼主来说不是很大的问题吧。重点在于面向对象这种理念的理解上。
那么至于面向对象这种理念 那就要看楼主的个人见解了呵。
这个题目就像在12亿中国人中找一个人一样,他说的地区行业就是人的特征。找人有很多方法,逐个排查肯定可以找到 不过要花多长时间呢?!
我们就会想别的办法,比如根据他的籍贯找到大概的地方,这样范围大大缩小,但是人不一定就在出生的地方,不过在那里肯定可以找到相关的信息,然后
继续找,把线索扩大,直至集中到一个点上,人也就找到了
好像扯远了,不过我就想说一点实际上。那就是,根据一个事物的特征也可以说成是属性以及和其他事物的联系去找他,它。
再回到刚才的问题,数据载体不一定 说明考官不关心你具体技术。就想看你第一反应 是想怎么处理这个问题,没有必要说什么具体实现,我认为。
我的理解是,如果是数据以文件形式保存,那么我就会分几个大类,大类里在套小类别,这样根据杭州市属于南方我就找到南方大类然后找到珠三角 依次类推。。。在面向对象里我们保存具体的对象之前也是要将他们分类的。就像你查api一样 按图索骥 就找到了
胡乱说了这么多,也不知道自己都说了什么了,-。- 不管有没有价值,自己过瘾了 呵呵
说下俺的一点浅见,
根据题目,分析如下
数据载体不定(可为文件或者数据库形式):说明不用考虑数据的保存形式,只需要考虑数据的逻辑组织结构,因此,不用顾及数据库那套,使用索引、视图什么的;
数据有不同类型(地区,行业):说明数据的实际来源复杂、多样化,并且数据间可能存在复杂的关联;
本身题目要求的是搜索查询结果,那么,核心在于如何在一千万条数据的大数据量下,选取恰当的数据描述,组织成合适的表现数据关联的逻辑结构,并提供快速搜索的能力。
具体如下:
1.数据层,——数据层是原始未加工的数据,我的想法是按照一定原则进行分组,比如按照地区,行业的拼音首字母分,这样可以极大的减少检索时的目标量;
2.数据逻辑层,——通过数据对象,组装从数据层来源的数据,这样可以减少在数据层的依赖,并能动态的建立数据层数据间的逻辑关联。举例:创建一公司对象,公司对象具有公司运营方向属性,具有公司运营状况属性,这样,公司运行方向数据、运营状况数据和公司描述数据关联;更进一步,很自然的,对象可以包含对象。通过数据逻辑层的封装可以极大减少数据管理的混乱。
3.在数据层和数据逻辑层添加数据访问与控制层,为数据逻辑层提供访问数据层数据的接口。
为了提高搜索效率,可以在数据访问与控制层优化算法,并与数据层的逻辑组织结构结合,比如,在数据层采用分组,采用索引和关键字哈希表映射等等,在访问层采用二分法等等优化算法。
也就胡说这么多了