treemap

这份Java面试宝典,你值得拥有(2020版上篇)

送分小仙女□ 提交于 2020-04-24 18:39:32
一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具。 简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,需要安装 JDK。 2. == 和 equals 的区别是什么? == 解读 对于基本类型和引用类型 == 的作用效果是不同的,如下所示: 基本类型:比较的是值是否相同; 引用类型:比较的是引用是否相同; 代码示例: 1 String x = "string"; 2 String y = "string"; 3 String z = new String("string"); 4 System.out.println(x==y); // true 5 System.out.println(x==z); // false 6 System.out.println(x.equals(y)); // true 7 System.out.println

基于DFA算法实现的敏感词过滤

拜拜、爱过 提交于 2020-04-24 08:25:57
本文转自 浅析敏感词过滤算法(C++) ,自己也在其基础上根据自己的情况做了一点修改。 https://blog.csdn.net/u012755940/article/details/51689401?utm_source=app 为了提高查找效率,这里将敏感词用树形结构存储,每个节点有一个map成员,其映射关系为一个string对应一个WordNode。 比如敏感词库里面有枪手、手枪这几个词,读入后就变成了如下图所示的树状结构。 STL::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树中。 下面主要实现了WordNode类,进行节点的插入以及查询。 WordNode.h #ifndef __WORDNODE_H__ #define __WORDNODE_H__ #define PACE 1 #include < string > #include <map> #include <stdio.h> class CWordNode { public : CWordNode(std:: string character); CWordNode(){ m_character = "" ; }; ~ CWordNode(); std:: string getCharacter() const { return m_character;

Java集合类,一张图说清楚!

心不动则不痛 提交于 2020-04-23 10:03:57
作者:skywang12345 https://www.cnblogs.com/skywang12345/p/3308498.html 2019-03-23 10:32:24 Java集合是java提供的工具包,包含了常用的数据结构: 集合、链表、队列、栈、数组、映射 等。 Java集合工具包位置是**java.util.*,**Java集合主要可以划分为4个部分: List列表 Set集合 Map映射 工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections) Java集合工具包框架图(如下): 大致说明: 看上面的框架图,先抓住它的主干,即Collection和 Map 。 一、Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性。 Collection包含了List和Set两大分支。 List是一个有序的队列,每一个元素都有它的索引。第一个元素的索引值是0。 List的实现类有LinkedList, ArrayList, Vector, Stack。 Set是一个不允许有重复元素的集合。Set的实现类有HastSet和TreeSet。HashSet依赖于HashMap,它实际上是通过HashMap实现的;TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。 二、Map是一个映射接口

Java集合源码笔记:HashMap+List集合+Map集合+Collection+面试题

有些话、适合烂在心里 提交于 2020-04-22 18:28:39
Java集合思维导图 Java集合源码笔记 笔记是全程手写出来的,希望大家拿到笔记后别丢进收藏夹吃灰!转发+关注,加我VX【tkzl6666】获得免费领取方式。 一、学习指南 1、Java集合学习指南 1.1学习一项技术之前,必须知道为什么要学它! 1.2如何入门学习Java集合 1.3 集合进阶与面试 二、Collection 1、集合(Collection)介绍 1.1为什么需要Collection 1.2数组和集合的区别 1.3Collection的由来与功能 2、迭代器(Iterator)介绍 3、List集合介绍 3.1List集合常用子类 4、Set集合介绍 4.1Set集合常用子类 三、List集合 1、ArrayList解析 1.1构造方法 1.2Add方法 1.3 get方法 1.4 set方法 1.5remove方法 1.6细节再说明 2、Vector与ArrayList区别 3、LinkedList解析 3.1构造方法 3.2add方法 3.3remove方法 3.4get方法 3.5set方法 4、List集合总结 四、Map集合 1、Map介绍 1.1为什么需要Map 1.2Map与Collection的区别 1.3Map的功能 2、散列表介绍 2.1散列表工作原理 3、红黑树介绍 3.1回顾二叉查找树 3.2知新2-3树 3.3从2-3树到红黑树 3

Java入门(三)——集合概讲

梦想的初衷 提交于 2020-04-22 05:25:11
集合(或者叫容器)是Java的核心知识点,它有着很深的深度。我们这里不会设计多深,仅仅作为了解入门,深入了解请移步各种集合源码文章。好的,下面正是开始介绍... Java集合为何而生 我们知道,Java是一门面向对象编程语言,这也就意味着程序中存在着大量的对象。这个时候问题就来了,我们如何很好的存放和操作对象呢?如果你能明白这个问题,那么你就知道了“集合为何而生”这个问题的答案。 总结一句: Java给我们提供了工具(集合)方便我们去存放和操作多个Java对象 Java集合入门学习 Java集合的目的是方便操作多个对象,同时,它提供一系列的API来供我们操作。因此,在初学Java集合的时候我们更多的是 学习这些API的用法 。 对Java集合的API使用有一定了解之后,我们就应该从 面向对象 的角度去理解它。为什么会抽象出多个接口,以及每个接口有什么特征。 我们可以总结出几个常用的实现类,这几个常用的实现类我们必须知道它的数据结构是什么,什么时候使用这个类。 同时,你还需要学习和了解数据结构: 学完上面的内容后,我们基本掌握了常用集合的数据结构,也就知道了如何选择合适的集合容器去存储我们的对象。总之, 学完常见实现类的数据结构之后,对它们的使用场景也有了更加清晰的认识 。 Java集合类简介 Java集合是一个很庞大的知识点,话不多说,上图感受下: Java集合的

dubbo(三):负载均衡实现解析

自闭症网瘾萝莉.ら 提交于 2020-04-20 14:48:42
  dubbo作为分布式远程调用框架,要保证的点很多,比如:服务注册与发现、故障转移、高性能通信、负载均衡等等!   负载均衡的目的是为了特定场景下,能够将请求合理地平分到各服务实例上,以便发挥所有机器的叠加作用。主要考虑的点如:不要分配请求到挂掉的机器,性能越好的机器可以分配更多的请求。。。   一般负载均衡是借助外部工具,硬件负载均衡或软件负载均衡,如F5/nginx。当然了,在当前分布式环境遍地开花的情况下,客户端的负载均衡看起来就更轻量级,显得不可或缺。   今天我们就来看看dubbo是如何进行负载均衡的吧! 1. dubbo负载均衡的作用?   其出发点,自然也就是普通的负载均衡器的出发点了。将负载均衡功能实现在rpc客户端侧,以便能够随时适应外部的环境变化,更好地发挥硬件作用。而且客户端的负载均衡天然地就避免了单点问题。定制化的自有定制化的优势和劣势。   它可以从配置文件中指定,也可以在管理后台进行配置修改。   事实上,它支持 服务端服务/方法级别、客户端服务/方法级别 的负载均衡配置。 2. dubbo有哪些负载均衡方式?   即dubbo提供了哪些负载均衡策略呢? Dubbo内置了4种负载均衡策略:   RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的默认负载均衡策略。   RoundRobinLoadBalance:轮询负载均衡

含泪面试阿里P6凉凉,最终只拿下拼多多主力研发岗

≡放荡痞女 提交于 2020-04-18 17:37:12
刚刚签下拼多多不久,目前已经入职了一段时间,适应下来感觉还不错,现在才想起是不是要分享一波面经。实际上在拼多多之前我是很想进BAT一线大厂的,毕竟大部分的程序员心里都有大厂梦。但是,阿里的面试让我的心是凉了半截,比较打击人。具体是一个什么情况,看下面的面经和总结吧! 含泪面试阿里P6凉凉,最终拿下PDD主力研发岗(面试题+复习笔记) 01 含泪面试阿里P6凉凉(3轮技术面挂) 面试阿里之前是非常有信心的,听闻阿里不在乎学历,不少在职员工都是大专出身,所以作为普通本科毕业的我才有这份勇气,下了这个决心。面试前两面时,还算是顺利,所以早早就在窃喜,原以为能够顺利拿下offer,但在第三面居然被吊打,不得不叹服:不愧是第一的互联网公司。(以下附面试题) 自我介绍+项目介绍 项目中你相比于别人的优势在哪里,就是你用了别人没有的东西。 看你提到了连接池,druid连接池。 常见排序算法 TCP三次握手,四次挥手。 数据库引擎对比,索引 看你搞ACM,你给我讲个简单的数据结构 怎么保证多线程操作的原子性。 深入问了乐观锁,悲观锁及其实现。 zookeeper锁,数据库隔离级别。 docker隔离部署问题。 taobao查询排序要考虑那些因素? 你觉得你的能力大概在什么方面? 你是如何进行学习的? 画一个软件的执行流程。 有没有写过开发文档。 Java怎么加载类。 Linux常用命令。 MVC

常见集合源码分析(基于jdk8)

删除回忆录丶 提交于 2020-04-18 05:44:53
ArrayList ArrayList 实现于 List 、 RandomAccess 接口。可以插入空数据,也支持随机访问,相当于动态数据,其中最重要的两个属性分别是: elementData 数组,以及 size 大小,默认为10 由于ArrayList是基于动态数组实现的,所以并不是所有的空间都被使用。因此使用了 transient 修饰,可以防止被自动序列化。 性能消耗主要在于数组复制上,所以ArrayList查找快 O(1) ,增删慢 O(n) ,不是线程安全的 /** * The array buffer into which the elements of the ArrayList are stored. * The capacity of the ArrayList is the length of this array buffer. Any * empty ArrayList with elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA * will be expanded to DEFAULT_CAPACITY when the first element is added. */ transient Object[] elementData; // non-private to simplify nested

【从二叉树到红黑树】清晰理解红黑树的演变---红黑的含义

穿精又带淫゛_ 提交于 2020-04-18 04:40:25
网上关于红黑树的博文很多,但是多是上来即讲定义,未说其所以然,难以理解且无所营养,甚者示例图有误且概念模糊的比比即是; 由于最近在学习相关知识找到一篇较为透彻且深入剖析的博文特此转载修订 注:原文示例图中有所错误本文中已重新修正,并增加了红黑树相关部分更多内容 前言 红黑树,对不少人来说是个比较头疼的名字,在网上搜资料也很少有讲清楚其演变来源的,多数一上来就给你来五条定义,红啊黑啊与根节点距离相等之类的,然后就开始进行旋转、插入、删除这些操作。一通操作下来,连红色和黑色怎么来的,是什么含义,有什么作用都云里雾里的,能搞清楚就怪了。 本文介绍红黑树,暂时不涉及任何代码,只是帮助你理解红黑树的演变来源,树结构中红黑色具体含义,保证你理解了过后,再去看什么旋转插入的东西,要清晰得多。换句话说,理解本文要描述的内容是从代码级理解红黑树的基础。 开始之前,我还是恳请你保持耐心,一步一步仔细看完,浮躁的话真的做不好任何事情。 正文 红黑树的起源,自然是二叉查找树了,这种树结构从根节点开始, 左子节点小于它,右子节点大于它 。每个节点都符合这个特性,所以易于查找,是一种很好的数据结构。但是它有一个问题,就是容易偏向某一侧,这样就像一个链表结构了,失去了树结构的优点,查找时间会变坏。 所以我们都希望树结构都是矮矮胖胖的,像这样: 而不是像这样: 在这种需求下,平衡树的概念就应运而生了。

HashMap、Hash Table、ConcurrentHashMap、TreeMap

可紊 提交于 2020-04-18 03:45:11
这个这个。。。本王最近由于开始找实习工作了,所以就在牛客网上刷一些公司的面试题,大多都是一些java,前端HTML,js,jquery,以及一些好久没有碰的算法题,说实话,有点难受,其实在我不知道的很多是地方还有很多很多的知识漏洞,就像这一次写的这个,也是我在刷题的时候感觉到真的是我空缺的地方,为什么呢?因为,做多了,错多了。然而很尴尬的又是因为这个只是也是很多公司的面试题,所以索性直接写下来整理一遍。 在这里我也建议各位,牛客网不仅仅是一个找工作的station也是一个可以锻炼我们的地方,没事刷刷题啊,逛逛论坛啊,说不定就能找到很多你意想不到的东西。 在面试的过程中,有几个问题是比较常见的。 HashTable、HashMap、ConcurrentHashMap的区别? HashMap线程不安全的出现场景? HashMap put方法存放数据时是怎么判断是否重复的? JDK7和JDK8 中HashMap的实现有什么区别? HashMap的长度为什么是2的幂次方? 只要把这几个问题过一遍之后,大致了解了他们各自的作用与互相之间的区别再!!去敲一遍其实就可以掌握了。 放一张珍贵的图给大家学习学习! HashTable 底层数组+链表实现,无论key还是value都 不能为null ,线程 安全 ,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低