2021-2-28 Mark-Java Interview Simple

        心动时,还没来得及学会勇敢。

          勇敢时,我们已在时光里走散。

简介:2021-2-28日Java面试没能脱口而出或是回答得不好的些许问题。

1、Redis数据类型有哪些?使用Redis何种数据类型处理告警?

String、Hash、List、Set、zset 五种。

String(字符串)

String是最基本的类型,一个key对应一个value;String类型是二进制安全的,即redis的string可以包含任何数据,比如jpg图片or序列化对象;String类型的值最大存储量为512M。

Hash(哈希)

Hash是一个string类型的field和value映射表,hash适合于存储对象;存储一些结构化的数据,比如用户的昵称、年龄、性别、积分等,存储一个用户信息对象数据。

List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序;list类型经常会被用于消息队列的服务,以完成多程序之间的消息交换。

Set(集合)

Redis的Set是string类型的无序集合;集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1),适用于如利用交集求共同好友。

zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员;sorted set是插入有序的,即自动排序;当你需要一个有序的并且不重复的集合列表时,那么可以选择sorted set数据结构;例如存储全班同学的成绩,其集合value可以是同学的学号,而score就可以是成绩;或排行榜应用。

2、事务传播类型有哪些?

1、Required(默认):支持使用当前事务,如果当前事务不存在,创建一个新事物;

2、Supports:支持使用当前事务,如果当前事务不存在,则不使用事务;

3、Mandatory:中文翻译为强制,支持使用当前事务,如果当前事务不存在,则抛出Exception;

4、Required_New:创建一个新事务,如果当前事务存在,把当前事务挂起;(@Transactional(propagation = Propagation.REQUIRES_NEW))

5、Not_Supported:无事务执行,如果当前事务存在,把当前事务挂起;

6、Never:无事务执行,如果当前有事务则抛出Exception;

7、Nested:嵌套事务,如果当前事务存在,则在嵌套的事务中执行;若当前事务不存在,则表现跟Required一样。

3、ELK日志中间件?

ELK日志系统分别是Elasticsearch、Logstash、Kibana三个开源框架的缩写。

Elasticsearch:开源分布式搜索引擎,提供存储、分析、搜索功能;用于接收搜集的海量结构化日志数据,并提供给kibana查询分析。

Logstash:开源日志搜集、分析、过滤框架;用于收集日志,对日志进行过滤形成结构化数据,并转发到elasticsearch中。

Kibana:开源日志报表系统,对elasticsearch以及logstash有良好的web页面支持;用于对elasticsearch提供的数据进行分析展示。

4、MySQL分区?

什么是分区?

分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,由db自动去组织分区的数据。

在下面的场景中,分区可以起到非常大的作用:

A:表非常大以至于无法全部都放在内存中,或者只在表的最后部分有热点数据,其他都是历史数据

B:分区表的数据更容易维护,如:想批量删除大量数据可以使用清除整个分区的方式。另外,还可以对一个独立分区进行优化、检查、修复等操作

C:分区表的数据可以分布在不同的物理设备上,从而高效地利用多个硬件设备

D:可以使用分区表来避免某些特殊的瓶颈,如:innodb的单个索引的互斥访问,ext3文件系统的inode锁竞争等

E:如果需要,还可以备份和恢复独立的分区,这在非常大的数据集的场景下效果非常好

F:优化查询,在where字句中包含分区列时,可以只使用必要的分区来提高查询效率,同时在涉及sum()和count()这类聚合函数的查询时,可以在每个分区上面并行处理,最终只需要汇总所有分区得到的结果。

水平分区&垂直分区两种

分区几种方式实践:RangerListHashKey

Range:
create table range(
  id int(11),
  money int(11) unsigned not null,
  date datetime
  )partition by range(year(date))(
  partition p2007 values less than (2008),
  partition p2008 values less than (2009),
  partition p2009 values less than (2010)
  partition p2010 values less than maxvalue
);
List: create table list(
  a int(11),
  b int(11)
  )(partition by list (b)
  partition p0 values in (1,3,5,7,9),
  partition p1 values in (2,4,6,8,0)
 );
Hash: create table hash(
  a int(11),
  b datetime
  )partition by hash (YEAR(b)
  partitions 4;
Key: create table t_key(
  a int(11),
  b datetime)
  partition by key (b)
  partitions 4;

~拍一拍

5、如何解决跨域问题?

什么是跨域:

跨域指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript 施加的安全限制。

解决跨域的方法:

1、response添加header

在Servlet请求返回时添加如下代码:

// *表示支持所有网站访问,也可以额外配置响应网站
resp.setHeader("Access-Control-Allow-Origin", "*");

2、使用JSON方式,出于同源策略考虑

3、HttpClient请求转发

4、nginx转发

即利用nginx反向代理,将请求分发到部署相应项目的tomcat服务器,当然就不存在跨域问题了。

                    心动时,还没来得及学会勇敢。

                勇敢时,我们已在时光里走散。

2021-2-28 Mark-Java Interview Simple的更多相关文章

  1. 115 Java Interview Questions and Answers – The ULTIMATE List--reference

    In this tutorial we will discuss about different types of questions that can be used in a Java inter ...

  2. Java Interview Reference Guide--reference

    Part 1 http://techmytalk.com/2014/01/24/java-interview-reference-guide-part-1/ Posted on January 24, ...

  3. 2015年12月28日 Java基础系列(六)流

    2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流

  4. Core Java Interview Question Answer

    This is a new series of sharing core Java interview question and answer on Finance domain and mostly ...

  5. Top 25 Most Frequently Asked Interview Core Java Interview Questions And Answers

    We are sharing 25 java interview questions , these questions are frequently asked by the recruiters. ...

  6. Difference Between Arraylist And Vector : Core Java Interview Collection Question

    Difference between Vector and Arraylist is the most common  Core Java Interview question you will co ...

  7. 最新28道java基础面试题-上

    28道java基础面试题 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪 ...

  8. 28道java基础面试题-下

    28道java基础面试题下 15.Java语言如何进行异常处理,关键字:throws.throw.try.catch.finally分别如何使用? 答:Java通过面向对象的方法进行异常处理,把各种不 ...

  9. 日常Java 2021/10/28

    Java lterator Java lterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList和HashSet等集合.lterator是Java迭代器最简单的 ...

随机推荐

  1. 编程方式建视频——GitHub 热点速览 v.21.07

    作者:HelloGitHub-小鱼干 假期过半,大家过得如何,吃好喝好了吗?GitHub 很好!本周的 GitHub Trending 又上爆款项目--github1s 装完之后,一秒 GitHub ...

  2. HTML <keygen> 标签(👎 已废弃)

    HTML 标签( 已废弃) 该标签在新的 Web 标准中已废弃. <!DOCTYPE html> <html> <head>  <meta charset=& ...

  3. Python module all in one

    Python module all in one Python Modules https://docs.python.org/3/tutorial/modules.html Fibonacc # F ...

  4. NGK Global伦敦路演:“区块链+能源”必将推动世界性能源革命

    随着区块链技术的发展和应用的不断完善深入,市场的热情也开始活跃高涨,在万众期待下,NGK Global在英国伦敦的路演于7月25日圆满举办. 此次伦敦路演会议中众多行业精英,各社区代表.星盟投资公司资 ...

  5. Android 比较好看的注册登录界面

    各位看官姥爷: 对于一款android手机app而言,美观的界面使得用户有好的使用体验,而一款好看的注册登录界面也会给用户好的用户体验,那么话不多说,直接上代码 首先是一款简单的界面展示 1.登陆界面 ...

  6. 开源OA办公平台搭建教程:O2OA+Arduino实现物联网应用(二)

    O2OA平台搭建 O2OA的开发环境非常简单,安装服务器后即可通过浏览器进行开发了和使用.具体可参考文档库中的其他文档,有比较详细的介绍,这里就不再赘述了. Arduino开发发环境搭建 安装Ardu ...

  7. 知道这两个 DOM 属性区别的,头发应该不多了吧?

    你可能知道,获取和设置 DOM 元素内部文本可以用这两个属性:Node.textContent 和 Element.innerText. 乍一看,它们似乎做着完全相同的事情,但它们之间有一些微妙但重要 ...

  8. 微信小程序:事件绑定

    小程序中绑定事件,通过bind关键字来实现.如bindinput,bindtap(绑定点击事件),bindchange等. 什么是事件 事件是视图层到逻辑层的通讯方式. 事件可以将用户的行为反馈到逻辑 ...

  9. LiteOS:SpinLock自旋锁及LockDep死锁检测

    摘要:除了多核的自旋锁机制,本文会介绍下LiteOS 5.0引入的LockDep死锁检测特性. 2020年12月发布的LiteOS 5.0推出了全新的内核,支持SMP多核调度功能.想学习SMP多核调度 ...

  10. How DRI and DRM Work

    How DRI and DRM Work Introduction This page is intended as an introduction to what DRI and DRM are, ...