zoukankan      html  css  js  c++  java
  • 项目功能介绍 非常有用

    1. 简单介绍下你做过的项目

      该项目是一个B2B2C的线上电子商务项目,主要分为面向用户的前台系统面向商家的商家平台面向运营的运营管理平台系统的前端采用Angularjs和Bootstrap框架后端采用SSM框架使用Maven管理,全后端均采用MVC的设计模式,整体是面向服务SOA架构。列举商家入驻这一功能,首先需要在商家平台上编写入驻申请的相关代码,在做添加操作的时候将商家表中的status字段设置为0(代表该商家未审核)。在运营商平台的商家管理模块中有商家列表选择功能,这个商家列表上有一个商家状态options,点击下拉列表未审核状态可以查询所有商家表中status字段为0的商家,在点击审核通过的时候通过angular绑定model数值为1,然后通过ng-click点击方法执行前端控制层调用前端服务层方法的逻辑,将商家id和model数值1作为参数传入后端控制器,通过实现Spring Security的认证管理器,在实现类中注入商家服务完成对商家角色和status字段的修改,以及对商家登录密码的加密,使用BCrypt算法

    2. 商品录入功能是怎么实现的?

      只有商家申请状态是通过的才可以有商品录入的功能

      商品录入需要涉及八张表,其中模板表关联规格表和品牌表商品分类表,商家SKU表和SPU表和它们的详情表。在商品录入选择分类的时候通过模板ID相应的读取规格和品牌并使用ng-options展示,根据模板表来对SKU和SPU进行存储。其中,SKU存储商品的标题,卖点,价格,库存数,创建时间等信息,SPU主要存储商品的状态,品牌,副标题,三级类目录,图片,规格ID等信息,SPU还提供一个is_default字段表示是否是SPU的默认SKU。

    3. 分页在项目中是怎么实现的?

      分页是最常用的功能之一,因为数据不可能一次读取和展示。公司提供了分页的接口,只需要将当前页结果和总记录作为参数传递就可以得到当前页结果列表。主要是通过angular的pagination组件mybatis的pageHelper插件来实现的。

      1. 可以介绍下Spring Security吗?     

      2. 拦截的页面有 支付   不拦截的搜索 购物车 登录 
      3. web.xml配置安全拦截器对登录拦截之后 通过xml的user标签对用户名和密码进行认证 查询数据库  
      4. 登录成功后 再通过realm对用户进行权限认证.  权限因为不总发生改变 因此将权限数据 保存在缓存中
    4. Spring Security是Spring平.台提供的声明式的安全访问控制框架

      声明式的意思就是如果公司做活动,负责人只需要通知HR去买道具就可以了。在框架上的表现就是通过xml配置页面拦截规则和认证管理器。比如需要一个退出登录的功能,只需要在xml中添加logou标签,然后在a标签中使用'../logout'就可以退出了。如果是访问一个静态资源而没有在xml中设置的话会报重定向过多的错误。

      在项目中通过实现自定义认证类重写对应方法获取用户信息回调函数,在函数中通过赋予用户角色来指定用户的访问权限

    5. 系统中存在大量的图片你们是怎么处理的?

      使用了fastDFS分布式文件系统对项目中的图片进行了处理,fastDFS是用c语言编写的为互联网量身定制的分布式文件系统

      公司封装了FastDFS的文件上传下载的方法,只需要将文件信息,比如文件全路径扩展名等作为参数传递就可以了。

      需要注意的是,angular对于get/post请求默认的content-type是application/json,所以需要在js中设置content-type为默认,这样浏览器会自动将content-type设置为multipart/form-data

    6. 你在redis在项目中的具体应用是怎样的?

      redis在项目中被大量使用到了,比如网站前台的广告,购物车,商品规格品牌,秒杀活动等等。主要是操作hash,使用redistempelate.boundsHashOps().put()设置缓存,get()获取缓存,delete()清除缓存。

    7. solr在项目中的使用。

      搜索服务是电商的核心服务之一,可以比较精准的定位想要的商品,如果使用自带的搜索功能,那么沉重的数据库加载会拖垮应用的性能。解决方案就是将搜索转移到一个外部搜索服务器

      通过solrhome的schema.xml文件配置于数据库中需要搜索的字段于solr域对应的方式实现搜索业务,使用复制域解决商品搜索时既需要从商品描述域也要从商品标题中搜索的情况(如果不使用复制域就要发送两次搜索请求),配置动态域的方式处理商品表中存储的规格需要根据商品分类动态读取时的问题

      商品搜索数据的动态导入是通过actionMQ实现的,就是通过jmsTemplate.send()方法发送封装的消息(list->string),创建MessageListener实现类,重写onMessage方法在方法中将得到的消息转换(string->list),最后使用solrTemplate.saveBeans()方法对数据进行导入并commit()。为什么需要做转换?是因为actionMQ消息类型不支持list

    8. 了解微服务吗?

      微服务是最近出现的一个概念,就是一些项目随着时间的推移,项目本身越来越复杂,像微信小程序就是移动APP上的微服务。

      Spring Boot就是WEB上的小程序,它解决了A框架中存在Cjar,B框架中也存在Cjar,并且它们的Cjar版本不一致导致的兼容性问题,还提供了热部署。项目中的短信服务就是一个微服务主要提供短信发送验证等功能,使用Spring Boot、actionMQ和阿里大于完成。

    9. 商品秒杀业务是怎么完成的。 秒杀业务是比较好的redis实现场景,例如秒杀的倒计时在redis中可以通过设置key的超时时间轻松完成。 在活动开始的时候通过读取商品详情信息缓存服务器,以数据库中的时间为准,通过Spring Task的cron表达式每秒查询过期商品,当用户点击抢购时减少缓存中的库存数量,产生的秒杀订单不会立即写到数据库,只有当用户付款成功才会写到数据库,库存数为0或者活动时间结束的时候同步到数据库中

    10. 你有什么要问我的吗?

      一般最后面试官会给你机会提出问题,千万不要说没有问题,这会让人觉得你对这次面试不重视。可以根据具体公司提出具体的问题,比如在传统行业就可以询问一些福利向的问题,在互联网行业就可以询问技术向的问题。一般都可以这么问:这个职位需要的能力您认为我还有什么不足吗?这是面试结果比较糟糕时候的问法;如果觉得面试很有把握拿到Office,那么就可以问公司技术人员的配置和主要使用什么技术。总之,原则就是诚恳,真挚,尊重和投入,切忌问的问题不要太LOW,尽量问一些需要面试官思考才能回答的问题或者与自己切身利益相关的问题。

  • 相关阅读:
    Laravel kalnoy/nestedset
    Eloquent Subquery Enhancements in Laravel 6.0
    Laravel 6.0 中更加强劲的子查询
    Es6系列之module and class
    Using Laravel's Bootable Eloquent Traits
    Google Chrome Shortcut Keys
    另辟蹊径:vue单页面,多路由,前进刷新,后退不刷新
    docker-machine 创建主机的缺省密码 (Default User and Password)
    eslint Cannot read property 'range' of null错误( Quasar Doc )$ quasar dev 出错
    java比较排序Comparable和Comparator
  • 原文地址:https://www.cnblogs.com/shan1393/p/9406839.html
Copyright © 2011-2022 走看看