java面试题总结3

java面试题总结3

1.你说一下你最熟悉的项目?
项目名:合照商务
项目作用:一个电商购物平台,网购系统。
系统说明:该项目实现了后台系统,前台系统,购物车系统,订单系统,搜索系统,物流系统以及支付系统。
1)后台系统(卖家):对商品进行上架/下架以及管理商品信息等,包括商品列表目录展现,商品新增,删除,修改,商品详情的信息入库,展现,修改,删除。
2)前台系统(买家):可以访问查询自己喜欢的商品,负责商品类别和商品详情的展现,包括:热卖,推荐等功能的实现,用户注册登录的实现。
3)购物车系统,订单系统,支付系统:可以完成购买商品的整个流程;
购物车系统:负责用户购物车信息维护,添加,查询,删除,修改;
订单系统:实现下单入库操作,确认订单,提交订单,支付功能,以及查询订单操作;
4)单点登录系统:一处登录后,所有系统都可以访问到,包括登录登出;
5)搜索系统:搜索商品;
6)物流系统:查看商品的物流信息;
项目的架构及设计:
0)Nginx反向代理(service.xml配置,访问图片时,被nginx拦截,将虚拟路径转化为真实的磁盘并且进行数据请求, 路径域名代理)负载均衡(默认轮询),健康检测,Tomcat实现了故障的牵引
1)将一个项目按照功能模块的不同,拆分为多个项目,分布式系统,如Tomcat集群,
2)使用redis集群实现redis的高可用(故障牵引),redis缓存提高数据处理能力,因为在实际过程中用户查询数据库的次数要远远高于数据库的更新操作,如果用户的查询直接通过缓存数据来获取,可以减少数据库的压力,redis的数据持久化策略RDB和AOF(实时备份),
3)架构也采用了集群来抗击高并发,实现架构性能的高可用。
4)之前Spring整合HttpClient,代码层级结构有5层,基于Http协议的请求,后台:java对象转化JSON串,前台:json串转化为java对象
5)Dubbo(alibaba开源的RPC的服务框架)+SOA(面向服务的架构思想,定义独立的第三方接口)+RPC(远程过程调用协议)+Zookeeper注册中心;代码层级结构变成3层,客户端的Controller负责调用接口获取数据,第三方接口的Service接口(包括pojo实体类),服务端程序的ServiceImp(Mapper)负责服务端程序实现接口,实现方法调用。
6)RabbitMQ消息队列服务器:实现数据入库的异步,平衡数据库的压力,路由模式
7)为了处理海量数据,提高查询数据的效率,对数据库分库分表策略(解决数据库瓶颈问题)Mycat数据库代理服务器可以支持心跳检测,实现故障迁移(高可用)能实现读写分离和主从复制,支持分库分表,能支持多种类型的数据库(mysql、orale)。
业务需求:将消息队列添加到订单操作和入库之间,平衡数据库的压力。
Mycat作用:让全部的业务服务器连接代理代理服务器.代理服务器可以自动的识别哪些请求是读/哪些是写.发往不同的数据库做操作.
8)Mysql数据库
9)调用方式基于浏览器的JSOP,不安全,解决跨域问题,返回数据是JSON串。
HttpClient基于java实现http请求,从而实现远程数据的调用,返回的数据是对象。
Spring整合很多优秀的框架:Spring MVC,MyBatis,HttpClient,redis,Dubbo,RabbitMQ,
2.单点登录中怎么保证session共享问题?保存到redis缓存里(ticket,time,userJson)
总结有四种方法:
1).客户端Cookie保存
2).服务器间Session同步
3).使用集群统一管理Session
4).把Session持久化到数据库
4.你们的项目有几层调用?
刚开始有5层,后来利用SOA思想,变成3层。
5.cookie可以在不同服务之间共享吗?
6.redis缓存服务器里的事务怎么处理的?
7.redis可以作为数据库吗,怎么持久化数据的?
可以的,redis缓存的数据就是数据库中的数据,
持久化策略:1)手动的数据备份RDB,会造成线程的阻塞,当save命令执行完成后,其他线程才能正常运行。默认的(特点:定期进行数据备份,RDB模式的效率最高,可能会造成部分数据丢失)
2)自动的数据备份AOF方式:数据的安全性要求较高,支持实时备份,效率较低。
8.你们的项目用的什么管理?
使用maven工具管理项目,可以站式的部署/构建项目
9.你们项目的私服用的是什么?
本地仓库-阿里云私服镜像
10.Maven项目创建有哪些坐标元素?
坐标:Group Id:公司域名
Artifact Id:项目名称
Version:版本号
11.pom文件有哪些标签名?
dependency groupId artifactId version scope
12.我在继承了父类pom文件,为什么还要去依赖呢?
13.Maven 一键构建继承和聚合有什么区别?
14.Mybatis持久层框架有几级缓存?默认是哪个级别?
2级别分别是SqlSession和SqlSessionFactory,
默认是一级缓存开启的,不需要任何配置
一级缓存在每次更新后都会失效。
一级缓存在事务并发执行时可能会出现脏读
15.spring中的事务怎么处理,你是如何添加事务的?
Spring提供两种事务处理管理方式:a 编程式事务处理 b 声明式事务处理(AOP,常用)
注解方式实现事务处理:在类或方法中使用@Transaction注解应用事务。
利用spring中AOP特性来解决日志的处理,事务处理,权限处理,缓存处理等等
AOP:切面(@Aspect声明):横切面对象,一个具体类对象。
连接点(joinpoint):值被拦截的方法
切入点(pointcut):多个连接点的结合
通知(Advice):(扩展功能)
比如创建时间处理类和核心业务类定义个订单接口,此接口定义多个业务操作

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值