栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第四阶段面试题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第四阶段面试题

1.1 电商行业特点 1. 分布式 垂直拆分 : 根据功能模块进行拆分 水平拆分 : 根据业务层级进行拆分 2. 高并发 用户单位时间内访问服务器数量 , 是电商行业中面临的主要问题 3. 集群 抗击高兵发的有效手段 , 同时集群内部实现高可用 4. 海量数据处理 随着公司数据的不断积累 . 自身的数据量很庞大 . 如果高效的处理数据 / 分析 1.2 框架调用流程 1.3 EasyUI 后台调用流程 1.4 分布式项目的设计思想 为了实现架构之间的松耦合 , 将项目根据分布式的思想进行拆分 . 1. 项目的垂直拆分 根据功能模块的不同将项目进行拆分 . 2. 项目的水平拆分 在大型项目中 , 由于开发的人数众多 , 项目复杂度高 . 为了保证项目开发的耦合性低 . 实现项目的水平拆分 . 将一个大型项目根据层级模块进行拆分 .Controller 项目 /Service 项目 Mapper 项目 项目创建时采用 聚合项目 的方式进行管理 1.5 分布式项目的 jar 包如何管理 将项目中用到公共的 jar 包使用服务支撑项目 jt-parent 进行添加 , 其他的项目只需要继 承 jt-parent 后获取对应的 jar 包全部依赖 . 从而实现了 jar 包的统一管理 1.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 ……. 3. Haibernate 框架 . 号称是自动化的 (ORM) 程序员只需要操作对象 , 从而完成了对数据库的操作 . 缺点 : 1. 做新增 / 删除 / 修改会产生一些冗余的 sql( 出于安全性性考虑 ) 2. 如果做多表关联操作 (CRUD) , 需要装备配置文件 , 通过配置文件进行数据关 联设定 . 同时需要学习 Hql( 语句 ) 3. 早期数据库容量是有限 , 超过 500 万后查询效率开始变低 . 4.Mybatis 优点 : 继承 ORM, 摈弃了冗余的 sql( 自己手写 ), 5. 通用 Mapper 插件基于 mybaits 的 效果 : 可以实现单表 CRUD 使用对象操作 .( 反射机制 ) 1.7 Nginx 是什么 , 有什么作用 Nginx (engine x) 是一个轻量级的是一个高性能的 HTTP 和反向代理服务器 , 其特点是占 有内存少, 并发 能力强 主要是用来反向代理和实现负载均衡 . 1.8 谈一下反向代理和负载均衡 说明 : 1. Nginx 首先需要监听特定的域名 . 2. 当用户根据域名进行资源访问时 . 首先会访问 nginx 3. 之后 nginx 代替请求者根据内部的配置文件 , 实现反向代理 . 将请求转化为特定的请 求路径进行资源访问 . 4. 当 Nginx 获取资源后将数据返回给用户 . 完成请求的正确的响应 . 负载均衡 : 访问量高时 , 可以让服务器尽量分摊压力 , 实现策略 : 轮询 , 权重 ,IP_HASH( 一般不用 ) 1.9 Nginx 的健康监测机制 当后台的服务器出现宕机的现象 , 当时 nginx 中的配置文件并没有改变时 , 请求依然会 发往故障的机器 . 需要人为的维护配置文件 , 这样的操作不智能 . 那么 采用健康检测机制 . 可以 实现故障的自动的迁移 . 属性介绍 : 1.max_fails=1 当检测服务器是否正常时 , 如果检测失败的次数达到规定的次数时 , 则断定该服务器故障 , 在规定的时间周期内 , 不会将请求发往该机器 . 2.fail_timeout=60s 定义时钟周期 1.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; 1.11 数据库数据如何备份 ( 数据备份策略 ) 1. 冷备份 : 定期将数据库中的文件进行转储 , 定期进行数据备份 . 2. 热备份 : 搭建数据库主从结构 , 当主库数据发生改变时 , 从库根据主库的二进制日志 文件进行备份 . 3. 双机热备 : 数据库互为主从 , 数据库代理服务器对主库进行心跳检测 , 实现数据的高 可用 , 为了防止主库宕机后发生雪崩现象 1.12 数据库压力大时 , 怎么实现高可用 1. 用数据库代理服务器搭建数据库的读写分离进行分流 . 读取从库数据 , 写数据在主库 可用的数据库代理服务器有 Amoeba 和 Mycat 由于大量的用户的数据库操作都需要通过数据库来完成 . 造成数据库负载过高 . 因为数 据库操作中查询的操作占很大的比重 . 2. 数据库实现双机热备 . 1.13 数据库的优化策略 1. 优化 sql 语句 ( 多表操作 ) where 左连接 右连接 内连接 原则 : 尽可能根据主键查询 , 尽可能少用关联查询 . 2. 创建索引 ( 对经常查询的数据创建索引 ) 3. 添加缓存 (Redis/MemCache) 4. 定期进行数据转储 ( 将一些查询较少的数据保存到历史表 , 让当前表维护可控的数 据量 ) 5. 分库分表 ( 需要大量的数据库服务器 ) 1.14 什么是 Mycat 是一个数据库中间件 , 实现读写分离 , 分库分表和数据库故障迁移 . 1.15 什么是 Redis, 运行在哪里 开源的内存中的数据结构存储系统 , 可以用做数据库 , 缓存和消息中间件 基于 C 语言开发 , 运行时在内存中 , 运行速度很快 https://mp.weixin.qq.com/s/0Fqp2aGq7c_x_bEK9pOeeg 1.16 Redis 中的数据持久化策略 如果使用时允许丢失部分数据 ( 少量的 ) 则使用 RDB 模式 , 它的效率高 , 也是 redis 默认的 策略 , 如果不允许丢失数据则采用 AOF 模式 , 它的安全性高 , 但是效率较低 . 1.17 Redis 中的内存维护策略 问题 : 如果数据都存储到 redis 中 , 如果内存占满了 ,redis 如何维护 ? 解决方案 : 1. 动态的扩容 redis 节点 ( 不科学 ) 2. 为数据设定超时时间 3. 动态的将不用的数据删除 .(LRU 算法 ) 算法介绍 : 内存管理 的一种页面置换算法,对于在内存中但又不用的 数据块 (内存块)叫做 LRU ,操作系统会根据哪些数据属于 LRU 而将其移出内存而腾出空间来加载另外的数据。 1.18 redis 为什么要分片 特点 : 实现动态内存扩容 数据存储机制 : 1.19 Hash 一致性 1. 均衡性 尽可能均匀分片节点中的数据 2. 单调性 实现数据的动态迁移 3. 分散性 由于分布式原因 , 导致不能获取全部节点信息 , 使得一个 key 有多个位置 4. 负载 是分散性另一种表现形式 . 表现为一个位置有多个 key 1.20 知道哨兵机制吗 , 怎么实现的 , 实现了什么功能 功能 : 实现 redis 高可用 机制 : 心跳检测 1.21 哨兵和分片的优缺点 优点 : 1. 分片可以使 redis 动态内存扩容 . 2. 分片可以将数据均匀的分配到不同的节点中 , 使数据分散保存 . 3. 哨兵可以实现 redis 高可用 . 缺点 : 1. 分片如果有一个节点出现宕机则整个分片都不能正常使用 . 2. 哨兵如果发生宕机现象 , 则影响整个 redis 服务 . 升级 : 1. 使用多台 redis 实现内存空间的动态扩容 . 2. 实现在 redis 内存实现高可用 ( 不再使用哨兵机制 ) 使用组件 ( ruby ) 搭建集群 , 实现分片和高可用的全部功能 . 1.22 Redis 集群 使用 ruby 工具创建集群 . 集群中全部的节点相互之间互相通讯 . 在 redis 内部实现高可 用 .redis 集群是分片和哨兵的集合体 . 1.23 伪静态技术 动态页面不能被搜索引擎收录 . 为了保证搜索引擎的友好性 . 则以 .html 的静态页面形式 展现动态页面数据 1.24 跨域问题 说明 : 在 www.jt.com 中调用 manage.jt.com 时访问不成功 . 原因该操作是一个跨域请求 . 浏览器不允许进行跨域请求 . 会将成功返回的数据进行拦截 . 不予显示 . 一切出于安全性 的考虑 . 1.25 同源策略 规则 : 请求 协议 / 域名 / 端口号 是否相同 , 如果三者都一致 , 那么是同域访问 .( 即同源策略 ) 浏 览器可以正常执行 . 除此之外的全部的请求都是跨域请求 . 1.26 怎么解决跨域问题 ? 利用 javascript 中 src 属性实现跨域 . 客户端定义回调函数 callback=hello 服务端程序封装特定的 JSON 格式 callback(JSON) 执行回调函数 JSONP 就是基于这个原理实现的 . JSONP(JSON with Padding) 是 JSON 的一种 “ 使用模式 ” ,可用于解决主流 浏 览 器 的 跨 域 数 据 访 问 的 问 题 。 由 于 同 源 策 略 , 一 般 来 说 位 于 server1.example.com 的网页无法与不是 server1.example.com 的服务 器沟通,而 HTML 的