Java 面试题
目录

Java 中请设计一个短链接系统。

· 约 4 分钟读完 · 第 241 / 274 章

推荐答案

本题详细解读

1. 系统设计思路

短链接系统的核心是将一个长的URL映射到一个短的URL上。这个映射关系需要存储在内存或数据库中,以便后续可以通过短URL快速找到原始的长URL。

2. 数据结构选择

  • HashMap:用于存储短URL和长URL之间的映射关系。HashMap的查找和插入操作的时间复杂度为O(1),非常适合这种场景。
  • Random:用于生成随机的短URL字符串。

3. 短URL生成算法

  • Base62编码:使用0-9、A-Z、a-z共62个字符来生成短URL。这样可以保证生成的短URL尽可能短且唯一。
  • 随机生成:通过随机生成6个字符的字符串作为短URL。如果生成的短URL已经存在,则重新生成,直到找到一个唯一的短URL。

4. 主要方法

  • generateShortUrl(String longUrl):生成一个短URL,并将其与长URL的映射关系存储在HashMap中。
  • getLongUrl(String shortUrl):根据短URL查找对应的长URL。
  • generateRandomString(int length):生成指定长度的随机字符串。

5. 扩展性考虑

  • 持久化存储:在实际应用中,可能需要将URL映射关系存储在数据库中,以便系统重启后数据不丢失。
  • 分布式系统:在高并发场景下,可能需要使用分布式缓存或数据库来存储URL映射关系,以提高系统的性能和可扩展性。
  • URL校验:在生成短URL之前,可以对长URL进行校验,确保其格式正确且有效。