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---初级、中级工程师面试问题2 -> 正文阅读

[大数据]Java---初级、中级工程师面试问题2

问6:什么是跨域?跨域问题如何解决?

答:实际使用中,浏览器因为安全的考虑,所以设置了同源策略。同源策略简单理解就是NDS域名、端口号、协议完全相同就称为同源。同源下的页面之间才能进行js的dom操作,如果不在同一个源下任何跨文档dom的访问都是被阻止的。不同源下的访问,就称之为跨域访问。

解决跨域问题的方式有很多种:

①基于JavaScript标签的src方式 ?②基于JQuery的JSONP方式 ?③基于CORS的方式

JSONP的方式只能解决GET方式提交。CORS的方式解决更加完美。CORS是一个W3C标准,全称是跨域资源共享(corss-origin resource sharing)有图

问7:知道RPC吗?简单介绍下

答:Remote Procedure Call)远程过程调用,分布式的应用分成客户端和服务端,他们各自运行在自己的服务器中,客户端的controller调用服务端的service就是不在一个应用内调用,而是通过网络传输来调用。这种通过网络来使controller调用远程的service的技术叫RPC技术。RPC技术的底层原理就是对象的序列化、反序列化以及序列化后数据的传输,常见的使用RPC的框架有Dubbo、ZeroICE

问8:Dubbo搭建的分布式,注册中心使用的是Zookeeper,谈下对Zookeeper的理解

答:首先注册中心的作用主要是对服务进行集中管理,提高系统的可用性、可伸缩性、服务单服务的注册、客户端服务的调用。

Zookeeper是一个分布式的、开放源码的分布式应用程序协调服务,它是Hadoop和Hbase的重要组件。zookeeper 是有心跳机制的,判断服务端是否还在活跃中。注册中心每隔一段时间去请求服务端,如果有反应就保留该服务器的地址,如果没有,就删除该服务器在注册中心的地址。防止zookeeper注册服务中心也挂掉,不能总将注册地址放在内存中,所以zookeeper有一个配置文件,存放该注册中心内存中的内容,进行备份。

dataDir=/tmp/zookeeper

问9:redis用过吗?有哪些数据类型?解释下缓存穿透、缓存击穿、缓存雪崩,以及如何解决这些问题

答:redis的数据类型有string、hash、List、Set、sorted set

缓存穿透:应用访问缓存,假如数据存在,则直接返回数据,数据在redis不存在,则去访问数据库,数据库查询到了直接返回应用,同时把结果写回redis,数据在redis不存在,数据库也不存在,返回空,一般来说空值是不会写入redis的,如果反复请求同一条数据,那么则会发生缓存穿透,解决方案是可以为这个key设置一个空值,同时写入redis,下次请求的时候就不会访问数据库,但是如果每次请求的是不同的key,同时这个key在数据库中也是不存在的,那这样依然会发生缓存穿透。因此引入了布隆过滤器:先判断key值是否存在,如果不存在,则不访问redis,那这样就可以拦截大量的请求,布隆过滤器恰好可以实现这样的需求。

缓存击穿:缓存击穿是指一个Key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个Key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个完好无损的桶上凿开了一个洞。

缓存雪崩:大量的key同时到期的时候容易发生。两种情况:①零点直接雪崩? ②时间性无关联 ?最终解决方案的大方向:熔断、限流、隔离 临时的小方案:不同的key设置不同的超时时间

问10:简述下Java中线程的生命周期中存在哪些状态?

答:①NEW 新建 ???通常继承Thread类 或 实现Runnable接口 或 实现Callable接口 ?推荐第二种方式实现多线程。前两种无法直接获取结果,需要借助于共享变量等获取,而Callable可以解决这个问题

②RUNNABLE就绪状态 ?调用start()方法之后,执行之前的状态,线程的start()不能被多次调用,否则会抛出IllegalStateException异常

③RUNNING运行状态 ?run()正在执行时线程的状态

④BLOCKED阻塞状态

⑤DEAD终止状态 ?run()方法执行结束或异常退出后的状态,此状态不可逆转

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-04 19:57:25  更:2021-07-04 19:57:44 
 
开发: 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年5日历 -2024/5/1 20:58:04-

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