【面经】 招商银行 2022届 秋招提前批面经

本文介绍了招商银行2022届秋招的技术面试经验,涵盖了笔试和面试环节,包括DoS攻击、软件工程生命周期、设计模式、排序算法、Java内存模型、线程池、数据库连接池、死锁条件、数据库优化、MyBatis语法等重点技术点,以及Redis缓存问题、布隆过滤器和线程创建方式等。
摘要由CSDN通过智能技术生成

招银提前批(笔试)

1. DoS攻击,即攻击者在目标主机上建立大量半开放或者完全开放的TCP连接,是连接泛洪

攻击流程:要理解dos攻击,首先要理解TCP连接的三次握手过程。

第一次握手:建立连接时,客户端发送SYN包((SYN=i)到服务器,并进入SYN SEND状态,等待服务器确认;

第二次握手:服务器收到SYN包,必须确认客户的SYN (ACK=i+1 ),同时自己也发送一个SYN包((SYN=j)}即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=j+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手,客户端与服务器开始传送数据。

一些重要的概念:

半连接:收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。

半连接队列:在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i )开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_ RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

Backlog参数:表示半连接队列的最大容纳数目。

SYN-ACK重传次数:服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息、从半连接队列中删除。注意,每次重传等待的时间不一定相同。

半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间。[1] 上面三个参数对系统的TCP连接状况有很大影响。

**SYN洪水攻击属于DoS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。**SYN洪水攻击还可以通过发大量ACK包进行DoS攻击。

2. 传统的软件工程把软件声明周期定义为6个阶段,最先的阶段是

软件的生命周期各个阶段分别是:1、问题定义;2、可行性研究;3、需求分析;4、总体设计(概要设计);5、详细设计;6、编码与单元测试;7、综合测试;8、维护

3. 设计模式

4. 【排序】

快排:

选择排序:每次选择最小/大的数

堆排序:

希尔排序:

5. 内部类

静态内部类(Static inner class)
成员内部类(Member inner class)
本地内部类(Local inner class)
匿名内部类(Anonymous inner class)

https://www.cnblogs.com/niuyourou/p/12013905.html

6. 一个进程从执行状态转换到阻塞状态:发生了I/O请求或者等待某事件的发生

运行态:进程占用CPU,并在CPU上运行;
就绪态:进程已经具备运行条件,但是CPU还没有分配过来;

阻塞态:进程因等待某件事发生而暂时不能运行; 进程在一生中,都处于上述3中状态之一。

运行—》就绪: 时间片用完。
就绪—》运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU
运行—》阻塞:发生了I/O请求或等待某件事的发生
阻塞—》就绪:进程所等待的事件发生,就进入就绪队列

P操作是阻塞作用

V操作是唤醒作用

进程:进程是程序运行的最小单位。

进程的几种状态**:就绪状态,运行状态,阻塞状态。**

运行态:进程占用CPU,并在CPU上运行;
就绪态:进程已经具备运行条件,但是CPU还没有分配过来;
阻塞态:进程因等待某件事发生而暂时不能运行;

img

当然理论上上述三种状态之间转换分为六种情况;
运行——>就绪:1,主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态。
就绪——>运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU
运行——>阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求
阻塞——>就绪:进程所等待的事件已经发生,就进入就绪队列
以下两种状态是不可能发生的:
阻塞——>运行:即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取
就绪——>阻塞:就绪态根本就没有执行,谈不上进入阻塞态。

缓存淘汰算法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TZHgAMPu-1622119525780)(https://www.pianshen.com/images/62/4290e88388c8b4134f4f6966cfed0db6.png)]


import java.util.HashMap;
import java.util.LinkedList;

/**
 *
 */
public class LRUCache {
   
    private int capacity;
    private HashMap<Integer,Integer> map;
    private LinkedList<Integer> list;

    public LRUCache(int capacity){
   
        this.capacity = capacity;
        map = new HashMap<>();
        list = new LinkedList<>();
    }

    public int get(int key){
   
        if (map.containsKey(key)){
   
            list.remove(key);
            list.addLast(key);
            return map.get(key);
        }
        return -1;
    }
    public void put(int key,int value){
   
        //如果包含这个key
        if(map.containsKey(key)){
   
            list.remove(key);
            list.addLast(key);
            map.put(key,value);
            return;
        }
        //不包含这个key
        if (list.size() == capacity){
   
            //移除
            Integer integer = list.removeFirst();
            map.remove(integer);
            list.addLast
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值