![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试问题总结
1天真无邪1
这个作者很懒,什么都没留下…
展开
-
jdk1.8新特性
Java8 新增了非常多的特性,我们主要讨论以下几个:java8新特性 Lambda 表达式− Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。 方法引用− 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。 默认方法− 默认方法就是一个在接口里面有了一个实现的方法。 新工具− 新的编译工具,如:Nashorn引擎 jjs、 类依赖...原创 2020-10-07 16:24:26 · 154 阅读 · 0 评论 -
分布式系统唯一ID生成方案汇总
原文链接:https://www.cnblogs.com/haoxinyue/p/5208136.html分布式系统唯一ID生成方案汇总系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。1. 数据库自增长序列或字段最常...原创 2020-03-30 16:59:44 · 128 阅读 · 0 评论 -
在一个很大的日志文件中查找到出现最多的ip并且记录次数
在一个100G的日志文件中, 查找到访问最多的IP, 获得前3个IP, 限制内存只有 1G, 不能使用MapReduce, 请使用Java实现问题解析既然内存只有1G那么就不能直接使用HashMap进行统计, 可以使用MapReduce原理, 先切片, 通过Hash码进行分片, IP 相同的肯定在一个文件中, 分片不宜太大,也不宜太小, 就用1000片吧,之后统计每个...原创 2020-03-28 15:26:46 · 1153 阅读 · 0 评论 -
接口限流算法总结
在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统能处理的容量,可谓是抗高并发流量的银弹;而降级是当服务出问题或者影响到核心流程的性能则需要暂时屏蔽掉,待高峰或者问题解决后再打开;而有些场景并不能用缓存和降级来解决,比如稀缺资源(秒杀、抢购)、写服务(如评论、下单)、频繁的复杂查询(评论的最后几页),因此需有一种手段来限制这些场...原创 2020-03-19 16:16:17 · 306 阅读 · 0 评论 -
Redis分布式锁
一、分布式锁实现方式1. 数据库乐观锁。(增加字段版本标识version控制实现)2. Redis的分布式锁。(本文重点介绍)3. ZooKeeper的分布式锁。(ZooKeeper机制规定:同一个目录下只能有一个唯一的文件名,借助ZooKeeper的临时节点实现)二、Redis的分布式锁实现1. 使用jedis的2.7.x及以上版本。2. 获取锁: 命令:...原创 2020-02-06 16:28:52 · 179 阅读 · 0 评论 -
Redis面试题总结
目录:1、Redis简介2、为什么要使用Redis3、redis 常见数据结构以及使用场景分析4、redis 设置过期时间5、如果有大量的key需要设置同一时间过期,一般需要注意什么?6、redis 持久化机制(怎么保证 redis 挂掉之后再重启数据可以进行恢复)7、Redis分布式锁:详见我的博客。8、假如Redis里面有1亿个key,其中有10w个key是以某...原创 2020-03-10 23:38:26 · 140 阅读 · 0 评论 -
平衡二叉排序树、AVL树、红黑树、B树、B+树
1、平衡二叉排序树 二叉查找树定义:又称为是二叉排序树(Binary Sort Tree)或二叉搜索树。二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: 1) 若左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2) 若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值; 3) 左、右子树也分别为二叉排序树; 4) 没有键值相等的节点。...原创 2020-03-08 16:29:55 · 685 阅读 · 0 评论 -
LinkedHashMap原理
先来一张LinkedHashMap的结构图,不要虚,看完文章再来看这个图,就秒懂了,先混个面熟:LinkedHashMap结构.png2.1 应用场景HashMap是无序的,当我们希望有顺序地去存储key-value时,就需要使用LinkedHashMap了。 Map<String, String> hashMap = new HashM...原创 2020-03-08 09:43:31 · 340 阅读 · 0 评论 -
synchronized代码块的底层实现
synchronized代码块的底层实现MDove:咱们先写一个简单的demo,然后看一下它们的字节码:MDove:根据虚拟机规范要求,在执行monitorenter指令时,首先要尝试获取对象锁,也就是上文我们提到了monitor对象。如果这个对象没有被锁定,或者当前线程已经拥有了这个对象的锁,那么就把锁的计数器(_count)加1。当然与之对应执行monitorexit指令...原创 2020-03-05 20:50:59 · 310 阅读 · 0 评论 -
深入浅出Java锁--Lock实现原理(底层实现)
深入浅出Java锁--Lock实现原理(底层实现)转载Linias最后发布于2018-12-21 16:25:53阅读数 2296收藏展开当多个线程需要访问某个公共资源的时候,我们知道需要通过加锁来保证资源的访问不会出问题。java提供了两种方式来加锁,一种是关键字:synchronized,一种是concurrent包下的lock锁。synchronized是java...转载 2020-03-05 18:14:17 · 537 阅读 · 0 评论 -
Java设计模式——合成/聚合复用原则
一、什么是合成/聚合复用原则?合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。简述为:要尽量使用合成/聚合,尽量不要使用继承。二、合成和聚合的区别;依赖和关联合成(Composition)和聚合(Aggregation)都是关联(Association)的特殊种类。用C语言来讲,合成是值的聚合(Agg...原创 2020-03-01 21:08:51 · 130 阅读 · 0 评论 -
在java中String类为什么要设计成final?
String很多实用的特性,比如说“不可变性”,是工程师精心设计的艺术品!艺术品易碎!用final就是拒绝继承,防止世界被熊孩子破坏,维护世界和平!1. 什么是不可变?String不可变很简单,如下图,给一个已有字符串"abcd"第二次赋值成"abcedl",不是在原内存地址上修改数据,而是重新指向一个新对象,新地址。2. String为什么不可变?翻开JDK源...原创 2020-03-01 13:36:49 · 133 阅读 · 0 评论 -
String相关问题
String 对象可谓再熟悉不过了,与此相关的面试题经常会引出内存性能优化的问题,本篇主要以new String("123")创建了几个对象为例记录。一、你能回答正确吗Stringa="123";如上定义的为常量;Stringb=a+"456";如上 b 为变量,为啥? 难道常量拼接常量得到的是变量吗?不是,常量拼接常量得到的依旧是常量。但是此...原创 2020-02-28 13:46:13 · 517 阅读 · 0 评论 -
为什么wait()和notify()需要搭配synchonized关键字使用
这是Java设计者为了避免使用者出现lostwakeup问题而搞出来的synchronized 的含义:Java中每一个对象都可以成为一个监视器(Monitor), 该Monitor由一个锁(lock), 一个等待队列(waiting queue ), 一个入口队列( entry queue).对于一个对象的方法, 如果没有synchronized关键字, 该方法可以被任意数量...原创 2019-10-27 22:37:45 · 235 阅读 · 1 评论 -
百度 oppo 滴滴出行 面试问题总结 阿里
(百度oppo)1.dns域名解析用的什么协议 域名是分层结构,域名服务器也是对应的层级结构。有了域名结构,还需要有一个东西去解析域名,域名需要由遍及全世界的域名服务器去解析,域名服务器实际上就是装有域名系统的主机。由高向低进行层次划分,可分为以下几大类:分类 作用根域名服务器 最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助...原创 2020-02-09 13:08:08 · 170 阅读 · 0 评论