1.如何将字节流转为字符流?
InputStreamReader是字节流通向字符流的桥梁
BufferedReader in = new BufferedReader(new InputStreamReader(System.in))
OutputStreamWriter 是字符流通向字节流的桥梁
Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
2.说下事务的ACID
原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生,
一致性(Consistency):事务前后数据的完整性必须保持一致.
隔离性(Isolation):事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离,
持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响,
3.事务有哪几种隔离级别呢?
读未提交(read uncommitted)
另一个事务修改了数据,但尚未提交,而本事务中的select会读到这些未被提交的数据脏读.
读已提交(read committed)RC
事务能够看到的数据都是其他事务已经提交的修改,也就是保证不会看到任何中间性状态,当然脏读也不会出现,
可重复读(repeatable read)RR
保证同一个事务中多次读取的数据是一致的,这是MySQL InnoDB引擎的默认隔离级别.
串行(serializable)
并发事务之间是串行化的,通常意味着读取需要获取共享读锁.
更新需要获取排他写锁,如果SQL使用WHERE语句,还会获取区间锁,是最高的隔离级别.
4.事务的并发?什么是脏读?事务隔离级别,每个级别会引发什么问题?MySQL默认是哪个级别?
事务的并发问题
- 脏读 :脏读是指在一个事务处理过程中读取了另一个事务未提交的数据.
- 不可重复读,事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致.
- 幻读:可重复读的隔离级别解决了不可重复读的问题,保证了同一个事务里.查询的结果都是事务开始时的状态(一致性).
**MySQL默认的事务隔离级别为repeatable-read(可重复读)**
MySql支持四种事务隔离级别
事务隔离的级别要得到底层数据库引擎的支持,而不是应用程序或者框架支持.
隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也就越大,
可以优先考虑把数据库系统的隔离级别设为Read Committed,它能够避免脏读取,而且有较好的并发性能,
尽管他会导致不可重复读,幻读这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制.
5.名词解释 IP协议 TOC协议 UDP
IP协议 分组交换协议 不可靠传输 一个数据包自动分成若干小的数据包然后通过网络进行传输
TCP协议 传输控制协议 可靠协议 建立在IP协议之上, 先建立连接,然后才能传输数据,传输完成后断开连接,支持双向通信,双方可以同时传输和接收数据,
UDP 数据报文协议,不面向连接,不可靠传输,传输效率高,通常用来传输视频等能容忍丢失部分数据的文件,
6.TCP与UDP比较
TCP:面向连接的协议,数据传输之前必然要建立连接,
UDP:每个数据报中都给出了完整的地址信息,无需要建立发送方和接收方的连接
TCP:传输数据大小限制,双方的socket就可以按统一的格式传输大的数据.
UDP:UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内
TCP:可靠协议,确保完全正确发送数据.
UDP:不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方,
7.Socket
网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向连接的一端称为一个Socket.
Socket通常用来实现客户方和服务方的连接,一个Socket由一个Ip地址和一个端口号唯一确定,
在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程,
8.异常的处理
声明:其实就是程序中遇到异常时,自己不处理,交给其它程序处理throw(在使用throw抛出异常代码的后面,不能书写任意代码)
捕获:其实就是在程序中遇到异常时,不会交给其他程序处理,自己处理try,catch,finally(使用try...catch...finally结构,catch中抛出异常后面如果有其他语句,先执行finally语句再去执行catch中的其他语句)
9.定义异常处理时,什么时候定义try,什么时候定义throws呢?
功能内部如果出现异常,如果内部可以处理,就用try;
如果功能内部处理不了,就必须声明出来,让调用者处理.
10.请写出你最常见的五个runtime excption.
NullPointerException(空指针异常)
ArrayIndexOutOfBoundsException(数组索引越界异常)
ClassCastException(类型转换异常)
ArithmeticException(数字计算异常)
NumberFormatException(数字格式化异常)
标签:面试题,Java,隔离,并发,级别,Day06,UDP,事务,数据 From: https://www.cnblogs.com/carney/p/17036694.html