面试问题总结1

  1. sql语句: like后面是否可以加索引?
    【答案】大部分情况不使用
    全文检索一般使用索引(全文检索本质是查询的索引)
    而数据库中并不是所有的字段都建立的
  2. 咱们单点登录模块中,别人伪造我们cookie中的token怎么办?
    【答案】服务端是无法阻止伪造cookie的,如果对安全性要求高的话使用cas框架
  3. 第一个是当两个客户同时买一件商品时库存只有一个了,怎么控制?
    【答案】使用mysql的行锁机制,实现乐观锁,在更新商品之前将商品锁定,其他用户无法读取,当此用户操作完毕后释放锁。当并发量高的情况下,需要使用缓存工具例如redis来管理库存
  4. 同一账号以客户端登录怎么挤掉另一端。
    【答案】用户登录后需要在Session中保存用户的id。当用户登录时,从当前所有的Session中判断是否有此用户id的存在,如果存在的话就把保存此用户id的Session销毁
  5. 订单表的数据量太大,我把订单分到许多表中,那么我我想用一条sql查处所有的订单,怎么解决?
    【答案】分库情况下:可以使用mycat数据库中间件实现多个表的统一管理。虽然物理上是把一个表中的数据保存到多个数据库中,但是逻辑上还是一个表,使用一条sql语句就可以把数据全部查询出来
  6. 安全性问题(别的网站使用爬虫技术爬你的网站怎么办?有没有安全措施)
    【答案】单位时间内请求次数超过某个阈值就让输入验证码,可以极大降低抓取的速度,如果多次超过某个阀值可以加入黑名单。还有就是页面内容使用json返回,数据经常变一变格式,或者js动态生成页面内容
  7. 单点登录,http无状态的,别人模仿如何在后端处理
    单点登录的核心是如何在多个系统之间共享身份信息
    单点登录是解决在同一个公司内部多个互信网站之间进行跳转时不需要多次登录,多个系统统一登录入口
    【答案】使用https协议
  8. .单点登录系统,如果cookie禁用,你们怎么解决?
    【答案】如果禁用cookie可以使用url中带参数,把token传递给服务端。当然此方法涉及安全性问题,其实在cookie中保存token同样存在安全性问题。推荐使用sso框架CAS实现单点登录
  9. 当被问到某个模快存在安全性问题(sso单点登录系统)时,如何回答?
    【答案】目前商城的sso系统的解决方案中直接把token保存到cookie中,确实存在安全性问题。但是实现简单方便。如果想提高安全性可以使用cas框架实现单点登录
  10. redis为什么可以做缓存?项目中使用redis的目的是什么?redis什么时候使用?
    【答案】
    1.Redis是key-value形式的nosql数据库。可以快速的定位到所查找的key,并把其中的value取出来。并且redis的所有的数据都是放到内存中,存取的速度非常快,一般都是用来做缓存使用。
    2.redis缓存可减轻数据库的压力,提高存取的效率
    3.在互联网项目中只要是涉及高并发或者是存在大量读数据的情况下都可以使用redis作为缓存。当然redis提供丰富的数据类型,除了缓存还可以根据实际的业务场景来决定redis的作用。例如使用redis保存用户的购物车信息、生成订单号、访问量计数器、任务队列、排行榜等。
  11. 秒杀抢购库存解决方案
    【答案】把商品的数量放到redis中,秒杀时使用decr命令对商品数量减一
    如果不是负数说明抢到,一旦返回数值变为0说明商品已售完
  12. 电商活动倒计时方案
    确定一个基准时间(使用一个sql语句从数据库中取出当前时间。SELECT NOW();
    活动开始的时间是固定的)
    使用活动开始时间-基准时间可以计算出一个秒为单位的数值。
    在redis中设置一个key(活动开始标识)。设置key的过期时间为第三步计算出来的时间。
    展示页面的时候取出key的有效时间。Ttl命令。使用js倒计时。
    一旦活动开始的key失效,说明活动开始。
    需要在活动的逻辑中,先判断活动是否开始
  13. 如果用户一直添加购物车添加商品怎么办?并且他添加一次你查询一次数据库?互联网上用户那么多,这样会对数据库造成很大压力你怎么办?
    当前我们使用cookie的方式来保存购物车的数据,所以当用户往购物车中添加商品时,并不对数据库进行操作。将来把购物车商品放入redis中,redis是可以持久化的可以永久保存,此时就算是频繁的往购物车中添加数据也没用什么问题

@@ 问题 @@
12. activeMQ如果数据提交不成功怎么办?
Activemq有两种通信方式,点到点形式和发布订阅模式。如果是点到点模式的话,如果消息发送不成功此消息默认会保存到activemq服务端知道有消费者将其消费,所以此时消息是不会丢失的。
如果是发布订阅模式的通信方式,默认情况下只通知一次,如果接收不到此消息就没有了。这种场景只适用于对消息送达率要求不高的情况。如果要求消息必须送达不可以丢失的话,需要配置持久订阅。每个订阅端定义一个id,在订阅是向activemq注册。发布消息和接收消息时需要配置发送模式为持久化。此时如果客户端接收不到消息,消息会持久化到服务端,直到客户端正常接收后为止

  1. activeMQ在项目中如何应用的?
    Activemq在项目中主要是完成系统之间通信,并且将系统之间的调用进行解耦。例如在添加、修改商品信息后,需要将商品信息同步到索引库、同步缓存中的数据以及生成静态页面一系列操作。在此场景下就可以使用activemq。一旦后台对商品信息进行修改后,就向activemq发送一条消息,然后通过activemq将消息发送给消息的消费端,消费端接收到消息可以进行相应的业务处理

  2. acitveMQ的作用、原理?(生产者。消费者。 p2p、订阅实现流程)
    Activemq的作用就是系统之间进行通信。当然可以使用其他方式进行系统间通信,如果使用Activemq的话可以对系统之间的调用进行解耦,实现系统间的异步通信。原理就是生产者生产消息,把消息发送给activemq。Activemq接收到消息,然后查看有多少个消费者,然后把消息转发给消费者,此过程中生产者无需参与。消费者接收到消息后做相应的处理和生产者没有任何关系

  3. dubbo服务开发流程,运行流程?zookeeper注册中心的作用?
    使用流程:
    第一步:要在系统中使用dubbo应该先搭建一个注册中心,一般推荐使用zookeeper。
    第二步:有了注册中心然后是发布服务,发布服务需要使用spring容器和dubbo标签来发布服务。并且发布服务时需要指定注册中心的位置。
    第三步:服务发布之后就是调用服务。一般调用服务也是使用spring容器和dubbo标签来引用服务,这样就可以在客户端的容器中生成一个服务的代理对象,在action或者Controller中直接调用service的方法即可。
    Zookeeper注册中心的作用主要就是注册和发现服务的作用。类似于房产中介的作用,在系统中并不参与服务的调用及数据的传输

16.支付接口是怎么做的?
面试中可以说支付这部分不是我们做的,我们项目中并没有涉及支付部分的处理。如果想了解支付是如何实现可以参考之前学过的易宝支付相关处理以及支付宝、微信支付相关文档。
支付宝:
https://doc.open.alipay.com/doc2/apiDetail.htm?spm=a219a.7629065.0.0.eeTXH8&apiId=850&docType=4#
微信支付:
https://mp.weixin.qq.com/cgi-bin/readtemplate?t=business/faq_tmpl

  1. 商品存入数据库怎么保证数据库数据安全?
    1)对用户安全管理
    用户操作数据库时,必须通过数据库访问的身份认证。删除数据库中的默认用户,使用自定义的用户及高强度密码
    2)定义视图
    为不同的用户定义不同的视图,可以限制用户的访问范围。通过视图机制把需要保密的数据对无权存取这些数据的用户隐藏起来,可以对数据库提供一定程度的安全保护。实际应用中常将视图机制与授权机制结合起来使用 ,首先用视图机制屏蔽一部分保密数据,然后在视图上进一步进行授权
    3)数据加密
    数据加密是保护数据在存储和传递过程中不被窃取或修改的有效手段
    4)数据库定期备份
    5)审计追踪机制
    审计追踪机制是指系统设置相应的日志记录,特别是对数据更新、删除、修改的记录,以便日后查证。日志记录的内容可以包括操作人员的名称、使用的密码、用户的IP地址、登录时间、操作内容等。若发现系统的数据遭到破坏,可以根据日志记录追究责任,或者从日志记录中判断密码是否被盗,以便修改密码,重新分配权限,确保系统的安全

  2. 插入商品的话,要求级联插入几张表,你们当时是怎么实现的?
    mybatis框架的逆向工程可以根据表关系生成对象和映射表关系,
    插入级联表时候,将数据封装到对象直接保存对象即可,

  3. 支付接口是怎么做的?
    接口参数,如商品名称、金额等,并通过约定的加密方式及密钥进行加密处理,将以 FORM表单POST或GET的方式发送给支付公司提供的支付网关URL。
    接口对接时,商城需要提供回调地址,由于接受支付返回的信息,要确保回调地址能正 常接受通知

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值