你好,请告诉我,谁遇到过。在最近的一次工作面试中,有人问了我一个问题。有一个数据库,只能同时打开 500 个连接。如果第 501 个用户敲击数据库,那么事实证明他必须等待某个连接关闭。也就是说,需要一个缓存实现,其中,根据某种逻辑(例如,考虑到最后一次请求数据库的时间),存储和删除对象。问题:需要借助什么数据结构来描述这个缓存可以实现吗?实际上,我已经给出了答案,他们说这是一个典型的案例,任何使用过数据库的人都遇到过这个问题,应该知道解决方案。而且我是一名大三学生,当然,在我喜欢的项目中根本没有提出这样的问题。正确答案:我们需要两个数据结构——一个映射和一个链表,在map中,key是存储对象的一些逻辑(比如最后一次请求的时间),value是指向对象的链接,对象本身存储在链表中。但问题是我对这个解决方案不是很了解,比如链表是什么?))我马上说只有一个map的选项,但是他们说错了,他们说这里需要两个数据结构。也就是说,我想咨询一下,也许有人在实践中遇到过类似的情况,并且您了解面试官想从我这里听到什么,在这种情况下正确的决定是什么。
主要思想是有一个键所在的映射——关系的值和一个队列来跟踪键的最后一次使用。实现队列的选项之一是链表。
当然,这不是制作缓存的唯一方法,但它很容易实现。
更新:
在工作项目中,您应该使用现成的解决方案,并且永远不要自己编写缓存。