流按照传输内容分有几种?各自的父类是什么?
流按照传输内容有 字节流、字符流、对象流。但其本质都是字节流。字符流和对象流是在字节流基础上作了一层封装,以便更好对字符和对象进行操作。
字节流的父类:InputStream和OutputStream
字符流的父类:Reader和Writer
操作流时,如果文件不存在会出现什么情况?如果流不关闭会出现什么情况?
操作流时,如果文件不存在,对于读取流而言,会抛出文件未找到异常。对于写入流而言,会创建新文件。如果流使用完成后不关闭,会浪费内存资源。而且对于写入流而言,如果流不关闭也不刷新,有可能写不进数据。
如何判断一个文件是否存在?如何创建一个目录?如何知道一个目录中有多少文件?
使用File类中exists()判断文件是否存在。
创建新目录:mkdir();
列出目录中的文件:listFiles();
什么是对象序列化?如何实现对象序列化?
当需要传输对象时,由于对象中数据很庞大,所以需要将对象打散成字节序列,以利传输。这个过程叫做序列化。到达目的地时,又需要将字节序列还原成对象,叫反序列化。
这时,需要序列化的对象必须实现java.io.Serializable接口
TCP/IP协议分为几层?
TCP/IP分为四层:应用层、传输层、网络层、网络接口层
什么是端口?常见端口有哪些?
端口是一个应用程序输入输出数据的通道。每个应用程序都会有固定的端口。
常见的端口:Telnet协议:23 ftp:21 smtp:25 http:80
TCP和UDP的区别是什么?掌握TCP编程流程。
TCP是比较可靠的传输协议,提供三次握手机制,如果信息在传输中丢失或耗损,会要求发送方重新发送,保证数据传输的完整性。
UDP是比较不可靠的传输协议,当信息在传输中丢失或耗损,不会要求发送方重新发送。优点是速度快。
什么是XML?XML声明是怎样的?XML注释是怎样的?
XML叫做可扩展的标识语言,以标记和子标记的方式描述对象。
声明<?xml version=”1.0” encoding=”utf-8”?>
注释<!-- - ->
一个格式良好的XML有哪些规定?
必须要有声明
有且只有一个根元素
大小写区分
属性必须加引号
标记成对出现
标记要正确嵌套。
空标记要关闭
74、格式良好的XML和有效的XML有什么区别?
有效的XML除了满足XML基本规范外,还要满足DTD和Schema定义的元素规则。有效的XML一定是格式良好的XML,但格式良好的XML不一定有效。
75、DOM和SAX有什么区别?
DOM是以树状方式的一套API,可以读取可以写入;可以随机访问XML中元素;大型文档占用内存较多。
SAX是一套基于事件方式的API。占用内存小,只能读取不能写入,不能随机访问元素,文档只能遍历一次。
76、静态块和实例化块分别在什么时候执行?
静态块在类加载时执行,只执行一次。实例化块在产生对象时执行。每产生一个对象,就执行一次,在super()之后执行。
77、什么是一对一、一对多、多对多?
一对一指的是一条主表记录对应一条从表记录。一对多指的是一条主表记录对应多条从表记录。多对多指的是一条主表记录对应多条从表记录,同时一条从表记录也对应多条主表记录,通过中间表来描述多对多关系。
78、数据库完整性有哪些?
实体完整性:每条记录都要有所区别,不能存在一模一样的记录。通过主键和唯一约束实现
域完整性:保证每一列的值是有效的。通过默认约束、非空约束和检查约束实现
引用完整性:保证从表的外键必须引用主表的主键。通过外键约束实现
用户自定义完整性:用户自定义的规则
79、什么是主键,主键有什么特点?
主键是用于标识一个表中两条记录不能完全一样的列,它有两个特点:非空和值不能重复。
80、什么是外键,它和外键约束有什么区别
外键是指从表的某列与主表的某列存在的关联关系
外键约束是指在从表的外键列上加上一个约束,强制要求从表的外键必须引用主表的主键。如果违反该约束,则不允许该条数据的添加修改。
81、增、删、改、查的基本SQL语句
添加:insert into 表名(字段列表) values(值)
删除:delete from 表名 where id=1
修改:update 表名 set 字段名=新值 where id=1
查询:select * from 表名
82、DELETE和TRUNCATE的区别
Delete可以有选择性的对记录进行删除,要写日志文件,可以回滚删除的记录
Truncate只能清空表中所有记录,不写日志文件,删除的记录不能回滚,但执行效率高。
83、排除重复记录用什么关键字?如何限制查询数据的返回限定行数?
DISTINCT
Select * from 表名 limit 0,3;
84、如何查询null值
查询null值用 is null 或is not null
85、SQL语句的聚合函数有哪些?
Count:统计行数量 Sum:计算单个列的总和
Avg:计算单个列的平均值 Max:计算单个列的最大值
Min:计算单个列的最小值
86、在分组语句中,查询的列可以有哪些?
只能有分组字段列和聚合函数
87、where和having的区别
Where在分组之前执行,所以不能使用聚合函数。Having在分组之后执行,对分组的结果进行条件过滤,只能用聚合函数。
88、描述SQL查询语句执行顺序
第一步:执行FROM
第二步:WHERE条件过滤
第三步:GROUP BY分组
第四步:执行SELECT投影列
第五步:HAVING条件过滤
第六步:执行ORDER BY 排序
89、内连接和外连接区别
内联接是指使用比较运算符根据每个表共有的列的值匹配两个表中的行。
外联接是指不管有没有匹配,被定义了外联接的表数据都要出现在结果中。
内连接:
Select e.*,d.deptName from t_employee e,t_dept d where e.deptId=d.id;
Select e.*,d.deptName from t_employee e join t_dept d on e.deptId=d.id;
外连接:
Select e.*,d.deptName from t_employee e left join t_dept d on e.deptId=d.id;
90、如何删除主表记录?
由于有外键约束存在,如果主表记录有从表记录进行引用,那么无法删除主表记录。
删除主表记录有两种方式:
级联删除,先删除主表记录对应的所有从表记录,然后再删除主表记录。
外键置空,先将主表记录对应的所有从表记录外键设置为null,然后再删除主表记录。
91、书写case when语句
CASE WHEN price>=1000 THEN '高价商品'
WHEN price>=100 AND price < 1000 THEN '中档商品'
ELSE '低档商品'
END
92、什么是JDBC
JDBC是JAVA连接数据库的一套规范。该规范定义了一系列的接口,由数据库厂商实现,由用户根据接口调用。用户根据接口方法就可以屏蔽不同数据库的差异,无论连接什么数据库都是一套API。
93、JDBC开发流程
加载驱动
建立连接
执行SQL语句
关闭连接
94、什么是SQL注入
SQL注入是指在执行SQL语句时,如果以拼接字符串方式进行值的注入,那么如果值中有非法字符或数据库关键字时,就会导致执行错误或执行结果不正确的情况。
Statement和PreparedStatement的区别
Statement是PreparedStatement的父接口,使用拼接字符串的方式填充SQL语句中的值,所以,当值不同的时候,JDBC会重新编译SQL语句,效率低,而且容易造成SQL注入。
PreparedStatement提供了占位符方式设置SQL语句,JDBC不会重新编译SQL语句,而且无论是什么值都当做字符串处理,不会造成SQL注入。
96、什么是三层架构
三层架构即:表现层、业务层、持久层。每一层完成即定的功能,层与层之间用接口做耦合。每一层的组件可以单独测试,当其中一个组件更换或修改后,不会影响别的层的组件。
持久层:用于完成数据库相关的操作。采用DAO模式,创建实体类和数据库表做映射,也就是哪个类对应哪个表,哪个属性对应哪个列。而持久层的目的就是完成对象数据和关系数据的转换。
业务层:用于业务处理。采用事务脚本模式。将一次请求中所有的业务封装成一个方法,保证方法中所有的数据库更新操作同时成功,同时失败。不允许部分成功,部分失败,这样引起数据混乱的情况发生。
表现层:采用MVC模式。M表示模型,就是实体类,用于数据的封装和数据的传输。V表示视图,用于展示数据和接收数据。C表示控制,用于调用业务组件,完成业务流程的控制。
书写单例模式
public class Man {
private static Man m = new Man();
private Man(){}
public static Man getMan(){
return m;
}
}