首页 新闻 搜索 专区 学院

华为2.5w月薪的一个问题

0
悬赏园豆:5 [待解决问题]

没错面试就一个问题,能搞定就上,不能搞定就滚蛋。 

问题如下,我已经滚蛋。 

多级对多级的授权问题。 

举一个例子:电脑里面有很多文件夹,文件夹自然有层级关系(不超过16级),公司里面有很多人,很多部门,类似于也有多层级关系。 

关键点: 
1. 对文件夹进行授权,可以授权给个人,也可以授权给部门。 
2. 个人权限覆盖部门权限。 
3. 要求授权能在3秒之内完成。 
4. 要求搜索文件时自动判定权限,只展示给个人有权限的文件。大数据情况下(文件和文件夹>3000w,2000<人数<20000,部门<2000)下能够在3秒钟出结果。 
5. 不限制硬件。 

我的答案: 

提供了两种常规思路,都被否定。 

1. 授权时将文件夹(因为只对文件夹授权)和对应的部门对应的人统统写入数据库。写入(a*b条数据) 不满足第三个要求。被否。 

2. 只写入对应关系(a*1),不满足3s搜索。被否。 

注:a 代表a目录和a以下的的所有目录。b代表b部门和已下的所有人。 

 

原帖 http://www.iteye.com/topic/1142575

看上去很厉害的样子。

漫步之舞的主页 漫步之舞 | 初学一级 | 园豆:197
提问于:2015-12-09 10:36
< >
分享
所有回答(3)
0

给所有文件和文件夹唯一ID,建立文件系统索引树,项目值包括 子文件,子文件夹,当前ID

建立2个权限表,硬件条件足够可使用建立内存索引,部门权限,个人权限,包含ID和文件树路径

反正这个题目重点还是索引。。最大的索引情况就是在内存中建立3个索引树,对外提供一个查询接口,参数为路径描述(从权限中获得),返回一个目录子树,其实人家题目已经说了不限制硬件条件了。各种索引优化方式都上就得了。

吴瑞祥 | 园豆:29187 (高人七级) | 2015-12-09 13:00
0

我就说下思路吧

1. 授权时将文件夹(因为只对文件夹授权)和对应的部门对应的人统统写入数据库。写入(a*b条数据) 不满足第三个要求。被否。 

这个肯定是错的,这样写的话,再好的数据库服务器也得挂。

 

2. 只写入对应关系(a*1),不满足3s搜索。被否。 

这个其实也没办法保证满足第3点要求,至于能不能满足3S搜索,关键点不在权限的写入。

写入权限,最好就是只写一条数据,写a条数据都是不太好的。

 

3、搜索3S这个要求要达到的话,我目前考虑的就是数据表要设计好。

要在数据库中有一个文件夹的对应树数据表。

 

这个题目如果我出的话,我只是要考你的知识面和思考能力。所以答1肯定不行,答2的话稍微好点,当然也是不行的。

至于真正的答案,反而没那么重要了。

爱编程的大叔 | 园豆:30753 (高人七级) | 2015-12-09 15:25
0

我的解决方案:
1、首先不考虑查询用时,先解决问题,再说性能优化的事情
2、标准的权限管理:用户-->角色-->资源
3、其中,用户-->用户组,角色-->角色组,资源-->资源组,都是树形结构
4、资源可以直接赋给角色,也可以赋给用户,用户的优先级较高

对应于那个帖子里的问题:
1、部门可以看做用户组也可以看做角色,为了性能,可以忽略角色的存在
2、文件、文件夹无非就是资源的一种特殊形态
3、整个结构,没有什么特别的地方。或许,性能有问题,但,逻辑关系就这些,仅此而已

红萝卜 | 园豆:240 (菜鸟二级) | 2015-12-10 13:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册