电商⾯试题100问
项⽬周期?
答:项⽬周期为3-4个⽉。
项⽬团队有多少⼈,如何分配的?
答:项⽬团队⼀般由6-10个⼈组成,4-5个⼈是java后台的,1-2个是前端,2个产品。
在项⽬中充当什么样的⾓⾊?
答:在项⽬中的职位是组员或者组长,主要负责开发功能模块,后期配合测试修改bug。
看⼯作时间与⼊职的时间,在⼀家公司⼊职时间少于1年并且从事开发少于2年很少有机会担任⼩组领导
项⽬中遇到的最⼤的问题是什么?
答:这种问题不要说⼀般的错误,尽量说业务上的问题。例如:单点登录的时候如何解决多系统之间⽤户登录信息同步以及⽤户信息共享;登录需要验证码的时候如何保证消息到达率是100%;如何实现redis与数据库信息同步;开发环境程序正常,⽣产环境程序bug 等。
哈夫曼树只有一种吗如何保证所负责与需求相符合?
答:在做模块之前,与产品经理确定好需求,再与项⽬负责⼈确定好技术选型应⽤,在开发过程中遇到业务问题与产品经理和项⽬负责⼈及时沟通。
你觉得做商品模块(⾸页展⽰、轮播图、购物车、单点登录、订单)时的难点在哪⾥?
答:商品模块:添加或者修改商品时,数据库、redis、静态页⾯如何同步信息。
购物车:添加的商品数量与库存数量的对⽐。商品价格变动同步。购物车的存储。
单点登录:如何进⾏多系统之间的信息交互。(主要指验证登录信息)⼦系统如何保证登录信息的安全。inputbox函数为什么有不同输类型
订单:商品数量与库存的同步,商品价格的准确性。提交订单的⽅式,如何验证订单。
所负责模块⾥有哪些功能?(不要上来就说增删改查)
答:商品模块的功能:添加商品时,商品图⽚的上传以及存储,商品价格确保准确性,商品的上下架。也可以简单介绍下查询的各种条件或删除的各种条件。以及商品信息同步(数据库、redis、静态页⾯等),商品id的⽣成规则。
在项⽬开发过程中遇到不会的功能是如何处理的?
答:技术问题:⾸先是⾕歌,在⽹上查看各种资料以及博客。其次是与同事交流。最后再去领导。
业务问题:业务问题⾸先经理沟通,技术问题⾸先google百度
项⽬中前台与后台是如何进⾏数据交互的?
答:ajax,http请求,socket。
如何实现数据库与redis同步?
答:⽤消息队列mq实现。具体操作是在添加或者修改数据的时候,⽤mq来同步到数据库与redis,加上事务,确保reids与数据库数据⼀致。
在项⽬开发过程中还有哪些⼯作内容?
答:与项⽬经理去客户公司确定⽤户需求,与同事配合完成单元测试,与测试⼈员配合完成测试并修改bug,bug提交
项⽬共有多少张表?所做模块⽤到多少张表?表与表之间的关系?
答:180-220(选⼀个具体数值)。
商品模块:商品表,库存表,品牌表,分类表,商品详情表,规格表,图⽚表,商品排序表,商品筛选表,图⽚资源类型表,图⽚资源表,商品⽇志表,晒单图⽚说明表。
购物车:商品表,品牌表,分类表,库存表,⽤户表,库房表,购物车表,购物项表,优惠券表,商品推荐表。
订单:订单表,⽤户表,⽤户地址表,商品表,品牌表,分类表,库存表,库房表,地区表,物流信息表。
登录(后台):⽤户表,权限表,⾓⾊表,⽤户⾓⾊表,权限⾓⾊表,⽇志表。
插⼊商品的话,要求级联插⼊⼏张表,你们当时是怎么实现的?
答:商品表,商品详情表,库存表,图⽚表,⽇志表。
项⽬中⽤的注解开发还是⼿动注⼊?分别如何实现?为什么?
答:注解开发,在类、属性、⽅法上写注解。因为项⽬中需要配置的太多,⽤注解可以简化开发。
1.
错误⽇志的处理?项⽬中的⽇志⽂件存在哪⾥?保存多长时间?
答:看⽇志⼤⼩存放, ⼀般是15天或者30天。存放在⼀个单独的服务器⽬录。
1.
⽣产环境与开发环境在上线部署的时候应该如何配置?
答:⽣产环境:
1、上线之前备份之前的项⽬
2、修改上线项⽬的相关配置
3、关停服务
4、替换之前的项⽬
5、启动服务,观察⽇志,是否异常
1.
tcpip协议详解 第二版英文版
开发时数据库中数据从哪来?数据量有多⼤?
答:开发时数据库数据部分来⾃客户或者运营,部分⾃⼰添加,部分来⾃⽹络爬⾍扒的数据。
1.
如何保证库存?
答:⽤mq+redis。
1.
如果⽇志存储量过⼤如何处理?
答:定期清除⽇志,⽇志⼀般存放在另⼀台服务器上,15-30天清理⼀次。
1.
在项⽬开发过程中如何进⾏测试?压⼒测试如何做?
答:对⾃⼰所负责模块进⾏单元测试,然后交给公司测试⼈员进⾏测试。⼀般压⼒测试都是测试⼈员做,Visual
Studio ⾃带的⼯具,还有Loader
Runner(LR),轻量级的⼯具有Apache项⽬中的ApacheBench。
1.
项⽬的并发量有多⼤?⽤了多少台服务器?
答:并发量500-1000,服务器数量⼀般是10-20台左右,具体数量看图
{width=”6.393055555555556in”
height=”3.770138888888889in”}
1.
在项⽬中,是如何分配开发任务的?
答:开会时,由项⽬经理与组长分配到个⼈需要负责开发的功能模块。
1.
项⽬中的技术选型的依据是什么?
答:1.什么技术更适合当前项⽬的业务需求,例如互联⽹项⽬查询条件⽐较多,数据库框架选⽤mybatis;传统项⽬查询条件⽐较单⼀,选⽤hibernate⽐较合适。
2.如果两个技术都适⽤于项⽬,就看架构师更熟悉哪个技术,因为如果⼤部分开发⼈员都不会,企业会负担很⾼的学习成本。
1.
项⽬的安全问题是如何解决的?
答:单点登录⽤token来校验。或者可以说有专门负责项⽬安全的⼈员。或者说花钱买服务。
环境安全:初期通过购买云服务
程序安全;token +签名
1.
⽤户分为⼏种?每种所对应的权限?权限具体是如何实现的?
答:⼀般后天项⽬中普通⽤户、普通管理员、超级管理员。⽤shiro框架具体实现。
普通⽤户:访问。普通管理员:管理后台信息。超级管理员:所有权限。
1.
电商项⽬是否上线?⽤户量有多少?
答:可以说上线(⼀个地⽅性的⼩型电商⽹站)或者测试没有完成,项⽬还没有上线。可以说⽤户量有⽇活量:⼏千。
1.
商品的属性是如何进⾏存储的?
答:需要存储到商品表,商品详情表,库存表,⽇志表等。
1.
⼯作之余有没有在研究⼀些流⾏的技术?
大屏可视化css布局答:有,再看⼀些技术博客。⽐如说跨域,如何解决⾼并发,不同系统之间的通信。
1.
在项⽬中如何实现页⾯跳转并把当前页⾯数据传递到跳转页⾯?
答:把要传递的数据放在request域中(转发)。
1.
所负责模块的查询都有那些条件?那些是静态条件、哪些是动态条件?
答:商品的价格区间,商品的品牌,商品的分类,型号,颜⾊,⼤⼩,男/⼥,商品名称。
静态条件:商品的价格区间,商品的品牌,商品的分类,型号,颜⾊,⼤⼩,男/⼥
动态条件:商品名称,商品类型
1.
所负责模块中删除数据的时候直接删除就可以么?如果不是需要做哪些操作?
答:如果单表的可以进⾏逻辑删除,不会进⾏物理删除。级联删除,删除该条数据不影响到其他表中的数据就可以直接删除,否则要进⾏级联删除,这⾥也是指的逻辑删除。
1.
⽀付是如何做的?
答:与⽀付宝、对接,下载它 们两个的SDK(jar包),需要配置公钥与私钥,进⾏对接,根据官⽅⽂档的API,调⽤相关⽀付的借⼝,接收回调信息(成功或失败)。进⼀步做⾃⼰的业务逻辑操作。
1.
表是如何设计的?
答:可以说是项⽬经理或者架构师设计的。⾃⼰所负责模块可以根据项⽬需求来设计有哪些字段,需要关联到哪些表。尽量推⾏单表设计,不定义外键约束。
1.
⾯向服务通过什么样的⽅式实现?
答:soa架构,表现层与服务层分离,⽤dubbo和zookeeper搭配完成。
1.
如何提⾼代码质量?在项⽬中如何优化代码?
答:尽量减少不必要的操作,尽量不要⽤到三层以上的for循环与递归。写代码的时候要给关键代码写上注释。相同功能的代码进⾏抽取,抽取原则不影响功能的正常运⾏。
1.
商品的审核如何做的?
答:添加或者修改,商品的价格以及库存等重要信息要进⾏⼆次填写,以保证准确率。
前台js校验,后台java代码校验。
1.
在项⽬中如何调试bug?
答:1.以dug⽅式运⾏项⽬,打断点调试。2.查看项⽬中的错误⽇志。3.测试⼈员使⽤专业测试⼯具进⾏测试。4.运⾏脚本对代码进⾏测试。
1.
查询商品的时候如果redis没有数据,可以抛异常么?如果不可以如何做?
答:不可以⽤throws抛异常,可以⽤trycatch捕获异常。因为在redis中查询不到数据,还要对数据库进⾏查询,如果throws抛异常则不能按正常业务运⾏。
1.
购物车如何实现的?未登录可以⽤购物车么?购物车的存储?
答:购物车有三种。1.存放在Cookie。2.放在缓存⾥⾯。3.放到数据库⾥⾯。
未登录的时候可以放在cookie中,但是有的电商⽹站针对未登录⽤户不提供购物车功能。(例如天猫、淘宝添加商品到购物车的时候必须先登录)
1.
购物车⾥⾯商品种类可以⽆限添加么?同⼀种商品的数量有限制么?
答:不可以,京东最多只可以添加⼋⼗种(⾜够使⽤了),避免占⽤太多存储空间;商品数量根据商品类型来控制,⼀般不超过200种。1.
如果库存数量少于购物车⽤户添加的数量如何处理?
答:每次⽤户访问购物车的时候,都发送ajax请求查询⼀遍redis或者数据库,如果存库数量少于购物车中商品数量,发送消息进⾏提⽰,并做相应修改。
1.
⽣成订单具备的条件?如何保证这些条件?
答:商品数量不能超过限制数量和库存数量。限制数量在前台⽤js校验,后台查询数据库校验库存。
1.
⾸页展⽰的轮播图,在页⾯中是如何存放的?在数据库中是如何存放的?
答:页⾯中存放的是图⽚地址,在数据库中存放的也是图⽚的地址。图⽚存放在另⼀台服务器上⾯。
1.
⽤户地址是如何保存实现的?(具体)
答:⽤户的地址是单独存放在⼀张数据库表中的,需要绑定⽤户的id,还需要设置默认路径。
1.
在电商项⽬中如何针对不同的⽤户做推送?
答:对⽤户的浏览内容做⼀下记录,然后在页⾯的下⽅或者右⽅做商品的推送。还有⼀种就是针对⽤户购物车或者关注商品做促销信息推送。
1.
如何迁移数据库(mysql)?
答:这⾥介绍的是mysql数据库,如果被问到其他的可以说只知道mysql的。
1.数据库直接导出,拷贝⽂件到新服务器,在新服务器上导⼊。
2.使⽤【MySQL GUI Tools】中的 MySQLMigrationTool。
3.数据⽂件和库表结构⽂件直接拷贝到新服务器,挂载到同样配置的MySQL服务下。
我在我的电脑上⽤虚拟机测试后,选中了占⽤时间最少的第三种⽅案。下⾯是三种⽅案的对⽐:第⼀种⽅案的优点:会重建数据⽂件,减少数据⽂件的占⽤空间。\
第⼀种⽅案的缺点:时间占⽤长。(导⼊导出都需要很长的时间,并且导出后的⽂件还要经过⽹络传输,也要占⽤⼀定的时间。)
第⼆种⽅案的优点:设置完成后传输⽆⼈值守\
第⼆种⽅案的缺点:设置繁琐。传输中⽹络出现异常,不能及时的被发现,并且会⼀直停留在数据传输的状态不能被停⽌,如不仔细观察不会被发现异常。 传输相对其他fang时间长。 异常后很难从异常的位置继续传输。
第三种⽅案的优点:时间占⽤短,⽂件可断点传输。操作步骤少。(绝⼤部分时间都是在⽂件的⽹络传输)
第三种⽅案的缺点:可能引起未知问题,暂时未发现。
1.
服务器宕机如何处理?全部宕机如何处理?
答:配置主从服务器,运维⼈员搭建集后,从服务器会给主服务器发送信息,如果主服务器没有响应,那就启⽤从服务器。⼀般不会全部宕机,如果全部挂掉,就重启。
1.
⼀件商品只有2件,现在被他⼈购买⼀件,这边如何修改当前⽤户的商品信息?
答:这个考察的是对库存的安全校验。商品上架多少 库存 讲库存缓存在redis 中 下单 就在redis 减少,异步 在库存数据库中也减少商品
查询只查询redis 中的 商品库存更新后 更新redis 库存;在⽤户点击添加到购物车按钮时,发送ajax查询redis。
dubbo服务开发流程,运⾏流程?zookeeper注册中⼼的作⽤?端⼝是多少?
答:dubbo主要是发布服务和调⽤服务。
使⽤流程:
第⼀步:要在系统中使⽤dubbo应该先搭建⼀个注册中⼼,⼀般推荐使⽤zookeeper。
第⼆步:有了注册中⼼然后是发布服务,发布服务需要使⽤spring容器和dubbo标签来发布服务。并且发布服务时需要指定注册中⼼的位置。
第三步:服务发布之后就是调⽤服务。⼀般调⽤服务也是使⽤spring容器和dubbo标签来引⽤服务,这样就可以在客户端的容器中⽣成⼀个服务的代理对象,在action或者Controller中直接调⽤service的⽅法即可。
Zookeeper注册中⼼的作⽤主要就是注册和发现服务的作⽤。类似于房产中介的作⽤,在系统中并不参与服务的调⽤及数据的传输。
墨茶主播真人照片曝光1.
消息中间件acitveMQ的作⽤、原理?⼏种模式,每种的特点及使⽤问题?MQ发送消息失败怎么办?
答:Activemq的作⽤就是系统之间进⾏通信。当然可以使⽤其他⽅式进⾏系统间通信,如果使⽤Activemq的话可以对系统之间的调⽤进⾏解耦,实现系统间的异步通信。原理就是⽣产者⽣产消息,把消息发送给activemq。Activemq接收到消息,然后查看有多少个消费者,然后把消息转发给消费者,此过程中⽣产者⽆需参与。消费者接收到消息后做相应的处理和⽣产者没有任何关系。
Activemq有两种通信⽅式,点到点形式和发布订阅模式。如果是点到点模式的话,如果消息发送不成功此消息默认会保存到activemq服务端知道有消费者将其消费,所以此时消息是不会丢失的。如果是发布订阅模式的通信⽅式,默认情况下只通知⼀次,如果接收不到此消息就没有了。这种场景只适⽤于对消息送达率要求不⾼的情况。如果要求消息必须送达不可以丢失的话,需要配置持久订阅。每个订阅端定义⼀个id,在订阅是向activemq注册。发布消息和接收消息时需要配置发送模式为持久化。此时如果客户端接收不到消息,消息会持久化到服务端,直到客户端正常接收后为⽌。
mysql面试题 增删改查1.
Tomcat集中怎么实现共享
答:⽤dubbo与zookeeper配合来实现tomcat共享。
1,tomcat⾃⾝提供的session集共享
2,编写tomcat的session插件对session进⾏存储
3,使⽤javaweb规范中的filter对request对象的getSessio()进⾏拦截替换实现集共享
1.
Shiro如何进⾏权限控制?
答:1.通过浏览器访问路径,配置⽂件查看,是否需要认证等,如果不需要,直接访问controller
2.如果需要认证,通过配置⽂件的loginUrl,跳到这个地址,输⼊⽤户名、密码等
3.登录:1.访问⾃定义的form表单过滤器FormAuthenticationFilter(⾃⼰起的名字和shiro⼀样了,所以。。)的createToken⽅法,装配token;如果没有⾃定义表单过滤器,默认的FormAuthenticationFilter会⾃动装配表单token2.访问⾃定义realms的认证⽅法doGetAuthenticationInfo(),查库(或者缓存),判断⽤户名和密码是否正确。
4.如果登录之后访问的url,通过配置⽂件⾥的配置需要权限:调⽤⾃定义realms的授权⽅法:doGetAuthorizationInfo(),查库(或者缓存),查出⽤户权限,判断是否拥有权限,没权访问,跳到响应的refuse配置的路径,有权访问,跳到响应的url
1.
solr的原理?分词器的原理?如何设置⾼亮显⽰?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。