IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Java面试题二 -> 正文阅读

[大数据]Java面试题二

1、Redis如果缓存空间满了怎么处理?

? ? ? ? 答:Redis中有对应的淘汰机制,用于处理缓存空间不够的情况,我们只需要进行合理的配置就可以了。

一般我们在将数据缓存到redis中的时候就可以设置缓存的过期时间,以免缓存中的数据一直增长。但是我们还是要考虑特殊情况,就是当缓存已经满了的时候,但是我们设置的过期时间还未到,这时如不对缓存空间进行处理,就会发生内存溢出的情况。redis中专门有用于这种情况的淘汰机制。

? ? ? ? 1、lru 淘汰被最早访问的数据--以链表的形式,最早访问的数据放在链表头,最新访问的数据放在链表尾部,当内存不够的时候,优先删除链表头部的数据。

? ? ? ? 2、lfu 淘汰访问评率最低的数据--如何确保访问量不受新老数据的影响?--redis为每一个新数据设置了一个时间戳和计数器,只有当计数器到达一定的值,或者过了一定时间,这个新数据才会和其他老数据进行比较。并且计数器的是是随着时间推移,如果没有访问的话计数器会逐渐衰减。

? ? ? ? 3、随机淘汰--随机抽取一部分数据删除,一般不用

2、servlet的生命周期?

? ? ? ? 答:初始化:加载servlet类,并调用init()

? ? ? ? ? ? ? ?使用阶段:调用service()方法,

? ? ? ? ????????结束阶段:调用destory()方法,此时servlet将等待jvm的垃圾回收

3、类在jvm中的生命周期?

? ? ? ? 答:加载:jvm加载字节码文件

? ? ? ? ????????连接:分为三个步骤

? ? ? ? ? ? ? ? ????????验证:检验字节码文件加载的类是否符合jvm对类的规范。

? ? ? ? ? ? ? ? ????????准备:为静态变量,静态方法在方法区中划分静态区,并给静态变量赋初始值,整型为0,字符型为null,布尔型为false

? ? ? ? ? ? ? ? ????????解析:将符号引用转化为直接引用,就是将地址值赋值为对应的引用对象

? ? ? ? 初始化:将类中的变量进行初始化赋值,此时的赋值是将类中定义的量赋值给变量

? ? ? ????????? 使用:定义对象,进行使用

? ? ? ? ????????卸载:在该类没有任何引用后jvm对其进行垃圾回收

4、如何对搜索进行优化?

? ? ? ? 答:默认此时的搜索是通过遍历来得到数据结果的

????????????????1、可以参考elasticSearch中对数据进行的操作,建立一个类,采用倒排索引的方法将所有数据存放到其中,在进行搜的时候通过这个类来查询。

? ? ? ? ? ? ? ? 2、也可以吧数据做成二叉树的形式,查询的时候,重二叉树中找数据也会快一点

5、hashmap和hashtable的区别?

? ? ? ? 答:1、hashMap是线程不安全的,hashtable是线程安全的

? ? ? ? ? ? ? ? 2、hashmap中key,value可以为null,hashtable中不行

? ? ? ? ? ? ? ? 3、hashmap和hashtable继承的父类是不同的,且hashtable继承的父类以及是淘汰的

6、线程的生命周期?

? ? ? ? 答:新生--就绪--运行--(阻塞)--死亡

7、线程的状态有那些,以及是如何达到这个状态的?

? ? ? ? 答:就绪:调用start()方法时,线程就进入线程池等待cpu的调用

? ? ? ? ? ? ? ?运行:cpu给对应线程分配时间片

? ? ? ? ? ? ? ? 阻塞:阻塞也可以说是等待状态

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 有限期等待状态:sleep(timeout)? wait(timeout) join(timeout)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?无限期等待:wait()? join()

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? wait()如果不定义时间,会一直处于等待状态,直到有另一个线程通过notify()/notifyAll()方法将其唤醒。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? join()如果不设置过期时间,就会一直执行wait(0)的方法,直到该线程死亡。

? ? ? ? ? ? ? ? 死亡:线程结束会自动死亡

8、wait()和sleep()方法的区别:

? ? ? ? 答:wait()是Object的方法。sleep()是Thread类的方法

????????调用wait()方法时,线程会释放cpu资源,直到被notify方法唤醒,sleep()方法在调用的时候不会释放资源,要等到睡眠时间结束继续执行

9、线程池的特点?

? ? ? ? 答:我们一般用ThreadPoolExcuter来创建线程池

? ? ? ? ? ? ? ?在线程使用不多的情况下,默认使用的是核心线程,任务量提高了,核心线程不够用了,就会逐渐拓展到最大线程数,如果任务量还在提高,线程已经满载运行了,等待队列也满了。此时就会触发拒绝策略,就是不继续接收任务。当任务量减小的时候,除核心线程外,其余的线程会在等待一段时间,后死亡。

10、如何处理数据库返回的结果集?

? ? ? ? 答:这里解释的是springboot,mybatisplus的情况

? ? ? ? ? ? ? ?首先要创建一个和访问结果中的类型相同的类和一个对应的dao类,然后使访问数据库的类继承mybatisplus中的ServiceImpl类,并将ServiceImpl的泛型设置为<dao类,类名>。ServiceImpl中有通过id或者通过过滤器得到结果集的方法,得到的结果集就是之前建立的类的集合。

11、spring的核心模块有那些?

? ? ? ? 答:iop容器模块

? ? ? ? ? ? ? ? aop模块

? ? ? ? ? ? ? ? 数据库模块

? ? ? ? ? ? ? ? web引用模块

? ? ? ? ? ? ? ? 测试模块

12、Redis缓存穿透,缓存击穿,缓存雪崩分别是什么意思以及解决思路

? ? ? ? 答:缓存穿透:访问数据库中不存在的数据,正常情况下如果查询数据库没有的数据,返回null是不会吧结果放到缓存中,这就导致每次查询都会去访问一次数据库。

? ? ? ? 解决办法:1、使用布隆过滤器? 2、缓存返回的null数据

? ? ? ? ? ? ? ? 缓存击穿:访问数据库中存在的一条数据,并且这个访问的并发量很大,缓存击穿就出现在redis中这个数据的key过期的时候,大量的并发同时访问数据库,造成服务器的崩溃。

? ? ? ? 解决办法:采用互斥锁,即当value值为空的时候不是我们去访问数据库,而是通过redis自带的setnex? (set if not exit)来加载对应的key,value。当返回结果为true时,表示数据库中对应的数据已经缓存到redis上了,大并发的数据此时就访问的就是redis中的数据了

? ? ? ? ? ? ? ? 缓存雪崩:不同数据访问,并发量很大,如果redis中key在同一时刻过期,也会造成大量数据直接访问数据库,

? ? ? ? 解决办法:1、分散缓存过期的时间 2、可以设置热点数据永不过期

提前说明一下,这是我面试的问题都是我在网上找的答案,结合自己的话说了一下理解,不一定是正确的,主要作为我个人的总结。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:32:57  更:2021-12-24 18:33:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:46:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码