Java晚课串讲

1. switch可以作用于那些数据类型上?

byte,short,int,char,String,枚举,其他类型都不允许

2. 实例变量和静态变量区别?

实例变量: 属于对象,在创建对象时存储内存堆中,创建多个对象,内存就会存在多少份, 通过引用变量来访问
静态变量: 属于类,在类被加载时存储在方法区中,无论创建多个对象,内存就会存在1份, 通过类名点来访问

3. 接口和抽象类区别?

接口: 由interface定义,通过implements实现,多实现
抽象类: 由abstract修饰,派生类通过extends继承,单继承

4. Java是值传递还是引用传递?

在Java中,无论是基本类型,还是引用类型,都是“值传递”

  • 对于基本类型:传递的是具体的值的副本
  • 对于引用类型:传递的是具体的地址的副本
5. ArrayList和LinkedList区别?

数据结构:ArrayList基于数据,容量不够的时候,采用复制方式扩容;LinkedList基于链表实现
查找操作:ArrayList比LinkedList访问效率高,因为LinkedList链表结构,需要依次查找元素,性能不高
增和删除:LinkedList首位操作效率高,ArrayList头部性能较差
线程安全:都不保证线程安全

6.Collection和Collections区别?

Collection:是一个集合顶级接口,直接继承接口有:List和Set
Collections:是一个工具类,提供了一系列静态方法,像:排序(sort),搜索(二分法查找binarySearch),翻转(reverse),线程安全(同步控制:synchronizedList)等操作

7.序列化和反序列化区别?

序列化:对象->字节序列
反序列化:字节序列->对象
实现:对象实现Serializable接口,然后使用对象流进行序列化和反序列化

  • 使用ObjectOutputStream:进行对象序列化
  • 使用ObjectInputStream:进行对象反序列化
8.创建线程的方式?

继承Thread类
实现Runnable接口
实现Callable接口
Runnable 接口 和 Callable 接口的区别
Runnable 接口 没有返回值 , Callable 接口有返回值
Runnable 接口 有抛异常 , Callable 接口没有抛异常
Runnable 接口 的方法是 run ( ) , Callable 接口的 方法是 call ( )
在这里插入图片描述

9.进程和线程区别?

进程:资源分配的最小单元
线程:CPU调度的最小单元
操作系统执行时,按照进程分配内存等资源,执行程序的时候以线程为单位执行程序中的指令
一个进程包含多个并发执行的线程,多个线程共享一个内存资源

10.TCP和UDP区别?

TCP基于连接;UDP基于无连接
TCP:要求系统资源较多,保证数据正确性,保证了数据顺序
UDP:要求系统资源较少,可能丢包,不保证数据顺序,程序结构较简单

11.三次握手和四次挥手区别?

三次握手:
第一次握手:客户端什么都不能确认;服务器确认对方发送正常,自己接收正常
第二次握手:
客户端确认了:自己发送,接收正常,对方发送,接收正常;
服务器确认了:对方发送正常,自己接收正常
第三次握手:(客户端发送ACK报文给服务器)
客户端确认了:自己发送,接收正常,对方发送,接收正常
服务器确认了:自己发送,接收正常,对方发送,接收正常

四次挥手:客户端或服务端都可以主动发起挥手操作
两次挥手:就可以释放一端到另一端的TCP连接,完全释放需要四次挥手

12.Java异常体系?

顶层Throwable,然后是exception和error
Error:虚拟机错误,outofMemoryError,stackOverFlowError
Exception两部分:
RunntimeException,也称为非检查异常:运行过程中可能发现的异常,代码逻辑错误:类型转换异常,数字下标越界,空指针,找不到类,非法参数异常
检查异常:编译期间可以检查到的异常,必须显式进行处理(捕获或者抛出):列如IOException,SQLException,FileNotFoundException,AWT

Mysql

1.seq_admin?

Mysql中没有像Oracle数据库管理系统中的序列对象(Sequence),但是我们可以使用自动递增列(Auto-Increment)来实现类似的功能。
序列(Sequence)是一种用于生成唯一数字值的对象,通常用于自动分配唯一标识符
Oracle数据库中创建名为seq_admin

CREATE SEQUENCE seq_admin
START WITH 1
INCREMENT BY 1;
INSERT INTO admin(id,username)VALUES(seq_admin.NEXTVAL,'admin_user1')

表admin有两个字段id和username,现在使用序列seq_admin给id赋值,
下列写法正确的是?(B)
 A."String sql = "insert into admin (id,username) values(?,?)";
PrepareStatement stmt = con.prepareStatement(sql);
stmt.setString(1, "seq_admin.nextval");
stmt.setString(2,"admin");"

B."String sql = "insert into admin(id,username)
values(seg_admin.nextval,?)";
PrepareStatement stmt = con.prepareStatement(sql);
stmt.setString(1,"admin");"

<解析>选择B
A:我们试图将字符串“seg_admin.nextval”分配给id字段,那么我们在数据库中国插入一个字符串而不是一个序列的下一个值。
B:将“seg_admin.nextval”直接嵌入到SQL语句中,而不是视为字符串,这将使数据库在插入时使用序列的下一个值作为id字段的值,它会自动为id字段分配唯一的值
2.常见的DBMS

Oracle,MySQL,SQL Server,MongoDB

3.数据库常见约束

非空,唯一,主键,检查,默认

4.聚合函数

计数:count
求和:sum
平均:avg
最大,最小:max,min

5.分页查询

LIMIT m,n
m:从几条记录开始查询,查询结果集的偏移量
n:每页返回的记录数
当前页偏移量= (当前页码-1)* 每页记录数

6.JDBC四大对象

Connection:表示数据库的物理连接,并且提供了操作数据库的方法
Statement:用于执行静态SQL语句并返回结果
PreparedStatement:用来执行预编译SQL语句的对象
ResultSet:执行查询后返回的结果集

Spring框架

1.简述IOC

IOC(Inversion of Control)控制反转,
IOC的实现方式主要是依赖注入(Dependency Injection,DI)的三种方式:构造方法,Setter方法,属性注入

Mybatis框架

1.#{}和${}区别

#{}:预编译。将传入的参数替换成了占位符(?),防止注入攻击

SELECT *FROM user WHERE id = #{userId}
如果userId 值为1,等价于
SELECT *FROM user WHERE id = 1

${}:只是将传入的参数直接替换到SQL中

<select id="getUserById" resultType="User">
 SELECT *FROM user WHERE id = #{userId}
</select>
String sc = "1 or 1=1"
SELECT *FROM user WHERE id = 1 or 1=1
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值