![](https://img-blog.csdnimg.cn/20190828094611461.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
★JAVA面试汇总★
文章平均质量分 93
JAVA面试汇总
土豆是我的最爱
这个作者很懒,什么都没留下…
展开
-
小白都能看懂的HashMap面试问题
前言对于HashMap,可谓是面试必问的点。无论你是刚毕业的大学生,还是工作三年的高级开发工程师。HashMap可谓是JDK源码中比较经典的源码设计。在上学的时候就知道它的重要性,但是有一些比较复杂的地方当时很难理解,只是模糊记忆,面试官问的时候也是将记住的答案背下来,其实在面试官眼中早就露馅了。简单回顾一些基础的问题我们就简单回顾一下就好。其中要讲解的难点先标注,后文进行详细剖析。HashMap的内部数据结构数组 + 链表/红黑树HashMap允许空键空值么HashMap最多只允许一个键为原创 2020-06-18 15:11:00 · 8011 阅读 · 16 评论 -
项目经验——支付业务
前言月底就要离职走人了。在这个公司包括实习期的话也干了将近一年半了。好歹也算是一年工作经验了,下次面试的话应该也是问项目经验居多。准备近期先将自己自己做过的东西详细整理一下,方便到时候书写简历以及应对面试。支付业务刚到公司的时候,接触的是公司的一个B2B2C电商项目。当时的销售途径是售货机,支付的话流程基本成型,后来需求增加,新增手机商城,使用H5实现,H5支付这一块就落到了我的手上,支付的业务大同小异,我就去研究之前前辈写的支付业务,加上H5支付的文档,将手机商城的支付做了出来。只要流程业务以原创 2020-06-16 09:15:00 · 5267 阅读 · 0 评论 -
Spring IOC?彻底搞懂它!
目录引言BeanFactory 简介创建 Bean 容器前的准备工作创建 Bean 容器,加载并注册 BeanBean 容器实例化完成后准备 Bean 容器: prepareBeanFactory初始化所有的 singleton beans附录id 和 name配置是否允许 Bean 覆盖、是否允许循环依赖profile工厂模式生成 BeanFa...转载 2019-12-09 15:31:51 · 1768 阅读 · 2 评论 -
小白都能看懂的java虚拟机内存区域划分
目录一、虚拟机二、虚拟机组成1.栈栈帧2.程序计数器3.方法区对象组成4.本地方法栈5.堆GCGC案例一、虚拟机同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的。同一个java代码在windows上生成的机器码可能是0101.......,在linux上生成的可能是1100.......原创 2019-11-26 17:21:27 · 49329 阅读 · 152 评论 -
【String】——String,StringBuffer,StringBuilder的区别
阅读此文前最好预习String源码分析及AbstractStringBuilder源码分析通过解读三者源码便可分析如下区别:1.String,StringBuffer,StringBuilder最终底层存储与操作的都是char数组.但是String里面的char数组是final的,而StringBuffer,StringBuilder不是,也就是说,String是不可变的,想要新的字符...原创 2018-11-11 15:08:40 · 7006 阅读 · 0 评论 -
【String】——java.lang.String源码分析
java.lang.String是使用频率非常高的类。要想更好的使用java.lang.String类,了解其源代码实现是非常有必要的一、String类String类是被final所修饰的,所以不允许被继承和修改,String类实现了Serializable、Comparable、CharSequence这三个接口,Serializable接口使得String可序列化;Comparabl...原创 2018-11-08 17:13:54 · 7293 阅读 · 0 评论 -
【Map】——LinkedHashMap
一. LinkedHashMap 概述HashMap 是 Java Collection Framework 的重要成员,也是Map族(如下图所示)中我们最为常用的一种。不过遗憾的是,HashMap是无序的,也就是说,迭代HashMap所得到的元素顺序并不是它们最初放置到HashMap的顺序。HashMap的这一缺点往往会造成诸多不便,因为在有些场景中,我们确需要用到一个可以保持插入顺序的M...原创 2018-09-15 21:28:26 · 8296 阅读 · 1 评论 -
【JUC】——volatile解析
一.内存模型的相关概念计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里...转载 2018-09-10 23:50:26 · 8954 阅读 · 0 评论 -
【前端】——Ajax
一、同步请求和异步请求先解释一下同步和异步的概念:同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。同步请求:客户端请求(等待)->服务端处理->响应->页面载入 (缺少对象:XMLhttpRequest)这时候如果有错误,只能再次发送请求,再次等待...原创 2018-09-10 20:58:55 · 8956 阅读 · 0 评论 -
【Spring】——Spring及SpringMVC运行流程
一、Spring的启动过程 (1). 对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境; (2). 在web.xml中会提供有contextLoaderListener。在web容器启动时,会触发容器初始化事件,此时contextLoaderListener会监听到...原创 2018-09-10 20:10:51 · 8375 阅读 · 0 评论 -
小白都能看懂的七大排序算法详解
一、排序算法总览二、算法详解1、冒泡排序(Bubble Sort)原理:比较两个相邻的元素,将值大的元素交换至右端。思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。......原创 2018-09-04 23:49:57 · 10054 阅读 · 6 评论 -
【JVM】——GC机制
前言JVM内存主要由两部分组成:a.线程私有内存区域;b.线程公共内存区域。线程公用的内存区域主要包括:堆、方法区线程私有的内存区域主要包括:jvm栈、程序计数器、本地方法栈如需了解JVM内存结构相关知识,请移步JVM内存结构详解一、GC机制 随着程序的运行,内存中的实例对象、变量等占据的内存越来越多,如果不及时进行回收,会降低程序运行效率,甚至引发系统异常...原创 2018-09-04 00:00:57 · 8948 阅读 · 0 评论 -
【并发】——ThreadLocal解析
一.ThreadLocal是什么 ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的一个局部变量。 每个Thread线程内部都有一个Map。 Map里面存储线程本地对象(key)和线程的变量副本(value) 但是,Thread内部的Map是由ThreadLocal维护的,由Threa...原创 2018-09-02 23:40:58 · 8924 阅读 · 1 评论 -
【SpirngCloud】——服务注册与发现实现原理
服务注册与发现的实现原理:1.服务发现组件(1).首先,当服务启动的时候,服务消费者和服务提供者都会把自己的IP和端口注册到服务发现组件中,当服务消费者需要使用的时候,他会从服务发现组件的维护的表中,进行查找服务提供者的ip和端口(2).所有的服务都可能会down掉,那么这里涉及到一种心跳机制,也就是服务发现组件会给服务发送心跳包,如果连续3次发送的心跳包都没有得到回应,服务发...原创 2018-09-02 14:58:32 · 9578 阅读 · 1 评论 -
【面向对象】——OOP思想
1.面向对象是面向过程而言.两者都是一种思想。 (1)面向过程:强调的是功能行为。(强调过程、动作) (2)面向对象:将功能封装进对象,强调了具备了功能的对象。(强调对象、事物) (3)面向对象是基于面向过程的。将复杂的事情变简单了。 (4)面向过程-->面向对象:执行者-->指挥者 (5)打个比方:面向过程,自己造电脑。面向...原创 2018-08-27 23:50:35 · 8624 阅读 · 2 评论 -
【Serializable】——序列化和反序列化
一、序列化和反序列化的概念把对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。serialization 序列化 : 将对象转化为便于传输的格式, 常见的序列化格式:二进制格式,字节数组,json字符串,xml字符串。deserialization 反序列化:将序列化的数据恢复为对象的过程。就像淘宝上买一个大件,运输的时候当然到拆分...原创 2018-11-12 11:00:50 · 6763 阅读 · 0 评论 -
【线程】——wait()和notify()深入剖析
一、官方文档对于wait()和notify()的理解,还是要从jdk官方文档中开始,在Object类方法中有:对于wait()和notify()的理解,还是要从jdk官方文档中开始,在Object类方法中有:void notify()Wakes up a single thread that is waiting on this object’s monitor.译:唤醒在此对...原创 2018-11-16 15:54:38 · 8419 阅读 · 0 评论 -
【面试】——Java面试重难点剖析
Java面试重难点剖析(不断更新)1、高并发访问数据库优化方法2、 java finalize方法总结、GC执行finalize的过程3、简单理解Socket及TCP/IP、Http、Socket的区别4、 java之yield(),sleep(),wait()区别详解-备忘笔记5、线程本地存储TLS(Thread Local Storage)的原理和实现——分类和原理6、...转载 2019-07-19 09:23:21 · 4476 阅读 · 1 评论 -
小白都能看懂的引用传递小案例
前言今天逛论坛,遇到一个新手问引用传递的问题,特此记录。问题是什么我们先看一下遇到的问题是什么User类只有一个属性public static void main(String[] args) { User user1 = new User(); getUser(user1); System.out.println(use...原创 2019-08-16 17:50:03 · 6086 阅读 · 13 评论 -
【设计模式】——纯手写实现JDK动态代理
前言在【设计模式】——代理模式(静态)以及【设计模式】——代理模式(动态)中,我们已经基本了解了什么是代理模式,以及什么是静态代理,什么是动态代理。JDK动态代理以及Cglib动态代理其实底层实现原理都是字节码的重组,不过各自对应的代理场景不同,本文我们重点研究jdk动态代理。通过前文的了解,我们已经知道在JDK动态代理中是JDK动态的帮我们生成一个名为$Proxy0的代理类,那么,我.........原创 2019-08-22 16:15:45 · 6174 阅读 · 3 评论 -
【JUC】——synchronized应用、作用及实现原理
前言在 Java 中,关键字 synchronized可以保证在同一个时刻,只有一个线程可以执行某个方法或者某个代码块(主要是对方法或者代码块中存在共享数据的操作),同时我们还应该注意到synchronized另外一个重要的作用,synchronized可保证一个线程的变化(主要是共享数据的变化)被其他线程所看到(保证可见性,完全可以替代Volatile功能),这点确实也是很重要的。三种应...原创 2019-08-13 10:58:02 · 6289 阅读 · 0 评论 -
【Java8新特性】——Streams API 详解
一、为什么需要 StreamStream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于...转载 2019-08-01 12:50:15 · 6345 阅读 · 0 评论 -
【Java8新特性】——Lambda表达式
前言从java8出现以来lambda是最重要的特性之一,它可以让我们用简洁流畅的代码完成一个功能。 很长一段时间java被吐槽是冗余和缺乏函数式编程能力的语言,随着函数式编程的流行java8种也引入了 这种编程风格。一、lambda简介什么是lambda?lambda表达式是一段可以传递的代码,它的核心思想是将面向对象中的传递数据变成传递行为。 我们回顾一下在使用java8之前要...原创 2019-07-31 18:43:40 · 7411 阅读 · 3 评论 -
【开发手册】——这些规约你遵守了么?
前言《Java开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:数据库的表结构和索引设计缺陷可能带来软件上的架构缺陷或性能风险;工程结构混乱导致后续...原创 2019-07-30 18:42:28 · 7459 阅读 · 0 评论 -
【Tomcat】——纯手写实现一个简单的Tomcat
前言心血来潮,记得上大学时老师曾经简单讲过Tomcat底层的实现原理,并给我们演示过简单的实现,趁着刚毕业还没有全部忘记,回温一下记录在这里,在这里纯底层实现一个简单可以访问静态文件以及动态请求的Tomcat服务器。实现功能:1:静态资源请求2:动态请求处理3:session及cookie信息存储,为方便下文的理解不了解的同学可以先自行了解一下session和cookie...原创 2019-07-26 16:57:16 · 7445 阅读 · 10 评论 -
【面试】——session和cookie 区别
session原理:1、session是保存在服务器端,理论上是没有是没有限制,只要你的内存够大2、浏览器第一次访问服务器时会创建一个session对象并返回一个JSESSIONID=ID的值, 创建一个Cookie对象key为JSSIONID,value为ID的值,将这个Cookie写回浏览器3、浏览器在第二次访问服务器的时候携带Cookie信息JSESSIONID=ID的...转载 2019-07-26 11:49:01 · 6587 阅读 · 6 评论 -
【红黑树】——五分钟搞懂什么是红黑树(全程图解)
前言红黑树,对很多童鞋来说,是既熟悉又陌生。熟悉是因为在校学习期间,准备面试时,这是重点。然后经过多年的荒废,如今已经忘记的差不多了。如果正在看文章的你,马上快要毕业,面临着找工作的压力;又或者你觉得需要将这块知识重新复习一遍;又或者只是看看,那么恭喜你,赚到了。那么我将带领大家重新认识下红黑树,用简单的语言,搞懂红黑树。在学习红黑树之前,咱们需要先来理解下二叉查找树(BST)。二...转载 2019-07-23 09:47:12 · 6642 阅读 · 2 评论 -
【JUC】——CurrentHashMap(1.7、1.8)
一. CurrentHashMap概述笔者曾在《Map——HashMap》一文中提到,HashMap 是 Java Collection Framework 的重要成员,也是Map族(如下图所示)中我们最为常用的一种。不过遗憾的是,HashMap不是线程安全的。也就是说,在多线程环境下,操作HashMap会导致各种各样的线程安全问题,比如在HashMap扩容重哈希时出现的死循环问题,脏读问题...原创 2018-12-20 14:12:34 · 9528 阅读 · 5 评论 -
【Map】——HashMap死循环
前言在《Map——HashMap》中我们详细介绍了HashMap的使用,HashMap是一个数组链表,当一个key/Value对被加入时,首先会通过Hash算法定位出这个键值对要被放入的桶,然后就把它插到相应桶中。如果这个桶中已经有元素了,那么发生了碰撞,这样会在这个桶中形成一个链表。一般来说,当有数据要插入HashMap时,都会检查容量有没有超过设定的thredhold,如果超过,需要增大H...转载 2018-12-20 10:38:32 · 9480 阅读 · 1 评论 -
【基本类型】——基本类型与包装类型
一、基本类型Java一种静态编程语言,所有变量和表达式是在编译时就确定的。同时,Java又是一种强类型语言,所有的变量和表达式都有具体的类型,并且每种类型是严格定义的。类型限制了变量可以hold什么样的值,表达式最终会产生什么样的值,可以进行哪些操作。在Java中共有8中基本类型数据,同时每种基本类型又有对应的包装类。最简单的理解,基本类型有默认值,而包装类型初始为null。然后再根据这两...原创 2019-10-24 19:24:23 · 8918 阅读 · 1 评论 -
【ArrayList】——java.util.ArrayList源码分析
一、ArrayList类这里分析jdk 1.8,包含一些1.8新特性的源码继承树如下:宏观上说,ArrayList是基于动态数组实现的,数组具有按索引查找的特性,所以访问很快,适合经常查询的数据。public class ArrayList<E> extends AbstractList<E> implements List<...原创 2018-11-26 13:23:38 · 9028 阅读 · 0 评论 -
【面试】——Java面试题内容总结
往期内容聚合设计模式内容聚合面试技术文Java岗 面试考点精讲(基础篇01期)Java岗 面试考点精讲(基础篇02期)Java岗 面试考点精讲(网络篇03期)Java 面试中遇到的坑Java面试中遇到的坑【填坑篇】Java面试中遇到的坑【篇二】java面试遇到的坑[第三期]java面试填坑解惑篇[三]java面试遇到的坑[第四期]面试官:你分析...转载 2019-08-19 09:55:51 · 5553 阅读 · 7 评论