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. element-ui select get selected option object

    element-ui select get selected option object value-key="value" === String :value="{va ...

  2. npm clear folder

    npm clear folder rm -rf rimraf rmrf & clear build / dist folder caches https://www.npmjs.com/pac ...

  3. Java IO 通信 All In One

    Java IO 通信 All In One Netty / WebSocket BIO 通信 BIO 即阻塞 I/O,不管是磁盘 I/O 还是网络 I/O,数据在写入 OutputStream 或者从 ...

  4. module patterns

    module patterns ebooks https://github.com/xyzata/2017-new-ebooks/blob/master/Succinctly/modulepatter ...

  5. React 权限管理

    React 权限管理 react in depth JWT token access_token & refresh_token access token & refresh toke ...

  6. Python Coding Interview

    Python Coding Interview Python Advanced Use enumerate() to iterate over both indices and values Debu ...

  7. django学习-17.如何提供一个规范的接口返回值

    目录结构 1.前言 2.进行实际的一个完整流程操作 2.1.第一步:编写一个用于查询用户数据的视图函数 2.2.第二步:编写对应的一个url匹配规则 2.3.第三步:启动django项目[hellow ...

  8. 运用Spock编写高质量单元测试

    单元测试作为提升代码质量的有效方法,目前在国内各大互联网公司的开发团队中,尤其是业务团队中却鲜少被使用.这主要由于大家对于单元测试有一些认知错误,或者没有正确的打开方式.至今我们团队在小剧场.零代码运 ...

  9. CSS中Position属性static、absolute、fixed、relative

    在html中网页可以看成一个立体的空间,一个完整的页面是由很多个页面堆积形成的,如下图所示   CSS中Position属性有四个可选值,它们分别是:static.absolute.fixed.rel ...

  10. 重磅!七国首脑会议决定制裁Go语言!

    2021年2月, 编程语言的七国集团峰会在风景优美的Linux庄园如期召开. C, Java, Python, JavaScript , C++ , C#,  PHP 相继入座. C语言作为主持人,在 ...