JAVA的面试题四

1.电商行业特点

(1)分布式:

                        ①垂直拆分:根据功能模块进行拆分
                        ②水平拆分:根据业务层级进行拆分

(2)高并发:

                         用户单位时间内访问服务器数量,是电商行业中面临的主要问题

(3)集群:

                        抗击高兵发的有效手段,同时集群内部实现高可用

(4)海量数据处理:

                        随着公司数据的不断积累.自身的数据量很庞大.如果高效的处理数据/分析

2.框架调用流程

JAVA的面试题四_第1张图片

3.EasyUI后台调用流程

JAVA的面试题四_第2张图片

4.分布式项目的设计思想

为了实现架构之间的松耦合,将项目根据分布式的思想进行拆分.

  1. 项目的垂直拆分

根据功能模块的不同将项目进行拆分.

  1. 项目的水平拆分

在大型项目中,由于开发的人数众多,项目复杂度高.为了保证项目开发的耦合性低.实现项目的水平拆分.

将一个大型项目根据层级模块进行拆分.Controller项目/Service项目Mapper项目

项目创建时采用聚合项目的方式进行管理

5.分布式项目的jar包如何管理

将项目中用到公共的jar包使用服务支撑项目jt-parent进行添加,其他的项目只需要继承jt-parent后获取对应的jar包全部依赖.从而实现了jar包的统一管理

6.介绍一下通用Mapper

  1. 早期使用JDBC操作数据库.该操作特别的繁琐,并且所有的数据需要自己手动的封装.
  2. JPA:是java持久化的API(用面向对象的方式操作数据库)思想

User user = new User(); setXXXX

User.setId(1);

User.setName(tom);

   工具API.insert(user);  JPA内部将对象自动转化为sql语句

Insert into …….

  1. Haibernate框架.号称是自动化的(ORM)

程序员只需要操作对象,从而完成了对数据库的操作.

缺点:

  1. 做新增/删除/修改会产生一些冗余的sql(出于安全性性考虑)
  2. 如果做多表关联操作(CRUD) ,需要装备配置文件,通过配置文件进行数据关联设定.同时需要学习Hql(语句)
  3. 早期数据库容量是有限,超过500万后查询效率开始变低.

4.Mybatis

优点:继承ORM,摈弃了冗余的sql(自己手写),

  5.通用Mapper插件基于mybaits的

效果:可以实现单表CRUD使用对象操作.(反射机制)

7.Nginx是什么,有什么作用

Nginx (engine x) 是一个轻量级的是一个高性能的HTTP和反向代理服务器,其特点是占有内存少,并发能力强

主要是用来反向代理和实现负载均衡.

8.谈一下反向代理和负载均衡

JAVA的面试题四_第3张图片

说明:

  1. Nginx首先需要监听特定的域名.
  2. 当用户根据域名进行资源访问时.首先会访问nginx
  3. 之后nginx代替请求者根据内部的配置文件,实现反向代理.将请求转化为特定的请求路径进行资源访问.
  4. 当Nginx获取资源后将数据返回给用户.完成请求的正确的响应.

负载均衡:访问量高时,可以让服务器尽量分摊压力,

JAVA的面试题四_第4张图片

实现策略:轮询,权重,IP_HASH(一般不用)

9.Nginx的健康监测机制

当后台的服务器出现宕机的现象,当时nginx中的配置文件并没有改变时,请求依然会发往故障的机器.需要人为的维护配置文件,这样的操作不智能.那么采用健康检测机制.可以实现故障的自动的迁移.

属性介绍:

1.max_fails=1  当检测服务器是否正常时,如果检测失败的次数达到规定的次数时,则断定该服务器故障,在规定的时间周期内,不会将请求发往该机器.

2.fail_timeout=60s定义时钟周期

10.Nginx如何保证请求参数不丢

在nginx中添加请求头的参数,表示每次请求时,携带请求者的请求头信息,访问服务器.

proxy_set_header X-Forwarded-Host $host;		
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

11.数据库数据如何备份(数据备份策略)

  1. 冷备份:定期将数据库中的文件进行转储,定期进行数据备份.
  2. 热备份:搭建数据库主从结构,当主库数据发生改变时,从库根据主库的二进制日志文件进行备份.
  3. 双机热备:数据库互为主从,数据库代理服务器对主库进行心跳检测,实现数据的高可用,为了防止主库宕机后发生雪崩现象

12.数据库压力大时,怎么实现高可用

1.用数据库代理服务器搭建数据库的读写分离进行分流.读取从库数据,写数据在主库

可用的数据库代理服务器有Amoeba和Mycat

由于大量的用户的数据库操作都需要通过数据库来完成.造成数据库负载过高.因为数据库操作中查询的操作占很大的比重.

2.数据库实现双机热备.

13.数据库的优化策略

  1. 优化sql语句(多表操作)  where 左连接 右连接 内连接

原则:尽可能根据主键查询,尽可能少用关联查询.

  1. 创建索引(对经常查询的数据创建索引)
  2. 添加缓存(Redis/MemCache)
  3. 定期进行数据转储(将一些查询较少的数据保存到历史表,让当前表维护可控的数据量)
  4. 分库分表(需要大量的数据库服务器)

14.什么是Mycat

是一个数据库中间件,实现读写分离,分库分表和数据库故障迁移.

15.什么是Redis,运行在哪里

开源的内存中的数据结构存储系统,可以用做数据库,缓存和消息中间件

基于C语言开发,运行时在内存中,运行速度很快

https://mp.weixin.qq.com/s/0Fqp2aGq7c_x_bEK9pOeeg

16.Redis中的数据持久化策略

如果使用时允许丢失部分数据(少量的)则使用RDB模式,它的效率高,也是redis默认的策略,如果不允许丢失数据则采用AOF模式,它的安全性高,但是效率较低.

17.Redis中的内存维护策略

问题:如果数据都存储到redis中,如果内存占满了,redis如何维护?

解决方案:

  1. 动态的扩容redis节点(不科学)
  2. 为数据设定超时时间
  3. 动态的将不用的数据删除.(LRU算法)

  算法介绍:

内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,操作系统会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。

18.redis为什么要分片

特点:实现动态内存扩容

数据存储机制:

JAVA的面试题四_第5张图片

​​​​​​​19.Hash一致性

  1. 均衡性

尽可能均匀分片节点中的数据

  1. 单调性

实现数据的动态迁移

  1. 分散性

由于分布式原因,导致不能获取全部节点信息,使得一个key有多个位置

  1. 负载

是分散性另一种表现形式.表现为一个位置有多个key

​​​​​​​20.知道哨兵机制吗,怎么实现的,实现了什么功能

功能:实现redis高可用

机制:心跳检测

JAVA的面试题四_第6张图片

​​​​​​​21.哨兵和分片的优缺点

优点:

  1. 分片可以使redis动态内存扩容.
  2. 分片可以将数据均匀的分配到不同的节点中,使数据分散保存.
  3. 哨兵可以实现redis高可用.

  缺点:

  1. 分片如果有一个节点出现宕机则整个分片都不能正常使用.
  2. 哨兵如果发生宕机现象,则影响整个redis服务.

升级:

  1. 使用多台redis实现内存空间的动态扩容.
  2. 实现在redis内存实现高可用(不再使用哨兵机制)使用组件(ruby)

搭建集群,实现分片和高可用的全部功能.

​​​​​​​22.Redis集群

使用ruby工具创建集群.集群中全部的节点相互之间互相通讯.在redis内部实现高可用.redis集群是分片和哨兵的集合体.

​​​​​​​23.伪静态技术

动态页面不能被搜索引擎收录.为了保证搜索引擎的友好性.则以.html的静态页面形式展现动态页面数据

​​​​​​​24.跨域问题

说明:在www.jt.com中调用manage.jt.com时访问不成功.原因该操作是一个跨域请求.

JAVA的面试题四_第7张图片 浏览器不允许进行跨域请求.会将成功返回的数据进行拦截.不予显示.一切出于安全性的考虑.

​​​​​​​25.同源策略

规则:

请求协议/域名/端口号是否相同,如果三者都一致,那么是同域访问.(即同源策略)浏览器可以正常执行.除此之外的全部的请求都是跨域请求.

​​​​​​​26.怎么解决跨域问题?

利用javascript中src属性实现跨域.

客户端定义回调函数 callback=hello

服务端程序封装特定的JSON格式   callback(JSON)  执行回调函数

JSONP就是基于这个原理实现的.

JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的

你可能感兴趣的:(java,开发语言,面试)