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. 痞子衡嵌入式:我的博文总量终于追平了jicheng0622

    自打2016年10月选定清爽又复古的博客园平台作为痞子衡的个人博客主战场之后,痞子衡就一直坚持在博客园首发原创技术文章,然后再同步到其他平台(CSDN,知乎,微信公众号...),在坚持更文近四年半(2 ...

  2. spring boot集成mybatis只剩两个sql 并提示 Cannot obtain primary key information from the database, generated objects may be incomplete

    前言 spring boot集成mybatis时只生成两个sql, 搞了一个早上,终于找到原因了 找了很多办法都没有解决, 最后注意到生成sql的时候打印了一句话: Cannot obtain pri ...

  3. 恕我直言!!!对于Maven,菜鸟玩dependency,神仙玩plugin

    打包是一项神圣.而庄严的工作.package意味着我们离生产已经非常近了.它会把我们之前的大量工作浓缩成为一个.或者多个文件.接下来,运维的同学就可以拿着这些个打包文件在生产上纵横四海了. 这么一项庄 ...

  4. 探索 .NET Core 依赖注入的 IServiceCollection

    如果您使用了.NET Core,则很可能已使用Microsoft.Extensions.DependencyInjection中的内置依赖项注入容器,在本文中,我想更深入地了解Microsoft De ...

  5. CSS & Architecture

    CSS & Architecture https://sass-guidelin.es/#architecture https://sass-guidelin.es/#the-7-1-patt ...

  6. egg.js 如何禁用 sensors data

    egg.js 如何禁用 sensors data holy shit http://localhost:7001/product/create const json = {"id" ...

  7. Fast R-CNN训练自己的数据集时遇到的报错及解决方案

    最近使用Fast R-CNN训练了实验室的数据集,期间遇到一些报错,主要还是在配置环境上比较麻烦,但可以根据提示在网上找到解决这些错误的办法.这里我只记录一些难改的报错,以后再遇见这些时希望能尽快解决 ...

  8. 微信小程序:应用生命周期

    小程序的生命周期分为应用生命周期和页面生命周期. 应用指的是一个文件,是小程序的入口文件app.js,入口文件最外层方法名称是App,页面的js文件最外层是page,组件的js文件的最外层是compo ...

  9. SpringBoot接收map类型的参数

    如果某个controller的某个接口的参数特别多,也可以使用map的方式来接收参数,接收之后使用get方法获取即可. 1)get请求方式,定义map接收方式 @RequestParam(requir ...

  10. 百度AI api使用

    # *********************************baidu-api-通用文字识别******************************************** # im ...