如何将发给用户的链接缩短为短链接?

#你遇到最难的面试题目是_#
第一次面试遇到场景题,也是头脑风暴了半天,想到使用算法将长链接转化为短的,放入一个映射关系中。
后面又问如何存放,我说使用redis
问:为何用redis 不用mysql。
回答:我觉得mysql数据库更适合存放有结构的数据,而这种k v的,redis更适合一些。
感觉面试官不太满意哈哈哈
全部评论
生成哈希算法感觉可以模仿hashmap的算法,将链接的字符按二进制展开,二分为高低位进行与运算混合信息,然后再用字符流解析回来为短链。 然后引入redis作为系统缓存热门链接,但是感觉这个系统几乎是完全的CPU密集型程序,所以感觉QPS单机承受能力很大?如果是单机服务的话就直接用caffeine本地缓存,链接数据小,且大部分时候就几个热门链接(下片)被频繁访问,而且链接也是读多写少甚至写一次就不会改,感觉本地缓存效果更好。然后就是MySQL保证服务正常,存储数据,缓存提速
1 回复 分享
发布于 09-07 15:15 广东
1.你说用一个算法把长链接转换为短链接,其实就是使用一个哈希算法就可以实现,但哈希算法就肯定会遇到哈希冲突的问题,所以关于哈希冲突的解决方法(a.更换哈希函数,b.取哈希值的不同位置)你肯定还是需要回答到的。 2.如果用redis作为一个存储的数据库的话,因为redis的持久化机制和主从切换导致的数据丢失你有考虑到吗?所以这种情况直接使用数据库是更好的选择,如果说你是想引入redis作为一个加速查询的作用的话,那么使用旁路缓存模式会是一个比较好的实现方式
点赞 回复 分享
发布于 08-27 13:09 广西
你这回答。。。小学生水平
点赞 回复 分享
发布于 08-01 10:52 广东
哈哈哈哈哈哈
点赞 回复 分享
发布于 08-01 10:51 四川
这么回答,感觉也没啥大问题
点赞 回复 分享
发布于 07-31 15:53 北京

相关推荐

评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务