1、TCP和UDP的区别是什么?掌握TCP编程流程。
答:TCP是传输控制协议,会经历三次握手来确认才能使双方建立连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据流量控制等功能来确保数据的可靠性和安全性。相对而言效率低。
UDP是用户数据包协议协议,不提供可靠性及安全性,效率高。一般用于视频数据的传输。
2、什么是XML?XML声明是怎样的?XML注释是怎样的?
答:XML是可扩展标记语言,用于标记电子文件使其具有结构性的标记语言
<?XML version="1.0" encoding=”UTF-8” standalone=”yes”?> 声明,一般后面的两项会默认,只需要写成 <?XMLversion="1.0"?> 即可
<!-- 注释 -->
3、一个格式良好的XML有哪些规定?
答:
1.标记的书写正确,必须成对出现,有开始标记必须有结束标记,除非是单标记
2.每个标记只能有一个根元素
3.标记嵌套必须正确,不能出现交叉标记
4.属性必须加引号
5.开头必须要有声明
6.标记要区分大小写
4、格式良好的XML和有效的XML有什么区别?
答:格式良好的XML是指符合XML语法规则的
有效的XML是指不但符合XML语法规则而且符合DTD规范 或 schemal规范
所以良好格式的XML不一定是有效的XML,但是有效的XML一定是良好格式的XML
5、DOM和SAX有什么区别?
答: 1 DOM使用树形结构,在内存当中一次性表现整篇XML文档
2 SAX采用事件回调的方式,从上往下读取一篇XML文件,当遇到我们要操作的元素的时候,它就调用我们要操作这个元素的方法。
3 DOM解析最大的优势是可以来回遍历,而SAX不行。SAX在读取到后面的时候是不能再回到前面的! .
4大的XML文件不适合DOM解析,反之则采用SAX
76、静态块和实例化块分别在什么时候执行?
答:前者在虚拟机加载的时候就执行,只执行一次。后者在每次创建对象的时候执行,每创建一次执行一次。
6、什么是一对一、一对多、多对多?
答:
- 一对一:一条主表记录对应一条从表记录,同时一条从表记录也对应一条主表记录。
- 一对多:一条主表记录对应多条从表记录,同时一条从表记录对应一条主表记录。
- 多对多:一条主表记录对应多条从表记录,同时一条从表记录对应多条主表记录。
(多对多需要中间表来连接,中间表来描述关系)
7、数据库完整性有哪些?
答:为了防止垃圾数据的产生,从而影响数据库的执行效率。(可靠性+准确性)
数据完整性的分类
- 实体完整性:保证一行数据是有效的(实现:1,主键约束primary key(主键列不能为空也不能重复,一个表只能有一个主键),2 唯一约束unique(唯一约束可以为空,并且可以在一张表中给多个列设置))
- 域完整性:保证一列数据是有效的 (实现:1 非空约束not null ,2 默认约束 default ,3 检查约束 mysql不支持)
- 引用完整性:保证引用编号是有效的
- 用户自定义完整性;保证自定义规则
8、什么是主键,主键有什么特点?
答:主键是表中的一个字段,主键列不能为空,也不能重复。一个表只能有一个主键
9、什么是外键,它和外键约束有什么区别
答:一个表中的某个字段是另外一个表中的主键,该字段被称为外键。外键约束:约束了主键所在表中的记录不能在外键表存在的情况下直接删除,强行要求从表记录的外键必须引用主表记录的主键
删除有两种方式:1 级联删除:将主表记录对应的从表记录先删除,在删除主表记录
2外键设空:讲主表记录对应的从表记录的外键设置为null,在删除主表记录
区别:1 外键是指从表的某列与主表的某列有存在依赖关系
2外键约束市值在外键关联主键上强制加上一个约束,如果违反约束,则不允许该条数据的修改,注意:没有外键约束不等于没有外键
10、增、删、改、查的基本SQL语句
答:insert intot_table 增加
Delectfrom t_table where t_name=”” 删除
Updatet_table set t_name= ‘””
Select * from t_table
11、DELETE和TRUNCATE的区别
答:delete 可以会记录日志,可以恢复数据。 Truncate 不会记录日志,不可以恢复数据,执行效率高
83、排除重复记录用什么关键字?如何限制查询数据的返回限定行数?
答:distinct limit
84、如何查询null值
答: select *from t_xxx where e_name is null;
85、SQL语句的聚合函数有哪些?
答:max():计算某列的最大值
min():计算某列的最小值
sum():获取单个列的合计值
avg():计算某个列的平均值 ( avg 不会把值为null 的加入计算中)
-- 如果要计算为null值的元素sum()/count(*)
count():统计行数量,count(*) 统计所有的记录,count(字段)统计符合该字段的非空记录,count(casewhen then end) 条件筛选统计
需要注意的是,函数和后面的括号之间不要有空格
86、在分组语句中,查询的列可以有哪些?
答:能查询的字段只能是分组字段和聚合函数
87、where和having的区别
答:where 执行在运行分组前,因此不能执行任何聚合函数
having 执行在运行分组后,只能用在使用聚合函数的过滤
88、描述SQL查询语句执行顺序
答:fromàwhereàgroupbyàselectàhavingàorderby
89、内连接和外连接区别
答:内联接 是指使用比较运算符,根据每个表共有的列的值匹配两个表中的行
外联接 是指不管有没有匹配,被定义了外联接的表数据都要出现在结果中
90、什么是JDBC
答:是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成 。
- 是java连接数据库的一套规范,该规范中定义了一系列的接口,由数据库厂商提供接口实现类,由开发者根据接口,调用实现类的方法。这样开发者就可以屏蔽不同数据库的差异,无论连接声明数据库,对数据库做什么样的操作,都是一套API。
91、JDBC开发流程
答:加载驱动建立联接,操作SQL语句,关闭连接
92、什么是SQL注入
答:SQL注入,在执行SQL语句时,如果以拼接字符串方式设置值,如果在值中有SQL语句的关键字或非法字符或语句,可能会造成执行结果不正确或执行失败的情况。这就叫SQL注入。
93、Statement和PreparedStatement的区别
答:1.Statement 是PreparedStatement的父类
2.Statement 在执行SQL语句,只能以拼接字符串的方式设置值。由于每一次的值都不一样,所以在执行SQL语句时,都会讲SQL语句重新编译,效率较低。而 PreparedStatement 提供占位符的方式,SQL语句不用每一次执行都进行编译,执行效率较高。
3. Statement 在执行SQL语句时,由于采用字符串方式设置值,所以容易造成SQL注入,而
PreparedStatement 使用占位符方式设置值,无论是什么值都当字符串处理,不会造成SQL注入
94、什么是三层架构
答
持久层、业务层、表现层
持久层:
完成数据库的操作。采用DAO模式,建立实体类和数据库进行映射,也就是那个类对应哪个表,那个属性对应哪个列。而持久层的目的就是完成关系数据和对象数据的转换!
业务层
完成业务处理。采用事务脚本模式。将一个业务中所有的业务操作封装成一个方法。保证该方法中所有数据库更新操作同时成功或同时失败。
表现层
完成数据的展示 采用MVC模式
M:模型:也就是实体类,完成数据的封装和数据的传输
V:试图,也就是GUI窗体,完成数据的展示
C:控制,也就是事件,完成业务方法的调用和业务流程控制
层与层之间,采用接口模式做耦合,这样,当其中一个层的组件发生更改和替换的时候,不会影响别的层的组件的使用。
用户—》表现层---接口---》业务层---接口---》持久层-----》DB(数据库)最接近用户的是低层