面试(二)针对乐优项目提出问题

前言

本章主要讲述针对自己做的乐优商城项目,面试官可能会提出的一些问题

问题

1.你说你用了redis缓存,你redis存的是什么格式的数据,是怎么存的?

redis中存储的都是key-value格式的。

  • 拿商品数据来说,key就是商品id,value是商品相关信息的json数据。
  • 拿购物车来说,是一个双层Map,Map>,第一层key是用户id,第二层key是购物车id,值是购物车信息
2.你购物车存cookie里边 可以实现不登录就可以使用购物车 那么我现在没有登录把商品存购物车了 然后登录了 然后我换台电脑并且登录了还能不能看见我购物车的信息?如果看不到怎么做到cookie同步,就是在另外一台电脑上可以看到购物车信息

乐优商城现阶段使用的仅仅是把购物车的商品写入cookie中,这样服务端基本上没有存储的压力。但是弊端就是用户更换电脑后购物车不能同步。

注意:以下这部分是淘淘商城的回答
我们的乐优商城项目是把购物车信息保存在了客户端localStorage本地存储,未登录时可以查询到购物车(通过SpuID查询所有Sku)

打算下一步这么实现:当用户没有登录时向购物车添加商品是添加到cookie中,当用户登录后购物车的信息是存储在redis中的并且是跟用户id向关联的,此时你更换电脑后使用同一账号登录购物车的信息就会展示出来。

3.如果用户一直添加购物车添加商品怎么办?并且他添加一次你查询一次数据库?互联网上用户那么多,这样会对数据库造成很大压力你怎么办?

当前我们使用cookie的方式来保存购物车的数据,所以当用户往购物车中添加商品时,并不对数据库进行操作。将来把购物车商品放入redis中,redis是可以持久化的可以永久保存,此时就算是频繁的往购物车中添加数据也没用什么问题。

4.redis为什么可以做缓存?项目中使用redis的目的是什么?redis什么时候使用?
  • 1.Redis是key-value形式的nosql数据库。可以快速的定位到所查找的key,并把其中的value取出来。并且redis的所有的数据都是放到内存中,存取的速度非常快,一般都是用来做缓存使用。

  • 2.项目中使用redis一般都是作为缓存来使用的,缓存的目的就是为了减轻数据库的压力提高存取的效率。

  • 3.在互联网项目中只要是涉及高并发或者是存在大量读数据的情况下都可以使用redis作为缓存。当然redis提供丰富的数据类型,除了缓存还可以根据实际的业务场景来决定redis的作用。例如使用redis保存用户的购物车信息、生成订单号、访问量计数器、任务队列、排行榜等。

5.支付接口是怎么做的?

面试中可以说支付这部分不是我们做的,我们项目中并没有涉及支付部分的处理。如果想了解支付是如何实现可以参考之前学过的易宝支付相关处理以及支付宝、微信支付相关文档。

6.业务如何说?先说业务、说表、说具体实现?

先说总体的业务流程,然后再说具体业务的实现方法及使用的技术。最后说你在系统中负责的内容。不需要说表结构。

7.第一个是当两个客户同时买一件商品时库存只有一个了,怎么控制?

可以使用mysql的行锁机制,实现乐观锁,在更新商品之前将商品锁定,其他用户无法读取,当此用户操作完毕后释放锁。当并发量高的情况下,需要使用缓存工具例如redis来管理库存。

8.对数据库只是采用了读写分离,并没有完全解决数据库的压力,那么有什么办法解决?

如果数据库压力确实很大的情况下可以考虑数据库分片,就是将数据库中表拆分到不同的数据库中保存。可以使用mycat中间件。

9.商品存入数据库怎么保证数据库数据安全?
  1. 对用户安全管理 用户操作数据库时,必须通过数据库访问的身份认证。删除数据库中的默认用户,使用自定义的用户及高强度密码。

  2. 定义视图
    为不同的用户定义不同的视图,可以限制用户的访问范围。通过视图机制把需要保密的数据对无权存取这些数据的用户隐藏起来,可以对数据库提供一定程度的安全保护。实际应用中常将视图机制与授权机制结合起来使用,首先用视图机制屏蔽一部分保密数据,然后在视图上进一步进行授权。

  3. 数据加密 数据加密是保护数据在存储和传递过程中不被窃取或修改的有效手段。

  4. .数据库定期备份

  5. 审计追踪机制
    审计追踪机制是指系统设置相应的日志记录,特别是对数据更新、删除、修改的记录,以便日后查证。日志记录的内容可以包括操作人员的名称、使用的密码、用户的IP地址、登录时间、操作内容等。若发现系统的数据遭到破坏,可以根据日志记录追究责任,或者从日志记录中判断密码是否被盗,以便修改密码,重新分配权限,确保系统的安全。

你可能感兴趣的:(面试,项目)