自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

欢迎您访问我的公众号【前程有光】

欢迎关注我的公众号【前程有光】 专注于系统架构实战,面试干货,分享百本各类电子书资料

原创 深度分析:SpringBoot异常捕获与封装处理,看完你学会了吗?
原力计划

SpringBoot异常处理简介​ 日常开发过程中,难免有的程序会因为某些原因抛出异常,而这些异常一般都是利用try ,catch的方式处理异常或者throw,throws的方式抛出异常不管。这种方法对于程序员来说处理也比较麻烦,对客户来说也不太友好,所以我们希望既能方便程序员编写代码,不用过多的自己去处理各种异常编写重复的代码又能提升用户的体验,这时候全局异常处理就显得很重要也很便捷了,是一种不错的选择。一、 全局异常捕获与处理Springboot对于异常的处理做了不错的支持,它提供了两个可用的注

2020-06-30 20:57:00 652 1

原创 阿里面试官:小伙子,你给我说一下Java类和对象吧,我是这样回答的!
原力计划

1.谈谈你对Java面向对象的理解?面向对象就是把构成问题的事务分解成一个个对象,建立对象的目的不是一个步骤,而是为了描述一个事务在解决问题中的行为。类是面向对象的一个重要概念,类是很多个具有相同属性和行为特征的对象抽象出来的,对象是类的一个实例。类具有三个属性:继承、封装和多态。封装:通过把程序模块化、对象化,通过把这些具体事物的特性属性和通过这些属性实现的具体方法放到一个类中。核心思想就是“隐藏细节”,“数据安全”。利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,

2020-06-30 14:10:09 135

原创 面试官:小伙子,你给我详细说一下线程的状态有哪些吧?
原力计划

前言线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,也因此被称为轻量级的进程。1)线程是如何工作的?线程的状态在 JDK 1.5 之后以枚举的方式被定义在 Thread 的源码中,它总共包含以下 6 个状态:NEW:新建状态,线程被创建出来,但尚未启动时的线程状态;RUNNABLE:就绪状态,表示可以运行的线程状态,它可能正在运行,或者是在排队等待操作系

2020-06-29 13:53:12 121

原创 新鲜出炉!JAVA线程池精华篇深度讲解,看完你还怕面试被问到吗?
原力计划

前言前两天趁着假期在整理粉丝私信的时候看到一个粉丝朋友的私信跟我说自己现在正在复习准备面试,自己在复习到线程池这一块的时候有点卡壳,总感觉自己差了点什么。想要我帮他指导一下。这不趁着假期我也有时间我把自己这么多年的理解和从网上找的资料放在一块整理了一下都放在下面了!1.什么是线程池线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位,我们的程序最终都是由线程进行运作。在Java中,创建和销毁线程的动作是很消耗资源的,因此就出现了所谓“池化资源”技术。线程

2020-06-28 14:55:29 97

原创 面试官:小伙子,你给我讲一下java类加载机制和内存模型吧
原力计划

类加载机制虚拟机把描述类的数据从 Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。类的生命周期加载(Loading)验证(Verification)准备(Preparation)解析(Resolution)初始化(Initialization)使用(Using)卸载(Unloading)类加载的过程类的加载过程包括了加载,验证,准备,解析,初始化类的加载主要分为以下三步:1. 加载:根据路径找到对应

2020-06-24 21:07:49 107

原创 那些面试90%会被问到的多线程、创建线程、线程状态、线程安全,一次性帮你全搞定!
原力计划

一、多线程1.概述多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。就是在单个程序中同时运行多个线程来完成不同的工作。2.并发与并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。3.程序、进程与多线程1)程序Java源程序和字节码文件被称为“程序” (Program),是一个静态的概念。2) 进程是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程

2020-06-23 15:59:34 62

原创 仅一年工作经验成功跳槽字节跳动,腾讯并拿到字节的offer,全靠这份面经!
原力计划

前言前几天由于工作的原因一直没怎么看私信,昨天在整理私信的时候看到了一个粉丝给我疯狂私信想要我帮忙整理一份大厂面经,说自己工作也有几年了想跳槽冲刺一下,但是不知道该怎么做好前期准备。我看到这个粉丝也是挺执着的,一直在给我私信,也是花了两天时间把之前几个朋友的跳槽面试经历和经验整理了一下,具体干货都给大家放在下面了!准备敲定了方向和目标后就开始系统准备,主要分为以下几个方面来准备。算法题事先已经看过别人的社招面经知道头条每轮技术面都有算法题,而这一块平时练习的比较少,校招时刷的题也忘记了很多。因此系

2020-06-22 16:20:17 213 1

原创 面试必看!花了三天整理出来的并发编程的锁及内存模型,看完你就明白了!
原力计划

前言最近看到有不少粉丝私信我说,能不能给整理出一份面试的要点出来,说自己复习的时候思绪很乱,老是找不到重点。那么今天就先给大家分享一个面试几乎必问的点,并发!在面试中问的频率很高的一个是分布式,一个就是并发,具体干货都在下方了。面试环节1. 面试官:你先说下你对synchronized的了解。我:synchronized可以保证方法或者代码在运行时,同一时刻只有一个方法可以进入到临界区,同时还可以保证共享变量的内存可见性。我:Java中每个对象都可以作为锁,这是synchronized实

2020-06-21 14:10:27 127 2

原创 新鲜出炉!花了三天整理的JVM复习知识点,面试突击必备!
原力计划

此次JVM知识点包含以下几个部分1.类加载机制2.jvm运行时数据区3.java对象内存布局4.jvm内存模型5.垃圾回收机制6.垃圾收集器7.问题排查一 类加载机制主要说的部分是这一块那么如何装载呢,这就谈到了咱们的双亲委派机制,简单来说就是类,向上递交,向下加载,源码和图如下if (parent != null) { c = parent.loadClass(name, false); } else { //由于BootstrapClassLoader是C++写

2020-06-20 20:13:38 652

原创 最新出炉!学会这12 种高效工具,让你的编程效率轻松好几倍!
原力计划

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。**所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用、正在使用或将来一定会用到的高效工具。这份列表名单包括集成开发环境、集成工具、测试和质量工具等。1、集成开发环境Eclipse是最有名也最广泛使用的Java集成开发环境(IDE),允许开发者结合语言支持和其他功能到任何的默认包中,而且Eclipse市场有许多定制和扩展的插件。IntelliJ已经引起了开发者的“追

2020-06-20 14:14:41 102

原创 面试官:小伙子,你给我说一下Java Exception 和 Error 的区别吧?
原力计划

前言昨天在整理粉丝给我私信的时候,发现了一个挺有意思的事情。是这样的,有一个粉丝朋友私信问我Java 的 Exception 和 Error 有什么区别呢?说他在面试的时候被问到这个问题卡壳了,最后还好也是有惊无险的过了。在恭喜这位粉丝的同时,我们再回过头来这个问题,其实在面试中这是个常见的连环问题了,大多数面试官都喜欢用这个话题发问。当时看完当时心里也就下了个决心,一定要写篇文章把 Java 的异常相关讲明白,让大家看完之后再遇到类似问题就会有所准备!throw 语句有点 java 基础的同学应该都

2020-06-19 14:05:38 67

原创 去年去阿里面试,被问到ArrayList和LinkedList,我是这样回答的!
原力计划

前言在一开始基础面的时候,很多面试官可能会问List集合一些基础知识,比如:ArrayList默认大小是多少,是如何扩容的?ArrayList和LinkedList的底层数据结构是什么?ArrayList和LinkedList的区别?分别用在什么场景?为什么说ArrayList查询快而增删慢?Arrays.asList方法后的List可以扩容吗?modCount在非线程安全集合中的作用?ArrayList和LinkedList的区别、优缺点以及应用场景ArrayList(1.8)A

2020-06-18 14:24:03 110

原创 深度分析:面试阿里,字节99%会被问到Java类加载机制和类加载器
原力计划

1. 类加载机制所谓类加载机制就是JVM虚拟机把Class文件加载到内存,并对数据进行校验,转换解析和初始化,形成虚拟机可以直接使用的Jav类型,即Java.lang.Class。2. 类加载的过程类加载的过程主要有装载(Load)、链接(Link)、初始化(Initialize)2.1 装载(Load)类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终

2020-06-17 16:55:42 56

原创 深度分析:Java并发编程之线程池技术,看完面试这个再也不慌了!
原力计划

线程池的好处Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池,相对于单线程串行处理(Serial Processing)和为每一个任务分配一个新线程(One Task One New Thread)的做法能够带来3个好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗

2020-06-16 20:41:36 44

原创 新鲜出炉!凭借着这份面试宝典,我终于拿下了字节跳动的offer!
原力计划

前言我做Java也十来年了,现在也算是中层管理,每次招聘都需要找一些面试题,干脆自己整理了一份,这份面试宝典是从我 去年开始收集的,一方面是给公司招聘用,另一方面也是想用它,来挖掘自己在 Java 技术栈中,还有那些知识点我了解的不够,然后再去复习一遍,以此来提高自己的技术深度,也增加一下自己的技术广度。然后说回面试的事,这份面试宝典本来是只有我们内部使用的,可到后来有很多朋友在微信上联系到我,让我帮他们找一些面试方面的资料,而且这些关系也不太好拒绝,到最后我干脆就有了这么一个想法,要不要把我整理的这面

2020-06-15 21:51:54 248 1

原创 深度分析:面试90%被问到的 Session、Cookie、Token,看完这篇你就掌握了!
原力计划

Cookie 和 SessionHTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。Session 是什么客户端请求服务端,服务端会为这次请求开辟一块内存空间,这个对象便是 Session 对象,存储结构为 ConcurrentHashMap。Session 弥补了 HTTP 无状态特性,服务器可以利用 Session 存储客户端在同一个会话

2020-06-14 21:02:55 773

原创 深度分析:那些在面试90%会被问到的List集合?看完你就懂了!
原力计划

在一开始基础面的时候,很多面试官可能会问List集合一些基础知识,比如:ArrayList默认大小是多少,是如何扩容的?ArrayList和LinkedList的底层数据结构是什么?ArrayList和LinkedList的区别?分别用在什么场景?为什么说ArrayList查询快而增删慢?Arrays.asList方法后的List可以扩容吗?modCount在非线程安全集合中的作用?ArrayList和LinkedList的区别、优缺点以及应用场景ArrayList(1.8)Arra

2020-06-14 14:11:13 123

原创 面试官:小伙子,你给我说一下你对MySQL索引的理解吧
原力计划

一、索引是什么?索引是帮助MySQL高效获取数据的数据结构。二、索引能干什么?索引非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引能够轻易将查询性能提高好几个数量级,总的来说就是可以明显的提高查询效率。三、索引的分类?1、从存储结构上来划分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。这里所描述的是索引存储时保存的形式,2、从应用层次来分:普通索引,唯一索引,复合索引3、根据中数据的物理顺序与键值的逻

2020-06-12 14:21:47 106

原创 深度分析:Spring Boot 定时任务的技术选型对比,看完你就懂了
原力计划

1. 概述在产品的色彩斑斓的黑的需求中,有存在一类需求,是需要去定时执行的,此时就需要使用到定时任务。例如说,每分钟扫描超时支付的订单,每小时清理一次日志文件,每天统计前一天的数据并生成报表,每个月月初的工资单的推送,每年一次的生日提醒等等。其中,我最喜欢“每个月月初的工资单的推送”,你呢?在 JDK 中,内置了两个类,可以实现定时任务的功能:java.util.Timer :可以通过创建 java.util.TimerTask 调度任务,在同一个线程中串行执行,相互影响。也就是说,对于同一个 Ti

2020-06-11 17:00:28 211

原创 面试必看!凭借着这份 MySQL 高频面试题,我拿到了京东,字节的offer!
原力计划

前言本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水.前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面试文章,发现其中的一些问题自己也回答不好,虽然知识点大部分都知道,但是无法将知识串联起来.因此决定搞一个MySQL灵魂100问,试着用回答问题的方式,让自己对知识点的理解更加深入一点.索引相关关于MySQL的索引,曾经进行过一次总结,文章链接在这里 Mysql索引原理及其优化.1. 什么是索引

2020-06-10 20:51:53 64

原创 新鲜出炉!2020年上半年阿里,腾讯等一线大厂面试真题整理!
原力计划

最近和很多粉丝聊了聊最近找工作的情况,发现很多人也是最近都在忙着跳槽换工作,针对这个情况,我把大家所有面试问题都整理了下,也算是给大家开个小灶,帮助你们在面试的时候更有底气,话不多说几百道一线大厂面试真题都给你们准备在了下面。腾讯PCG看点一面项目APK的入口在哪里Activity的启动模式列表闪动的问题怎么解决的?ListView使用可以改进的问题,包括布局优化、异步加载资源的闪动问题等等。GlideLRU算法的思想?怎么设计一个图片加载工具?为什么

2020-06-09 17:11:11 185

原创 深度分析:Redis 的数据结构及其使用场景分析,原来这么简单?
原力计划

Redis基础数据结构有哪些?一、String(字符串)在任何一种编程语言里,字符串String都是最基础的数据结构, 那你有想过Redis中存储一个字符串都进行了哪些操作嘛?在Redis中String是可以修改的,称为动态字符串(Simple Dynamic String简称SDS)(快拿小本本记名词,要考的),说是字符串但它的内部结构更像是一个ArrayList,内部维护着一个字节数组,并且在其内部预分配了一定的空间,以减少内存的频繁分配。Redis的内存分配机制是这样:当字符串的长度小于

2020-06-08 20:07:17 66

原创 面试阿里,腾讯90%会被问到的zookeeper,把这篇文章看完就够了。
原力计划

Zookeeper概述zookeeper高容错数据一致性协议(CP)的分布式小文件系统,提供类似于文件系统的目录方式的数据存储。全局数据一致性:每个server保存一份相同的数据副本,client无论连接到哪个server展示的数据都是一致的。可靠性:一旦事务成功提交,就会被保留下来。有序性:客户端发起的事务请求,在也会顺序的应用在Zookeeper中。数据更新原子性:一次数据更新要么成功要么失败,不存在中间状态。实时性:保证客户端在一个间隔时间范围内获取服务的更新消息或服务器失效信息。z

2020-06-07 22:29:21 162

原创 面试官:小伙子,说说你对分布式系统原理的看法吧
原力计划

1 概念1.1 模型1.2 副本1.3 衡量分布式系统的指标2 分布式系统原理2.1 数据分布方式2.2 基本副本协议2.3 Lease 机制2.4 Quorum 机制2.5 日志技术2.6 两阶段提交协议2.7 MVCC2.8 Paxos协议2.9 CAP1 概念1.1 模型节点在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干..

2020-06-07 16:21:37 62

原创 面试官:小伙子,你给我说一下HashMap 为什么线程不安全?
原力计划

前言:我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密。1.jdk1.7中的HashMap在jdk1.8中对HashMap做了很多优化,这里先分析在jdk1.7中的问题,相信大家都知道在jdk1.7多线程环境下HashMap容易出现死循环,这里我们先用代码来模拟出现死循环的情况: 1 public class HashMapTest { 2 3 public static void main(String[] a

2020-06-05 20:15:16 69

原创 面试官:小伙子,给我说一下mysql 乐观锁和悲观锁吧

悲观锁介绍悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中, 将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了 加锁机制,也无法保证外部系统不会修改数据)。使用场景举例:以MySQL InnoDB为例商品goods表中有一个字段status,status为1代表商品未被下单,status为2代表商品已经被下单,那么我们对

2020-06-04 16:22:33 55

原创 面试必看!靠着这份字节和腾讯的面经,我成功拿下了offer!
原力计划

准备敲定了方向和目标后就开始系统准备,主要分为以下几个方面来准备。算法题事先已经看过别人的社招面经知道头条每轮技术面都有算法题,而这一块平时练习的比较少,校招时刷的题也忘记了很多。因此系统复习的时候算法题还是花了比较多时间的。先是快速刷完了剑指 offer,这个校招时已经刷过两边了,因此现在刷起来会相对快一些。然后就是啃 LeetCode 的题了,LeetCode 的题比较多,想在短短几周内刷完基本是不可能的,因此我主要按照类型去刷,每个类型刷几道就会比较有感觉了。比如链表的题优先考虑递归和双指针来解

2020-06-03 20:21:29 137 1

原创 新鲜出炉!面试90%会被问到的Java多线程面试题,史上最全系列!
原力计划

前言最近很多粉丝朋友私聊我说能不能给整理出一份多线程面试题出来,说自己在最近的面试中老是被问到这一块的问题被问的很烦躁,前一段时间比较忙没时间回私信,前两天看到私信我也是赶紧花了两天给大家整理出这一块的面试题库出来让大家看看,话不多说都给大家总结在下面了!1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓知其然知其所以然,会用只是知其然,为什么用才是知其所以然,只有达到知其然知其所以然的程度才可以说是把一个知识点运用自如。OK,

2020-06-02 22:07:56 71

原创 面试必备!就凭借着这份Java 高频面试题,我拿下了阿里,字节的offer!
原力计划

List1. 为什么 arraylist 不安全?我们查看源码发现 arraylist 的 CRUD 操作,并没有涉及到锁之类的东西。底层是数组,初始大小为 10。插入时会判断数组容量是否足够,不够的话会进行扩容。所谓扩容就是新建一个新的数组,然后将老的数据里面的元素复制到新的数组里面(所以增加较慢)。2. CopyOnWriteArrayList 有什么特点?它是 List 接口的一个实现类,在 java.util.concurrent(简称 JUC,后面我全部改成 juc,大家注意下)。内部持

2020-06-02 16:42:12 59

提示
确定要删除当前文章?
取消 删除