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