论坛首页 Java企业应用论坛

华为面试,就一个问题,月薪2.5w

浏览 15643 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2015-12-11  
既然部门和文件夹都是层架关系,那就用uri路径表示就是了。

文件夹:  /目录A/目录B/目录C/......./

人的目录树古怪一点,倒过来,这样可以更快:
    如果是人,则表示为:  /人
    如果是某一部门,如“大大部门C”则表示为:  /部门A/大部门B/大大部门C

这样的话,授权也就是在用户/部门--文件夹对应表增加一条记录就是了
1)场景1:文件夹授权给个人
      人    ------     文件夹路径
2)场景2:文件夹授权给部门
     /部门A/大部门B/大大部门C    ------     文件夹路径

这样,查询个人或部门使用某一文件夹的权限,就很简单
SELECT * FROM 文件部门关系表  where  文件夹路径 like “指定文件夹参数”
and 部门/人路径 like “指定人/部门路径参数”

看这个行不
0 请登录后投票
   发表时间:2015-12-11  
先按照权限要求建立总表

根据权限特点单独生成权限管理分表(后台程序维护 文件 更新 与权限更新)

针对每个员工只检索 同类的管理表分表
0 请登录后投票
   发表时间:2015-12-11  
chrislee1982 写道
既然部门和文件夹都是层架关系,那就用uri路径表示就是了。

文件夹:  /目录A/目录B/目录C/......./

人的目录树古怪一点,倒过来,这样可以更快:
    如果是人,则表示为:  /人
    如果是某一部门,如“大大部门C”则表示为:  /部门A/大部门B/大大部门C

这样的话,授权也就是在用户/部门--文件夹对应表增加一条记录就是了
1)场景1:文件夹授权给个人
      人    ------     文件夹路径
2)场景2:文件夹授权给部门
     /部门A/大部门B/大大部门C    ------     文件夹路径

这样,查询个人或部门使用某一文件夹的权限,就很简单
SELECT * FROM 文件部门关系表  where  文件夹路径 like “指定文件夹参数”
and 部门/人路径 like “指定人/部门路径参数”

看这个行不


问题的关键是在大数据量情况下,如何将在最短时间内将个人权限与部门权限合并,比如说个人权限2800万,部门权限2300万,如何将重叠部分合并起来展示出来结果????
0 请登录后投票
   发表时间:2015-12-12  
关系表可能得考虑分表处理了,所以得考虑一种合理的分表策略,比如部门/用户id1-10结尾的分别对应1张表。
另外这里查询的时候应该不是一次把所有的目录和文件全部展示出来,应该每次都只展示某一级的,每次查询传个层级参数,个人权限和部门权限只有某一级的对应关系的话,合并效率应该不会是问题的。
0 请登录后投票
   发表时间:2015-12-13  
楼上都思维定势了,为什么都要用数据库、redis这样的东东呢?
操作系统层面解决不了么?3s出结果是挑战。
0 请登录后投票
   发表时间:2015-12-13  
要求搜索文件时自动判定权限?他这个搜索有没有限制?用不用关键字?30M的文件名丢数据库了,肯定有问题。
然后,要不是指定文件路径的?比如说/AA/BB/*/a*.txt
全文可以借助SOLR,
当然了,你丢进Hadoop,hbase也是可以的。
问题不限制硬件优势什么意思?只有一台机器,还是说内存呢?我用redis可以么?
0 请登录后投票
   发表时间:2015-12-14  
首先一点,拿2.5W的人也不一定能解决. 其次个人意见是不需要用数据库,只要设计好的数据结构才可以.授权是以目录为基础的,所以可以创建Tree树,每个树结点下有一个的数据结点是授权数据,包括部门与个人,另外为了查找快,得缓存相关的URI来加快速度,另外部门也有层级关系,因此也需要创建树结构来处理.授权先到到两个结点,设置值就可以了.当然部门多的话其实对个人权限的合并需要考虑.不过总是有个优先级的,如果对树结点权限,先找部门,再找个人,可能会快些,另外找过的部门可以缓存起来.
0 请登录后投票
   发表时间:2015-12-14  
再说明一下,这个完全是在考察算法与数据结构的题目,具体实现有空的同学来实现吧,至于能否在3S内处理完成,单个计算机不能完成可以在多机中实现
0 请登录后投票
   发表时间:2015-12-14  
diggywang 写道
楼上都思维定势了,为什么都要用数据库、redis这样的东东呢?
操作系统层面解决不了么?3s出结果是挑战。

单纯的操作系统对于文件句柄数量是有限制的,而文件句柄数和性能是成反比的,问题中并没有说每个目录文件夹上线,那么极有可能超过操作系统所能承受的文件句柄数,
即使是操作系统级别也是要通过建立索引来快速查找已达到相应的文件名目录,加之权限,想在3s内出结果,从操作系统层面解决问题着实不妥。所以从这一角度分析,操作系统级别是无法解决的,当然分布式存储可以解决存储的问题,但解决不了快速过滤权限的问题展示的问题。
至于用数据库或其他的并不是思维定势,而是从性能,存储及扩展性等各方面更适合解决这样的问题。
0 请登录后投票
   发表时间:2015-12-14  
wxn_yxm 写道
再说明一下,这个完全是在考察算法与数据结构的题目,具体实现有空的同学来实现吧,至于能否在3S内处理完成,单个计算机不能完成可以在多机中实现

这个才是题目的关键点
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics