面试题随时补充补充

目录

get和post的区别:

session与cookie:  

转发与重定向: 

JSP四大作用域:

JSP的九大内置对象:

 JDK、JRE、JVM

 ==和equals的区别

HashCode作用:

两个对象的 hashCode() 相同,则 equals() 也一定为 true吗?

List和Set

Map 

进程、线程关系

线程创建

线程生命周期

 垃圾回收三种算法

并行、并发

 并发三特性:

TCP/UDP:

三次握手(客户端确认两次)

为什么TCP要握手三次?

四次挥手:(双方需要确认两次)

为什么TCP挥手需要四次?

乐观锁、悲观锁

饿汉式:

懒汉式:

数据库三范式:

MVC架构:

Spring框架:

事务4个特点

序列化/反序列化


get和post的区别:

get以查询字符串形式提交post以表单数据组形式提交
在地址栏中能够看到在地址栏中看不到
URL长度有限制URL长度无限制
不安全安全

session与cookie:  

session存储数据在服务端cookie在客户端
session没有数据大小限制cookie最大3kb
session数据安全,性能低cookie相对不安全,性能高

转发与重定向: 

重定向至少请求两次,重定向是浏览器向服务器发送一个请求并收到响应后再次向一个新地址发出请求转发请求一次,转发是服务器收到请求后为了完成响应跳转到一个新的地址
重定向地址栏会发生变化转发地址栏不会发生变化
重定向两次请求不共享数据转发一次请求共享数据
重定向可以跳转到任意URL转发只能跳转本站点资源
重定向是客户端行为转发是服务器端行为

JSP四大作用域:

1、当前页(pageContext):一个属性只能在一个页面中获取。

2、一次请求(request):一个页面中设置的属性,范围是一次请求。

3、一次会话(session):一个会话中的属性,只要页面不关闭,都能获取到

4、整个web应用(application):在这个服务器上,当前项目下的任何一个位置都能获取。

JSP的九大内置对象:

***request

请求

***response

响应

***session

会话

out

输出

page

当前JSP页面对象

application

应用

exception

异常,只能在指定了isErrorPage="true"使用

pageContext

当前页,作用域

config

配置

 JDK、JRE、JVM

 ==和equals的区别

  • ==是运算符
  1. 对于基本类型, 比较的是值是否相同
  2. 对于引用类型,比较引用地址是否相同
  • equals是object方法

equals方法只能用来比较引用数据类型,在Object类中所定义的equals方法底层也是通过==号比

较对象的地址值。但是如果一个类重写了 equals 方法此时就可以比较内容了。

HashCode作用:

获取哈希码

两个对象的 hashCode() 相同,则 equals() 也一定为 true吗?

当有 a.equals(b) == true 时,则 a.hashCode() == b.hashCode() 必然成立,

反过来,当 a.hashCode() == b.hashCode() 时,a.equals(b) 不一定为 true。

List和Set

Map 

进程、线程关系

  • 进程是资源分配的基本单位
  • 线程是CPU最小执行单位

1、一个进程可以有多个线程,至少有一个线程;而一个线程只能在一个进程的地址空间内活动。
2、资源分配给进程,同一个进程的所有线程共享该进程所有资源。
3、CPU分配给线程,即真正在处理器运行的是线程。
4、线程在执行过程中需要协作同步,不同进程的线程间要利用消息通信的办法实现同步。

线程创建

线程生命周期

 垃圾回收三种算法

  1. 清除算法
  2. 复制算法
  3. 整理算法

并行、并发

并行(齐跑):时间上重叠,两任务在同一时刻互不干扰同时执行

并发(接力跑):允许两个任务彼此干扰,同一时间点只有一个任务运行,交替执行

 并发三特性:

原子性、可见性、有序性

TCP/UDP:

TCP:安全可靠协议

UDP:不安全协议

三次握手(客户端确认两次)

发送端和接收端 建立逻辑连接 (tcp三次握手)
1. 第一次握手, 客户端 向服务器端 发出连接请求 ,等待服务器确认。
2. 第二次握手, 服务器端 向客户端 回送一个响应 ,通知客户端收到了连接请求。
3. 第三次握手, 客户端 再次向服务器端发送 确认信息 ,确认连接

为什么TCP要握手三次?

TCP是可靠的传输控制协议,三次握手能保证数据可靠传输又能提高传输效率

四次挥手:(双方需要确认两次)

发送端和接收端 断开逻辑连接
1)TCP 客户端发送数据 ,用来 关闭客户到服务器的数据传送 。请求关闭
2) 服务器收到这个数据 ,它发 回一个数据,确认序号为收到的序号加1 。确认收到
3)服务器 关闭客户端的连接,发送一个数据给客户端 。关闭
4)客户端 发回数据确认,并将确认序号设置为收到序号加1。 确认关闭

为什么TCP挥手需要四次?

关闭TCP连接需要进行四次连接, 每次关闭一个方向上的连接需要 FIN和ACK两次握手。

乐观锁、悲观锁

乐观锁:拿数据时以为不会修改,不上锁,提交更新时判断一下别的线程有没有更新数据

悲观锁:拿数据时以为会被修改,每次拿数据都上锁,别人拿不到数据直到锁释放

饿汉式:

  • 对象预先加载,线程是安全的,在类创建好的同时对象生成,调用获得对象实例的方法反应速度快,代码简练。
  • 饿汉式:创建对象实例的时候直接初始化 空间换时间
//饿汉式:创建对象实例的时候直接初始化 空间换时间
public class SingletonOne { 
//1、创建类中私有构造
private SingletonOne(){ }
//2、创建该类型的私有静态实例
private static SingletonOne instance=new SingletonOne();
//3、创建公有静态方法返回静态实例对象
public static SingletonOne getInstance(){
         return instance;
     }
 }

懒汉式:

  • 对象延迟加载,效率高,只有在使用的时候才实例化对象,但若设计不当线程会不安全,代码相对于饿汉式复杂,第一次加载类对象的时候反应不快。
  • 类内实例对象创建时并不直接初始化,直到第一次调用get方法时, 才完成初始化操作 时间换空间
//懒汉式
public class Singleton02 { 
// 私有构造
private Singleton02(){} 
// 此实例为静态且私用
private static Singleton02 instance; 
// 公共静态方法获得实例
public static Singleton02 getInstance(){ 
        //实例化放到调用方法时期
        if(instance!=null){ 
            new Singleton02(); 
        }
        return instance; 
    } 
}

数据库三范式:

  1. 确保每列保持原子性
  2. 确保每列和主键相关(避免冗余数据产生)
  3. 确保每列和主键列直接相关(满足二三范式)

MVC架构:

执行顺序——VCSD

  • 模型Model:
  1. 数据库实体类entity(生产get、set)
  2. 数据持久层dao(操作数据库,写sql传参数的结果)
  3. 业务控制层service(其他活)
  • 视图View:HTML。。。前端页面
  • 控制器Controller:servlet(request、responce调方法)

Spring框架:

  • AOP(面向切面编程):通过Spring将业务逻辑从应用服务中分离出来,实现高内聚开发(由相关性强的代码组成,只负责一项任务)
  • IOC(控制反转):为降低耦合度,把对象创建和对象间调用过程,交给Spring进行管理

事务4个特点

  1. 原子性 A。一个事务,要么全部完成,要么全部不完成。
  2. 一致性 C。在事务开始之前和事务结束之后,数据库的完整性没有被破坏。
  3. 隔离性 I。数据库允许多个事务同时对数据进行处理。每个事务之间是相互隔离。
  4. 持久性 D。事务结束以后,对数据的增删改是永久性的。
     

序列化/反序列化

序列化:将对象写入到IO流中,将内存模型的对象变成字节数字,可以进行存储和传输。
反序列化:从IO流中恢复对象,将存储在硬盘上或者从网络中接收的数据恢复成对象模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值