JavaWeb常考面试题(找工作必看)

1.Redis在项目中的使用场景

数据类型使用场景
String比如说,我想知道什么时候封锁一个IP地址 Incrby 命令
Hash存储用户信息 【ID,name,age】 Hset (key field value )
List实现最新消息的排行 、 利用List的push命令,将任务存在list集合 ,同时使用另一个命令,将任务从集合中取出 pop --可以模拟消息队列【电商中的秒杀】
Set可以自动排重。比如在微博中将每个人的好友存在集合中(Set), 这样求两个人的共同好友,只需要求交集即可
Zset以某个条件为权重,进行排序 如:商品价格排序

2.消息队列在项目中的使用

背景:在分布式系统中是如何处理高并发的。
由于在高并发的环境下,来不及同步处理用户发送的请求,则会导致请求发生阻塞。
比如说,大量的insert、update之类的请求同时到达数据库MYSQL,直接导致数据·的行锁表锁,甚至会导致请求堆积很多,从而触发大量的连接错误。使用消息对列可以解决
【异步通信】

3.JVM垃圾回收机制,GC发生在JVM哪部分,有几种GC,它们的算法是什么?

首先GC肯定在堆里、
次数上频繁收集Young区(Minor GC)
次数上较少收集Old区(Full GC)
j基本不动Perm区
GC算法:
1.引用计数法(JVM一般不采用这个方式)
缺点:
1.每次对对象赋值时均要维护引用计数器,且计数器本身也有一定的消耗。
2.较难处理循环引用
2.复制算法
年轻代中使用的是Minor GC 这种GC算法采用的是复制算法
缺点:需要双倍空间
优点:效率高没有内存碎片
3.标记清除
老年代一般是由标记清除或者是标记清除与标记整理混合使用
优点:不需要额外空间
缺点:两次扫描,耗时严重
会产生内存碎片
4.标记压缩
老年代一般是由标记清除或者是标记清除与标记整理混合使用
优点:没有内存碎片,可以利用bump
缺点:需要移动对象的成本
5.标记清除压缩

4.mysql在什么时候建立索引

哪些情况需要建立索引哪些情况不需要建立索引
主键自动建立唯一索引表记录太少
频繁作为查询条件的字段应该建立索引经常增删改的表或字段
查询中与其它表关联的字段,外键关系建立索引where条件里用不到的字段不建立索引
单键/组合索引的选择问题,组合 索引的 性价比高过滤性不好的不适合建立索引
查询中排序的字段,排序字段若通过索引去访问将大大提高排序的速度
查询中统计或者分组字段

5.Redis持久化有几种类型,他们的区别

RDB
优点:节省磁盘空间,恢复速度快。
缺点:当数据量大时比较消耗性能
AOF(以日志的形式来记录每个写操作,只许追加文件,但不可以改写文件)
优点:备份机制更稳定,丢失数据概率更低
可读的日志文本,通过操作AOF稳健,可以处理误操作。
缺点:比起RDB占用更多的磁盘空间
恢复备份速度要慢
存在个别BUG,造成恢复不能
每次读写都同步的话,有一定的性能压力

6.简单谈一下SprinMVC的工作流程

我们都知道它在处理模型数据有两种方式
方式一:将方法返回值设置为ModelAndView
方式二:方法返回值仍是String类型,在方法的入参中传入Map,Model或者ModelMap
步骤:
1.发送请求
2.DispatcherServlet(中央控制器) 调用处理器映射器找到处理器—>HandlerMapping(处理器映射器)
3.返回HandlerExecutionChain(HandlerIntercepter处理器拦截器 Handler处理器对象)
4.通过处理器适配器调用具体的处理器

在这里插入图片描述

7.序列化使用场景

对象的序列化:目的:将一个具体的对象进行持久化,写入到硬盘上。(注意:静态数据不能被序列化,因为静态数据不在堆内存中,而是在静态方法区中)
Serializable: 用于启动对象的序列化功能,可以强制让指定类具备序列化功能,该接口中没有成员,这是一个标记接口。这个标记接口用于给序列化类提供UID。这个uid是依据类中的成员的数字签名进行运行获取的。如果不需要自动获取一个uid,可以在类中,手动指定一个名称为serialVersionUID id号。依据编译器的不同,或者对信息的高度敏感性。最好每一个序列化的类都进行手动显示的UID的指定。
二、非序列化使用场景
如何将非静态的数据不进行序列化?用transient 关键字修饰此变量即可。使用场景:为了安全起见,有时候我们不需要在网络间
传输一些数据(如身份证号码,密码,银行卡号等)
三、

  1. 在序列化的时候,被transient或者static修饰的属性,不可以序列化。
  2. 一个类可以被序列化,那么它的子类也可以被序列化。
  3. 序列化可以实现深复制,而Object中的clone实现的就只是浅复制。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值