brkj面试记录

1.从页面点击到接口收到请求之间,spring的运行过程是怎样的

2.分布式事务

3.线程池

4.乐观锁悲观锁

5.数据库索引的原理

6.http协议

7.微服务的注册发现的了解

-----------------------------------------------------------------------------------

1.从页面点击到接口收到请求之间,spring的运行过程是怎样的

        用户发送请求到前端控制器,前端控制器根据url找到并生成处理对象,再调用处理器生成modelAndview,再视图解析、页面渲染,返回给用户

2.分布式事务

3.线程池

        参数:

        核心线程数、最大连接数、存活时间、时间单位、工作队列、拒绝策略、使用的工厂

        工作队列:阻塞队列(数量在核心线程数和最大连接数之间)、无界队列(没有最大连接,可以一直创建)、无缓存(一超过最大直接拒绝线程)

        拒绝策略(当超过最大连接数时):直接丢弃并抛异常、直接丢弃、丢弃最早的把当前任务加入、线程池没有关闭则直接调用线程的run方法

4.乐观锁悲观锁

        乐观锁:觉得别人不使用,没加锁,所以只要在更新的时候加上当前状态的判断,根据更新条数判断结果。读多写少时使用

        悲观锁: 每次读写都加锁,sychronized

5.数据库索引的原理

        将索引字段的键存在BTree中,不需要再全表数据扫描。

        缺点是占用空间,并且增删改的效率会降低

6.http协议

        建立连接----三次握手:

        第一次 A将位码和随机数据包发送给B,让B知道A要求建立连接

        第二次 B收到后确认后,将A的随机码加1,再生成一个随机码发送给A

        第三次 A收到确认自己的随机码,再将B的随机码+1传给B,B确认通过后建立连接。

        断开连接---四次挥手:

        第一次:客户端向服务端发送连接释放报文

        第二次:服务端向客服端发送应答报文

        第三次:服务端向客户端发送释放连接报文

        第四次:客户端向服务端发送应答报文

        为什么建立连接要三次 而断开连接要四次?

        因为客户端只要想建立连接,服务端随时准备着,而客户端想要断开连接时,服务端需要确认数据已经全部发送给客户端,所以多一次。

7.微服务的注册发现的了解,注册中心崩了会怎样

8.mybatis的$和#的区别

        #是传入成字符串(加双引号),$是传入什么就是什么

        #可以防止sql注入,能用#就用#,$主要用在数据库字段比如表名,ORDER BY 变量必须使用$

9.count(1)、count(*)、count(列名)的区别

        count(1)和count(*)不忽略null值;count(列名)忽略null值 如果列名为主键count(列名)效率高

        count(*),自动会优化指定到那一个字段。所以没必要去count(1)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值