点击上方“Java知音”,选择“置顶公众号”

技术文章第一时间送达!

Javaweb练手项目源码下载

常用设计模式完整系列篇

100套IT类简历模板下载

Java常见面试题汇总篇

数据库的三大范式

1 、第一范式(1NF)

在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。

在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式要求数据表中的每一列(每个字段)必须是不可拆分的最小单元。

2、 第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。

第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系。

3 、第三范式(3NF)

满足第三范式(3NF)必须先满足第二范式(2NF)。第三范式(3NF)要求一个数据库表中不包含其它表中已包含的非主关键字信息。简而言之,第三范式要求表中的每一列只与主键直接相关而不是间接相关,表中的每一列只能依赖于主键。


TCP和UDP的区别及其适用场景

首先说一下什么是TCP和UDP:

TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。

UDP是用户数据报协议,是一个简单的面向数据报的运输层协议。

TCP和UDP的区别:

  • TCP面向连接的运输层协议,UDP无连接

  • TCP是可靠交付,UDP是尽最大努力交付

  • TCP面向字节流,UDP面向报文

  • TCP是点对点连接的,UDP一对一,一对多,多对多都可以

  • TCP适合用于网页,邮件等,UDP适合用于视频,语音广播等

TCP和UDP的适用场景:

整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。

当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,比如视频、广播等,这时就可以使用UDP。


说一下Spring的核心模块

  • Spring Core【核心容器】:核心容器提供了Spring的基本功能。核心容器的核心功能是用IOC容器来管理类的依赖关系。

  • Spring AOP【面向切面】:Spring的AOP模块提供了面向切面编程的支持。SpringAOP采用的是纯Java实现,采用基于代理的AOP实现方案,AOP代理由IOC容器负责生成、管理,依赖关系也一并由IOC容器管理。

  • Spring ORM【对象实体映射】:提供了与多个第三方持久层框架的良好整合。

  • Spring DAO【持久层模块】: Spring进一步简化DAO开发步骤,能以一致的方式使用数据库访问技术,用统一的方式调用事务管理,避免具体的实现侵入业务逻辑层的代码中。

  • Spring Context【应用上下文】:它是一个配置文件,为Spring提供上下文信息,提供了框架式的对象访问方法。

  • Spring Web【Web模块】:提供了基础的针对Web开发的集成特性。

  • Spring MVC【MVC模块】:提供了Web应用的MVC实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型。


(转发)forward与(重定向)redirect的区别

  • forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。

  • redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,所以地址栏显示的是新的URL。

  • forward转发页面和转发到的页面可以共享request里面的数据。

  • redirect不能共享数据。

  • redirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。

  • forward只能在同一个Web应用程序内的资源之间转发请求。

  • forward是服务器内部的一种操作。

  • redirect是服务器通知客户端,让客户端重新发起请求。

  • forward一般用于用户登陆的时候根据角色转发到相应的模块。

  • redirect一般用于用户注销登陆时返回主页面和跳转到其它的网站等。

  • forward效率高。

  • redirect效率低。


redis常用的五种数据类型

1.String(字符串)

String是简单的 key-value 键值对,value 不仅可以是 String,也可以是数字。它是Redis最基本的数据类型,一个redis中字符串value最多可以是512M。

2.Hash(哈希)

Redis hash 是一个键值对集合,对应Value内部实际就是一个HashMap,Hash特别适合用于存储对象。

3.List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。

底层实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。

4.Set(集合)

Redis的Set是String类型的无序集合,它的内部实现是一个 value永远为null的HashMap,实际就是通过计算hash的方式来快速排重的,这也是set能提供判断一个成员是否在集合内的原因。

5.zset(有序集合)

Redis zset 和 set 一样也是String类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数,用来排序。

Java中级面试题及答案解析(8)相关推荐

  1. Java中级面试题及答案解析(4)

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 知音专栏 Javaweb练手项目源码下载 常用设计模式完整系列篇 100套IT类简历模板下 ...

  2. java 中级面试题及答案

    java 中级面试题及答案 1.MyBatis中,根据Id查询单个Order对象,动态SQL如何编写? A. SELECT * FROM Order WHERE ID = #{id}; B. SELE ...

  3. Java中高级面试题部分答案解析

    Java中高级面试题部分答案解析 List和Set比较,各自的子类比较 对比一:Arraylist与LinkedList的比较 1.ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦 ...

  4. 北大青鸟Java内侧答案_北大青鸟推荐:Java精选笔试题(含答案解析)

    北大青鸟推荐:Java精选笔试题(含答案解析)如果你是计算机专业出生,但是还没有找到工作的话,你就得补补技术了,一些关于面试.笔试的题要多刷一刷.有可能你知道答案,但是由于语言组织能力有所欠缺,所以面 ...

  5. Java中高级面试题部分答案解析(3)

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 知音专栏 Javaweb练手项目源码下载 常用设计模式完整系列篇 100套IT类简历模板下 ...

  6. java中级面试题 含答案

    一.Java笔试题基础 1. Java中的异常有哪几类?分别怎么使用? 检出异常,非检出异常.检出异常需要try-catch才能编译通过.非检出异常不用try-catch也能编译通过. Runtime ...

  7. java中级面试题(java中级面试题及答案)

    java面试居然有这么多学问,看看高级程序员面试题是什么样的 java面试只有笔试难一点,你去网上找一点java的面试题多看看,笔试一定能过.但是面试刚开始是问你一点java的基础内容,如果你有项目经 ...

  8. Java常见面试题及答案解析

    这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试.由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完 ...

  9. Java开发面试题目,java中级面试题及答案下载

    一.对象的实例化 1.创建对象的方式 new:最常见的方式(本质是构造器) 变形1 : Xxx的静态方法 变形2 : XxBuilder/XxoxFactory的静态方法 Class的newInsta ...

最新文章

  1. AI创业公司最佳「开发工具」指南火了,还发现了个可挑战Jupyter的「杀手」
  2. 树莓派模拟电路_9.树莓派3B+ PWM操作
  3. ios开发两个简单的错误提示和原因
  4. c++ 删除二叉树的子树_平衡二叉树
  5. Apache 设置http跳转至HTTPS访问
  6. 使用MongoDB进行事件流
  7. java inputstream read_20191209-java部分流处理
  8. 53 FI配置-财务会计-固定资产-折旧-维护折旧码
  9. n皇后问题(在棋盘上找方案)
  10. Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!(又一篇万字长文)...
  11. 关于python中的pow(1010、32)_关于Python中的??pow(1010,32),下列说法正确的是.
  12. ISO27145协议解析
  13. 城管系统服务器,数字城管系统建设方案详细.doc
  14. 矩阵的卷积以及使用python计算方法
  15. 4块硬盘掉线导致服务器崩溃解决过程
  16. promise是什么?
  17. linux裸设备读写,Linux裸设备管理学习笔记
  18. Windows证书对话框权限提升漏洞-CVE-2019-1388
  19. SpringBoot+SpringSecurity+Thymeleaf 演示CSRF攻击
  20. 分布式数据库架构--分库、分表、排序、分页、分组、实现

热门文章

  1. iOS百思不得姐、ARKit、旋转动画、立体相册源码等
  2. windows平台上的密码算法识别工具
  3. 记录一次git解决冲突的过程
  4. Android NDK 编译PjSip 2.6 之 搭建PjSip apk开发环境 (三)
  5. 新书推荐——信创桌面操作系统的配置与管理(统信UOS版)
  6. 扫码防窜货系统技术开发
  7. 华为机试 经验(血泪史啊)
  8. 西门子博图V14虚拟PLC与虚拟面板的仿真方法
  9. matlab如何与ccs关联,CCS与Matlab
  10. 一张六西格玛证书,换取五十万年薪 -- 优思学院