项目二业务逻辑整理 很是有用

1.项目周期?html

答:传智所学项目的业务逻辑不够复杂,模块也很少,因此建议项目周期为5-8个月。前端

2.项目团队有多少人,如何分配的?java

答:项目团队通常由6-10我的组成,4-5我的是java后台的,1-2个是前端,2个产品。mysql

3.在项目中充当什么样的角色?web

答:在项目中的职位是组员或者组长,主要负责开发功能模块,后期配合测试修改bugajax

看工做时间与入职的时间,在一家公司入职时间少于1年而且从事开发少于2年不多有机会担任小组领导redis

4.项目中遇到的最大的问题是什么?spring

答:这种问题不要说通常的错误,尽可能说业务上的问题。例如:单点登陆的时候如何解决多系统之间用户登陆信息同步以及用户信息共享;登陆须要发送短信验证码的时候如何保证消息到达率是100%;如何实现redis与数据库信息同步;开发环境程序正常,生产环境程序bugsql

等。数据库

5.如何保证所负责与需求相符合?

答:在作模块以前,与产品经理肯定好需求,再与项目负责人肯定好技术选型应用,在开发过程当中遇到业务问题与产品经理和项目负责人及时沟通。

6.你以为作商品模块(首页展现、轮播图、购物车、单点登陆、订单)时的难点在哪里?

答:商品模块:添加或者修改商品时,数据库、redis、静态页面如何同步信息。

购物车:添加的商品数量与库存数量的对比。商品价格变更同步。购物车的存储。

单点登陆:如何进行多系统之间的信息交互。(主要指验证登陆信息 )子系统如何保证登陆信息的安全。

订单:商品数量与库存的同步,商品价格的准确性。提交订单的方式,如何验证订单。

7.所负责模块里有哪些功能?(不要上来就说增删改查)

答:商品模块的功能:添加商品时,商品图片的上传以及存储,商品价格确保准确性,商品的上下架。也能够简单介绍下查询的各类条件或删除的各类条件。以及商品信息同步(数据库、redis、静态页面等),商品id的生成规则。

8.在项目开发过程当中遇到不会的功能是如何处理的?

答:技术问题:首先是谷歌,在网上查看各类资料以及博客。其次是与同事交流。最后再去找领导。

业务问题:业务问题首先找经理沟通,技术问题首先google百度

9.项目中前台与后台是如何进行数据交互的?

答:ajaxhttp请求,socket

10.如何实现数据库与redis同步?

答:用消息队列mq实现。具体操做是在添加或者修改数据的时候,用mq来同步到数据库与redis加上事务,确保reids与数据库数据一致。

11.在项目开发过程当中还有哪些工做内容?

答:与项目经理去客户公司肯定用户需求,与同事配合完成单元测试,与测试人员配合完成测试并修改bugbug提交

12.项目共有多少张表?所作模块用到多少张表?表与表之间的关系?

答:180-220(选一个具体数值)。

商品模块:商品表,库存表,品牌表,分类表,商品详情表,规格表,图片表,商品排序表,商品筛选表,图片资源类型表,图片资源表,商品日志表,晒单图片说明表。

购物车:商品表,品牌表,分类表,库存表,用户表,库房表,购物车表,购物项表,优惠券表,商品推荐表。

订单:订单表,用户表,用户地址表,商品表,品牌表,分类表,库存表,库房表,地区表,物流信息表。

登陆(后台):用户表,权限表,角色表,用户角色表,权限角色表,日志表。

13.插入商品的话,要求级联插入几张表,大家当时是怎么实现的?

答:商品表,商品详情表,库存表,图片表,日志表。

14.项目中用的注解开发仍是手动注入?分别如何实现?为何?

答:注解开发,在类、属性、方法上写注解。由于项目中须要配置的太多,用注解能够简化开发。

15.错误日志的处理?项目中的日志文件存在哪里?保存多长时间?

答:看日志大小存放, 通常是15天或者30天。存放在一个单独的服务器目录。

16.生产环境与开发环境在上线部署的时候应该如何配置?

答:生产环境:

1、上线以前备份以前的项目

2、修改上线项目的相关配置

3、关停服务

4、替换以前的项目

5、启动服务,观察日志,是否异常

17.开发时数据库中数据从哪来?数据量有多大?

答:开发时数据库数据部分来自客户或者运营,部分本身添加,部分来自网络爬虫扒的数据。

18.如何保证库存?

答:用mq+redis

19.若是日志存储量过大如何处理?

答:按期清除日志,日志通常存放在另外一台服务器上15-30天清理一次。

20.在项目开发过程当中如何进行测试?压力测试如何作?

答:对本身所负责模块进行单元测试,而后交给公司测试人员进行测试。通常压力测试都是测试人员作,Visual Studio 自带的工具,还有Loader RunnerLR),轻量级的工具备Apache项目中的ApacheBench

21.项目的并发量有多大?用了多少台服务器?

答:并发量500-1000,服务器数量通常是10-20台左右,具体数量看图

 

22.在项目中,是如何分配开发任务的?

答:开会时,由项目经理与组长分配到我的须要负责开发的功能模块。

23.项目中的技术选型的依据是什么?

答:1.什么技术更适合当前项目的业务需求,例如互联网项目查询条件比较多,数据库框架选用mybatis;传统项目查询条件比较单一,选用hibernate比较合适。

2.若是两个技术都适用于项目,就看架构师更熟悉哪一个技术,由于若是大部分开发人员都不会,企业会负担很高的学习成本。

24.项目的安全问题是如何解决的?

答:单点登陆用token来校验。或者能够说有专门负责项目安全的人员。或者说花钱买服务。

环境安全:初期经过购买云服务

程序安全;token +签名

25.用户分为几种?每种所对应的权限?权限具体是如何实现的?

答:通常后天项目中普通用户、普通管理员、超级管理员。用shiro框架具体实现。

普通用户:访问普通管理员:管理后台信息超级管理员:全部权限。

26.电商项目是否上线?用户量有多少?

答:能够说上线(找一个地方性的小型电商网站)或者测试没有完成,项目尚未上线。能够说用户量有日活量:几千。

27.商品的属性是如何进行存储的?

答:须要存储到商品表,商品详情表,库存表,日志表等。

28.工做之余有没有在研究一些流行的技术?

答:有,再看一些技术博客。好比说跨域,如何解决高并发,不一样系统之间的通讯。

29.在项目中如何实现页面跳转并把当前页面数据传递到跳转页面?

答:把要传递的数据放在request域中(转发)。

30.所负责模块的查询都有那些条件?那些是静态条件、哪些是动态条件?

答:商品的价格区间,商品的品牌,商品的分类,型号,颜色,大小,男/女,商品名称。

静态条件:商品的价格区间,商品的品牌,商品的分类,型号,颜色,大小,男/

动态条件:商品名称,商品类型

31.所负责模块中删除数据的时候直接删除就能够么?若是不是须要作哪些操做?

答:若是单表的能够进行逻辑删除,不会进行物理删除。级联删除,删除该条数据不影响到其余表中的数据就能够直接删除,不然要进行级联删除,这里也是指的逻辑删除。

32.支付是如何作的?

答:与支付宝、微信对接,下载它们两个的SDKjar包),须要配置公钥与私钥,进行对接,根据官方文档的API调用相关支付的借口接收回调信息(成功或失败)。进一步作本身的业务逻辑操做

33.表是如何设计的?

:能够说是项目经理或者架构师设计的。本身所负责模块能够根据项目需求来设计有哪些字段,须要关联到哪些表。尽可能推行单表设计,不定义外键约束。

34.面向服务经过什么样的方式实现?

答:soa架构,表现层与服务层分离,用dubbozookeeper搭配完成。

35.如何提升代码质量?在项目中如何优化代码?

答:尽可能减小没必要要的操做,尽可能不要用到三层以上的for循环与递归。写代码的时候要给关键代码写上注释。相同功能的代码进行抽取,抽取原则不影响功能的正常运行。

36.商品的审核如何作的?

答:添加或者修改,商品的价格以及库存等重要信息要进行二次填写,以保证准确率。

前台js校验,后台java代码校验。

37.在项目中如何调试bug

答:1.dug方式运行项目,打断点调试。2.查看项目中的错误日志。3.测试人员使用专业测试工具进行测试。4.运行脚本对代码进行测试。

38.查询商品的时候若是redis没有数据,能够抛异常么?若是不能够如何作?

答:不能够用throws抛异常,能够用trycatch捕获异常。由于在redis中查询不到数据,还要对数据库进行查询,若是throws抛异常则不能按正常业务运行。

39.购物车如何实现的?未登陆能够用购物车么?购物车的存储?

答:购物车有三种。1.存放在Cookie2.放在缓存里面。3.放到数据库里面。

未登陆的时候能够放在cookie中,可是有的电商网站针对未登陆用户不提供购物车功能。(例如天猫、淘宝添加商品到购物车的时候必须先登陆)

40.购物车里面商品种类能够无限添加么?同一种商品的数量有限制么?

答:不能够,京东最多只能够添加八十种(足够使用了),避免占用太多存储空间;商品数量根据商品类型来控制,通常不超过200种。

41.若是库存数量少于购物车用户添加的数量如何处理?

答:每次用户访问购物车的时候,都发送ajax请求查询一遍redis或者数据库,若是存库数量少于购物车中商品数量,发送消息进行提示,并作相应修改。

42.生成订单具有的条件?如何保证这些条件?

答:商品数量不能超过限制数量和库存数量。限制数量在前台用js校验,后台查询数据库校验库存。

 

43.首页展现的轮播图,在页面中是如何存放的?在数据库中是如何存放的?

答:页面中存放的是图片地址,在数据库中存放的也是图片的地址。图片存放在另外一台服务器上面。

44.用户地址是如何保存实现的?(具体)

答:用户的地址是单独存放在一张数据库表中的,须要绑定用户的id,还须要设置默认路径。

45.在电商项目中如何针对不一样的用户作推送?

答:对用户的浏览内容作一下记录,而后在页面的下方或者右方作商品的推送。还有一种就是针对用户购物车或者关注商品作促销信息推送  

46.如何迁移数据库(mysql)?

答:这里介绍的是mysql数据库,若是被问到其余的能够说只知道mysql的。

1.数据库直接导出,拷贝文件到新服务器,在新服务器上导入。

2.使用【MySQL GUI Tools】中的 MySQLMigrationTool

3.数据文件和库表结构文件直接拷贝到新服务器,挂载到一样配置的MySQL服务下。

我在个人电脑上用虚拟机测试后,选中了占用时间最少的第三种方案。下面是三种方案的对比:第一种方案的优势:会重建数据文件,减小数据文件的占用空间。
      第一种方案的缺点:时间占用长。(导入导出都须要很长的时间,而且导出后的文件还要通过网络传输,也要占用必定的时间。)

  第二种方案的优势:设置完成后传输无人值守
     第二种方案的缺点:设置繁琐。传输中网络出现异常,不能及时的被发现,而且会一直停留在数据传输的状态不能被中止,如不仔细观察不会被发现异常。 传输相对其余fang时间长。 异常后很难从异常的位置继续传输。

   第三种方案的优势:时间占用短,文件可断点传输。操做步骤少。(绝大部分时间都是在文件的网络传输) 
     第三种方案的缺点:可能引发未知问题,暂时未发现。

47.服务器宕机如何处理?所有宕机如何处理?

答:配置主从服务器,运维人员搭建集群后,从服务器会给主服务器发送信息,若是主服务器没有响应,那就启用从服务器。通常不会所有宕机,若是所有挂掉,就重启。

48.一件商品只有2件,如今被他人购买一件,这边如何修改当前用户的商品信息?

答:这个考察的是对库存的安全校验。商品上架多少 库存  讲库存缓存在redis    下单 就在redis  减小,异步 在库存数据库中也减小商品 查询只查询redis  中的  商品库存更新后 更新redis  库存;在用户点击添加到购物车按钮时,发送ajax查询redis

dubbo服务开发流程,运行流程?zookeeper注册中心的做用?端口是多少?

答:dubbo主要是发布服务和调用服务。

使用流程:

第一步:要在系统中使用dubbo应该先搭建一个注册中心,通常推荐使用zookeeper

第二步:有了注册中心而后是发布服务,发布服务须要使用spring容器和dubbo标签来发布服务。而且发布服务时须要指定注册中心的位置。

第三步:服务发布以后就是调用服务。通常调用服务也是使用spring容器和dubbo标签来引用服务,这样就能够在客户端的容器中生成一个服务的代理对象,在action或者Controller中直接调用service的方法便可。

Zookeeper注册中心的做用主要就是注册和发现服务的做用。相似于房产中介的做用,在系统中并不参与服务的调用及数据的传输。

 

 

49.******消息中间件acitveMQ的做用、原理?几种模式,每种的特色及使用问题?MQ发送消息失败怎么办?

答:Activemq的做用就是系统之间进行通讯。固然可使用其余方式进行系统间通讯,若是使用Activemq的话能够对系统之间的调用进行解耦,实现系统间的异步通讯。原理就是生产者生产消息,把消息发送给activemqActivemq接收到消息,而后查看有多少个消费者,而后把消息转发给消费者,此过程当中生产者无需参与。消费者接收到消息后作相应的处理和生产者没有任何关系。

Activemq有两种通讯方式,点到点形式和发布订阅模式。若是是点到点模式的话,若是消息发送不成功此消息默认会保存到activemq服务端知道有消费者将其消费,因此此时消息是不会丢失的。若是是发布订阅模式的通讯方式,默认状况下只通知一次,若是接收不到此消息就没有了。这种场景只适用于对消息送达率要求不高的状况。若是要求消息必须送达不能够丢失的话,须要配置持久订阅。每一个订阅端定义一个id,在订阅是向activemq注册。发布消息和接收消息时须要配置发送模式为持久化。此时若是客户端接收不到消息,消息会持久化到服务端,直到客户端正常接收后为止。

50.Tomcat集群中怎么实现共享

答:用dubbozookeeper配合来实现tomcat共享。

1,tomcat自身提供的session集群共享

2,编写tomcatsession插件对session进行存储

3,使用javaweb规范中的filterrequest对象的getSessio()进行拦截替换实现集群共享

51.前台作过静态页面么?Freemark如何生成静态页面?生成模板的命令?

答:作过。

第一步:建立一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。

第二步:设置模板文件所在的路径。

第三步:设置模板文件使用的字符集。通常就是utf-8.

第四步:加载一个模板,建立一个模板对象。

第五步:建立一个模板使用的数据集,能够是pojo也能够是map。通常是Map

第六步:建立一个Writer对象,通常建立一FileWriter对象,指定生成的文件名。

第七步:调用模板对象的process方法输出文件。

第八步:关闭流。

@Test

public void genFile() throws Exception {

// 第一步:建立一个Configuration对象,直接new一个对象。构造方法的参数就是freemarker对于的版本号。

Configuration configuration = new Configuration(Configuration.getVersion());

// 第二步:设置模板文件所在的路径。

configuration.setDirectoryForTemplateLoading(new File("D:/workspaces-itcast/term197/e3-item-web/src/main/webapp/WEB-INF/ftl"));

// 第三步:设置模板文件使用的字符集。通常就是utf-8.

configuration.setDefaultEncoding("utf-8");

// 第四步:加载一个模板,建立一个模板对象。

Template template = configuration.getTemplate("hello.ftl");

// 第五步:建立一个模板使用的数据集,能够是pojo也能够是map。通常是Map。

Map dataModel = new HashMap<>();

//向数据集中添加数据

dataModel.put("hello", "this is my first freemarker test.");

// 第六步:建立一个Writer对象,通常建立一FileWriter对象,指定生成的文件名。

Writer out = new FileWriter(new File("D:/temp/term197/out/hello.html"));

// 第七步:调用模板对象的process方法输出文件。

template.process(dataModel, out);

// 第八步:关闭流。

out.close();

}

 

52.什么是存储过程?好处?

答:存储过程能够说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法同样实现一些功能(对单表或多表的增删改查),而后再给这个代码块取一个名字,在用到这个功能的时候调用他就好了。

好处:1.因为数据库执行动做时,是先编译后执行的。然而存储过程是一个编译过的代码块,因此执行效率要比T-SQL语句高。2.一个存储过程在程序在网络中交互时能够替代大堆的T-SQL语句,因此也能下降网络的通讯量,提升通讯速率。3.经过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。

53.Shiro如何进行权限控制?

答:1.经过浏览器访问路径,配置文件查看,是否须要认证等,若是不须要,直接访问controller

2.若是须要认证,经过配置文件的loginUrl,跳到这个地址,输入用户名、密码等

3.登陆1.访问自定义的form表单过滤器FormAuthenticationFilter(本身起的名字和shiro同样了,因此。。)的createToken方法,装配token;若是没有自定义表单过滤器,默认的FormAuthenticationFilter会自动装配表单token2.访问自定义realms的认证方法doGetAuthenticationInfo(),查库(或者缓存),判断用户名和密码是否正确。

4.若是登陆以后访问的url,经过配置文件里的配置须要权限:调用自定义realms的受权方法:doGetAuthorizationInfo(),查库(或者缓存),查出用户权限,判断是否拥有权限,没权访问,跳到响应的refuse配置的路径,有权访问,跳到响应的url

54.solr的原理?分词器的原理?如何设置高亮显示?

答:Solr是基于Lucene开发的全文检索服务器,而Lucene就是一套实现了全文检索的api,其本质就是一个全文检索的过程。全文检索就是把原始文档根据必定的规则拆分红若干个关键词,而后根据关键词建立索引,当查询时先查询索引找到对应的关键词,并根据关键词找到对应的文档,也就是查询结果,最终把查询结果展现给用户的过程。

IK分析器的分词原理本质上是词典分词。如今内存中初始化一个词典,而后在分词过程当中逐个读取字符,和字典中的字符相匹配,把文档中的全部的词语拆分出来的过程。

55.秒杀功能可否与正常的商品购买放在同一台服务器上?

答:能够,可是尽可能不要这么作。由于秒杀商品,抢购的用户会比较多,并发量太高容易引发宕机,致使正常购买商品功能也不能正常使用,因此建议放在不一样服务器上。

56.redis是内存数据库,若是宕机了,如何解决数据丢失的问题?

答:方案一:redis拥有两种不一样形式的持久化方法,它们均可以用小而紧凑的格式将存储在内存中的数据写入硬盘:第一种持久化方法为时间点转储,转储操做既能够在“指定时间段内有指定数量的写操做执行”这一条件被知足时执行,又能够经过条用两条转储到硬盘中命令中的任何一条来执行;第二种持久化方法将全部修改了数据库的命令都写入一个只追加文件里面,用户能够根据数据的重要程度,将只追加写入设置为从不一样步、每秒同步一次或者每写入一个命令就同步一次。

方案二:使用redis集群。Redis实现了主从复制的特性:执行复制的从服务器会链接上主服务器,接受主服务器发送的整个数据库的初始副本;以后主服务器执行的写命令,都会被发送给全部链接着的从服务器去执行,从而实时地更新从服务器的数据集。由于从服务器包含的数据会不断地进行更新,因此客户端能够向任意一个从服务器发送读请求,以此来避免对主服务器进行集中式的访问。

57.商品存入数据库怎么保证数据库数据安全?

答:设置后台用户的权限,并对数据库修改作好记录(日志),保证责任到人。

58.项目中商品小图片点开后,单品页面是大图片,这些图片是如何处理的?

答:在小图片上设置链接,点击小图片后,加载大图片

62.项目中的网络安全是怎么作的?

答:设置防火墙,买服务。

63.solr优化怎么实现?

答:http://blog.csdn.net/kuyuyingzi/article/details/17651451

64concurrent这个包有什么特性?

答:http://blog.csdn.net/defonds/article/details/44021605/

相关文章
相关标签/搜索