java复习题

1.抽象类和接口的区别
1.定义不同
抽象类:public Abstract class 类名{}
接口:interface 接口名{}
2.和父类的关系标识不同
抽象类:extends(继承)
接口:implements(实现)
3.成员不同
抽象类:
成员变量:
可以是变量,也可以是常量;
构造方法:
有,是为了给子类访问父类数据的成员变量赋值;
成员方法:
可以是普通方法,也可以是抽象方法;
接口:
成员变量:
public static final int a=10;
构造方法:
没有
成员方法:
jdk7以前只能是抽象方法,从jdk8开始允许有普通方法
4.设计理念不同
抽象类:is a 的关系(保证了代码的复用性)
接口:like a 的关系(保证程序的扩展性)

2.== 和 equals()的区别

==:可以比较基本数据类型,也可以比较引用类型
基本数据类型:比较具体的值是否相等
引用数据类型:比较地址值是否相同
equals():只能比较引用数据类型
默认是比较地址值,重写之后比较的是对象的成员变量值

3.简单描述String s = new String(“hello”);和String s = "hello"的区别?
前者储存在堆内存,后者存储在方法区

4.String,StringBuffer,StringBuilder的区别?

String:字符串,底层是字符数组,被final修饰,不能被继承,一旦创建不能改变,在常量池中;
StringBuffer:线程安全的可变字符序列,字符串缓冲区
StringBuilder:线程不安全的可变字符序列,字符串缓冲区

5.基本类型对应的包装类?String类型和int类型互相转换所用的方法?byte缓冲池的范围?
包装类
基本类型 包装类型
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
boolean Boolean

Integer
把String转为int static parseInt() ****
把int转为String static valueOf() ****

   byte的缓冲池的数据范围:-128到127

6.获取当前时间?获取当前时间的毫秒值?格式化时间使用的类,指定格式的定义?格式化时间使用的方法?String类型和Date类型的相互转换?
new Date()
Date
表示特定的瞬间,精确到毫秒
getTime()获取当前时间的毫秒值
setTime()把毫秒值变成时间对象

DateFormat(抽象类)
SimpleDateFormat
构造方法
默认格式
指定格式:yyyy-MM-dd HH:mm:ss
format(Date d)把时间转为字符串
parse(String s)(这里的s是时间格式的字符串)方法的意思是把字符串转为时间对象

7.常见的数据结构有哪些?
栈 先进后出
队列 先进先出
数组 查询快增删慢
链表 查询慢增删快

哈希表

8.集合和数组的区别?
长度区别:
数组 定长
集合 长度可以改变
存储类型:
数组 基本类型,引用类型
集合 引用对象(对象);
存储内容:
数组 同一种数据类型
集合 可以是不同的数据类型集合

9.arrayList和linkedList的区别?
ArrayList底层是可变数组,线程不安全,效率高,有序可重复,查询快增删慢

LinkedList底层是链表,线程不安全,效率高,有序可重复,查询慢增删快

10.treeSet底层是什么数据结构?是按照什么顺序来存储数据的?
红黑树(自平衡的二叉数) 集合中第一个元素为根元素,其余元素分别为与其对比,小的放左,大的放右. 读取原则 : 左 中 右
11.map集合的添加方法是什么?这个方法还有一个用途是?
put() 修改(键一样,值不同第一次返回null,第二次返回 第一个值)

12.hashMap和hashtable的区别?
hashMap : 无序键唯一值可以重复 允许null键null值 线程不安全 效率高
hashtabl : 无序键唯一值可以重复 不允许null键null值 线程安全 效率低

13.泛型好处?

1.把运行时期的问题,提前到了编译期;
2.避免了类型的强制转换;
3.优化了程序的设计,解决了黄色的警告线

14.IO流的分类?
按流向分:输入流,输出流
按数据类型分:字节流,字符流

15.IO流常用的方法?(读和写)
read() , write(), close()
InputStreamReader isr=new InputStreamReader(new FileInputStream(“资源路径”),“编码类型”);
int len=0;
while((len=isr.read())!=-1){
System.out.println((char)len);
}
isr.close();
16.高效字符流中的特有方法?
BufferedReader br=new BufferedReader(new FileReader(“文本文件路径”),true);
String line=null;
while((line=br.readLine())!=null){
System.out.println(line);
}
br.close();

17.打印流的特点?特有的功能?

特点:只能写数据,不能读数据;
PrintWriter pw=new PrintWriter(“文本文件路径”);
PrintWriter pw=new PrintWriter(new FileOutputStream(“文本文件路径”),true);
pw.print(任意类型);
pw.println(任意类型);
pw.close()

18.什么是序列化?什么是反序列化? !!!
ObjectInputStream ois=new ObjectInputStream(new FileInputStream(“路径”));
ois.readObject(对象);
ois.close();

	ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("路径"));
			oos.writeObject(对象);
			oos.close();
	
	什么是序列化?
		把对象按照流一样的方式存入文本文件,或者在网络中传输;
		把对象变成二进制;
	什么是反序列化?
		把文本文件中的流对象数据,或者网络中的流对象数据还原成对象;
		把二进制变成对象;

19.序列化流(对象流)特有的方法?
ois.readObject(对象); oos.writeObject(对象);

20.Properties集合配合IO流的使用,需要使用哪两个方法?

持久的属性集
可以和IO流结合使用
把文本中固定格式的数据读取到集合
Properties p=new Properties();
FileReader fr=new FileReader(“固定格式的文本文件”);
p.load(fr);
fr.close();

	FileWriter fw=new FileWriter("固定格式的文本文件");
	p.store(p,"注释");
	fw.close();

21.多线程有几种实现方案,分别是什么?
两种;
A:extends Thread;重写run()方法;
B:implements Runnable 接口;重写run()方法;

22.同步有几种方式,分别是什么?

两种;
A:同步代码块
B:同步方法

23.启动一个线程是run()还是start()?它们的区别?
start();
run():调用只是普通的调用方法;
start():开启线程,由jvm调用run()方法;

24.sleep()和wait()方法的区别

sleep():线程休眠,必须传入毫秒值参数,休眠状态不释放锁;
wait():线程等待,可以不传入参数,等待状态立即释放锁,如果被唤醒,从这里开始;

25.线程的生命周期
新建-就绪-运行-死亡(就绪-运行-阻塞)

26.常用的设计模式有几种?你用过几种?
简单工厂模式
工厂方法模式
策略模式
装饰模式
合成模式
迭代子模式
模板方法模式
建造模式
单例模式
多例模式
27.数据库分类?有什么区别?
A:关系型:存储关系数据的数据库,以行和列的形式存储数据的数据库;
B:面向对象:非关系型的数据库,是以key-value 的形式存储数据;
28.常见的关系型数据库有哪些?
MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费.

Oracle :收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MYSQL.

DB2 :IBM公司的数据库产品,收费的.银行系统中.

SQLServer:微软公司.收费的中型的数据库. .net C#这两种编程语言开发的数据库

SyBase :赛尔斯.已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.

Java相关的数据库:MYSQL,Oracle.

29.sql分类?分别代表什么意思?
DDL:数据定义语言;创建数据库,创建表结构,视图,索引;
DML:数据操纵语言;insert,delete,update;
DQL:数据查询语言;select
DCL:数据控制语言;操作用户的权限;

30.在mysql数据库中,数据类型varchar 和 char 的区别?
varchar 和 char 的区别:
varchar:长度可变,定义varchar(10) 如果真实长度为8,将省略两个位置;最大长度:65535
char:定长,定义char(10) 如果真实长度为8,将使用空格补齐;最大长度:255

31.在mysql数据库中,数据类型double(5,2)是什么意思?

double(5,2) 最大5位有两位小数:999.99

32.数据库中常用的约束有哪些?
主键约束 唯一约束 非空约束 外键约束
唯一,非空 唯一,不重复 可为null

33.数据库中常用的索引有哪些?
主键索引 唯一索引 全文索引 普通索引index()
34.视图是什么意思?
视图是一种有结构(表结构 有行有列)但是没结果(不能存数据)的虚拟表,
虚拟表的结构来源不是自己定义而是从对应的基表(真实存在的表)中产生(ddl都可以使用 show desc create drop)

35.常用的聚合函数有哪些?
sum(),avg(),max(),min(),count(*)
limit

36.去重的关键字是什么?
distinct 去重

37.分组的关键字是什么?
group by having
38.排序的关键字是什么?
order by asc ,desc
39.关键字in中一般存放的是什么?
集合
40.表与表的关系有几种?分别是如何建立关系的?
4种
一对一
把主键当做外键,来引用其他关联表的主键;
create table fu(
id int primary key auto_increment,
name varchar(50),
foreign key fu(id) references qi(id)
);

create table qi(
id int primary key auto_increment,
name varchar(50));

一对多
在多的一方增加一个外键字段来引用其他关联表的主键;
create table emp(
id int primary key auto_increment,
name varchar(50),
did int ,
foreign key emp(did) references dept(id)
);

create table dept(
id int primary key auto_increment,
name varchar(50));

多对多
需要创建第三张表来维护其关系;
create table stu(
sid int primary key auto_increment,
name varchar(50));

create table tea(
tid int primary key auto_increment,
name varchar(50));

create table stu_tea(
sid int,
tid int,
constraint ssid foreign key (sid) references stu(sid),
constraint ttid foreign key (tid) references tea(tid)
);
41.在复杂查询中都有哪些链接?如果使用链接,必须要消除什么?如何消除?
自然连接:
select * from emp natural join dept;

内连接:
方言:
select * from emp,dept where emp.deptno=dept.deptno;
标准:
select * from emp e inner join dept d on e.deptno=d.deptno;

外连接:
左:
select * from emp e left outer join dept d on e.deptno=d.deptno;
右:
select * from emp e right outer join dept d on e.deptno=d.deptno;

全外连接:mysql 原本不支持全外连接,要使用关键字union来相连
select * from emp e left outer join dept d on e.deptno=d.deptno;
union
select * from emp e right outer join dept d on e.deptno=d.deptno;

42.内链接的关键字?
inner join on

43.左外链接的关键字?
left outer join on

44.右外链接的关键字
right outer join on

45.在MySQL中支持全外链接吗?使用哪个关键字来完成全外链接?
不支持 union
46.什么是子查询?
嵌套查询,如果在一个sql 语句中出现两个以上的select 语句就是子查询;

子查询: 当一个查询是另一个查询的条件时,称之为子查询。
子查询=(简单查询 + 限定查询 + 多表查询 + 统计查询)大综合
多表查询是不建议使用的,因为性能差,但是多表查询是可以使用子查询替代的,所以子查询在开发使用的非常多。
47.子查询可以出现在什么位置?
from 后 当做一个表使用
where 后 当做一个条件使用

48.子查询结果的分类有哪些?
一行一列 一行多列 多行一列 多行多列

49.jdbc是什么意思?
 JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。

50.使用jdbc的步骤是什么?
JDBC入门
导jar包:驱动!
加载驱动类:Class.forName(“类名”);
给出url、username、password ;
使用DriverManager类来得到Connection对象!

51.jdbc链接数据库的4大参数你会写吗?分别是什么意思?
四大参数:
Class.forName(“com.mysql.jdbc.Driver”);
String url=“jdbc:mysql://localhost:3306/jdbc1”;
String username=“root”;
String password=“123”;

52.mysql和oracle的端口号分别是?
3306 1521

53.在jdbc的使用中你都用到了哪些类和接口?
DriverManager、Connection、Statement,和ResultSet!

54.Statement和PreparedStatement的区别?
?PreparedStatement是Statement接口的子接口
55.使用PreparedStatement的好处?
防SQL攻击;
?提高代码的可读性、可维护性;
预编译
56.mysql支持预编译吗?默认是打开还是关闭?
支持 关闭
57.mysql支持批处理吗?默认是打开还是关闭?
支持 关闭
58.事务的四大特性?
ACID 原子性 一致性 隔离性 持久性
59.事物的隔离级别?
串行化 可重复读 读已提交 读未提交
60.如果不考虑事物的隔离级别将可能出现哪些问题?(两类是更新问题,三类是读问题)
脏读 不可重复读 虚读 丢失 更新
61.乐观锁和悲观锁分别是什么?update默认使用的是哪种锁?
1.悲观锁 假设丢失更新问题一定会发生.
乐观锁 假设丢失更新问题一定不会发生.
update语句默认添加排它锁.
62.mysql数据库中如何使用事物?
?开启事务:start transaction;
?结束事务:commit或rollback。

63.jdbc中如何使用事物?
con.setAutoCommit(false)表示开启事务!!!
commit()
rollback()
64.jdbc中事物默认是自动开启的吗?

65.同一事务中所有的操作,必须使用同一个Connection对象吗?

66.mysql和oracle的事物的隔离级别分别是?
可重复读 读已提交

67.常见的数据库连接池有哪些?
DBCP是Apache提供的一款开源免费的数据库连接池!
 C3P0是开源免费的连接池!C3P0被很多人看好!

68.使用数据库连接池的好处?

数据库连接池* 好处:节省创建连接与释放连接 性能消耗 ---- 连接池中连接起到复用的作用 ,提高程序性能

69.使用c3p0数据库连接池的配置文件名称是什么?必须放在什么位置?
?文件名称:必须叫c3p0-config.xml
?文件位置:必须在src下

70.html和XML的区别?
html 只能展示 语言
Xml 不仅可以展示,而且可以储存

71.XML文件的第一行是什么?开头允许有空格吗?
文档声明 (<?xml version="1.0" encoding="UTF-8"?> 文件首行)
不能有空格
72.常见的dom解析XML的方式有哪些?你使用的有哪些?
dom4j
Sax
dom

73三层模型
三层架构
它分为 前端表现层 业务逻辑层 后台是dao层 数据层
表现层调用业务逻辑层 业务逻辑层 调用dao层的数据
好处 主要是解决开发中的高内聚低耦合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Angzush

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值