- 博客(45)
- 资源 (18)
- 收藏
- 关注
原创 阿里巴巴面经、面试流程、面试题
从去年年中一直到今年年初,我面阿里总共面了5-6次,经历了三次完整的4轮技术面 + 1轮HR面,目前将面试过程和常见题目记录一下,供参考。面试流程面试轮次阿里社招一般都是P6级别以上,技术面4轮以上 + 1轮HR面。阿里校招一般都是P4、P5级别,技术面3轮 + 1轮HR面。面试侧重点以社招P6为例,来看看每轮考察的侧重点。一面一面面试官一般是你组内师兄或组长,主要考察Java基础、中间件原理以及项目经历;面试时长30-60分钟。Java基础和中间件考察范围会在文末附上。项目经历这块,选
2020-05-19 12:01:05
12777
原创 【面试题】详解 ThreadPoolExecutor 的参数含义及源码执行流程?
详解 ThreadPoolExecutor 的参数含义及源码执行流程?线程池是为了避免线程频繁的创建和销毁带来的性能消耗,而建立的一种池化技术,它是把已创建的线程放入“池”中,当有任务来临时就可以重用已有的线程,无需等待创建的过程,这样就可以有效提高程序的响应速度。但如果要说线程池的话一定离不开 ThreadPoolExecutor ,在阿里巴巴的《Java 开发手册》中是这样规定线程池的:线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理
2020-05-09 17:52:53
2588
原创 Java架构师视频+授课资料
近期整理了Java架构师相关视频和资料,供大家学习,获取链接在文末。若链接失效请留言.一、视频部分截图 二、资料部分截图链接:https://pan.baidu.com/s/1RHh5XsxJlMMRj3fejTKEdA 密码:79d6...
2020-05-09 17:51:27
4906
6
原创 【面试题】线程的状态有哪些?它是如何工作的?
线程的状态有哪些?它是如何工作的?线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,也因此被称为轻量级的进程。典型回答线程的状态在 JDK 1.5 之后以枚举的方式被定义在 Thread 的源码中,它总共包含以下 6 个状态:NEW,新建状态,线程被创建出来,但尚未启动时的线程状态;RUNNABLE,就绪状态,表示可以运行的线程状态,它可能正在运行,或者
2020-05-09 17:48:32
975
原创 【面试题】HashMap 底层实现原理是什么?JDK8 做了哪些优化?
HashMap 底层实现原理是什么?JDK8 做了哪些优化?HashMap 是使用频率最高的类型之一,同时也是面试经常被问到的问题之一,这是因为 HashMap 的知识点有很多,同时它又属于 Java 基础知识的一部分,因此在面试中经常被问到。典型回答在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的,JDK 1.8 之后新增了红黑树的组成结构,当链表大于 8 并且容量大于 64 时,链表结构会转换成红黑树结构,它的组成结构如下图所示:[外链图片转存失败,源站可能有防盗链机制,建议将
2020-05-09 17:47:40
2297
1
原创 【海量数据处理】如何在大量的数据中找出不重复的整数?
题目描述在 2.5 亿个整数中找出不重复的整数。注意:内存不足以容纳这 2.5 亿个整数。解答思路方法一:分治法与前面的题目方法类似,先将 2.5 亿个数划分到多个小文件,用 HashSet/HashMap 找出每个小文件中不重复的整数,再合并每个子结果,即为最终结果。方法二:位图法位图,就是用一个或多个 bit 来标记某个元素对应的值,而键就是该元素。采用位作为单位来存储数据,可以大大节省存储空间。位图通过使用位数组来表示某些元素是否存在。它可以用于快速查找,判重,排序等。不是很清楚?我先举
2020-05-08 17:35:16
1012
原创 【海量数据处理】如何从大量数据中找出高频词?
如何从大量数据中找出高频词?题目描述有一个 1GB 大小的文件,文件里每一行是一个词,每个词的大小不超过 16B,内存大小限制是 1MB,要求返回频数最高的 100 个词(Top 100)。解答思路由于内存限制,我们依然无法直接将大文件的所有词一次读到内存中。因此,同样可以采用分治策略,把一个大文件分解成多个小文件,保证每个文件的大小小于 1MB,进而直接将单个小文件读取到内存中进行处理。...
2020-05-08 17:06:27
4134
1
原创 【海量数据处理】如何从大量的 URL 中找出相同的 URL?
如何从大量的 URL 中找出相同的 URL?题目描述给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G。请找出 a、b 两个文件共同的 URL。解答思路每个 URL 占 64B,那么 50 亿个 URL占用的空间大小约为 320GB。5,000,000,000 * 64B ≈ 5GB * 64 = 320GB由于内存大小只有 4G,因此...
2020-05-08 16:45:38
1771
原创 【消息队列】如何保证MQ的高可用?
面试题如何保证消息队列的高可用?面试官心理分析如果有人问到你 MQ 的知识,高可用是必问的。上一讲提到,MQ 会导致系统可用性降低。所以只要你用了 MQ,接下来问的一些要点肯定就是围绕着 MQ 的那些缺点怎么来解决了。要是你傻乎乎的就干用了一个 MQ,各种问题从来没考虑过,那你就杯具了,面试官对你的感觉就是,只会简单使用一些技术,没任何思考,马上对你的印象就不太好了。这样的同学招进来要是做...
2020-04-28 10:04:53
1888
原创 为什么要使用消息队列?消息队列有什么优缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ的区别?
面试题为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?面试官心理分析其实面试官主要是想看看:第一,你知不知道你们系统里为什么要用消息队列这个东西?不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或者是别人设计的架...
2020-04-28 09:25:59
454
原创 docker兼容性报错
1. 错误日志error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.39/images/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuratio...
2018-11-21 11:39:38
1186
原创 Docker / Kubernetes部署Java / SpringBoot项目
一、部署流程二、构建镜像1、创建应用可以到 http://start.spring.io/ (或者借助IDE)创建一个SpringBoot 的应用,在创建的时候,请选择Web 依赖,以方便部署到 Kubernetes 之后可以查看效果。2、暴露测试接口新建一个Rest接口:@RestController public class HelloCtroller { @RequestM...
2018-11-21 11:34:52
8119
2
原创 Redis常用场景、数据结构、读写一致、缓存穿透、缓存雪崩等
一、分布式系统为什么要用Redis1、性能 我们在碰到需要执行耗时特别久,且结果不频繁变动的 SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。2、并发 在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用 Redis 做一个缓冲操作,让请求先访问到 Redis,而不是直接访问数据库。...
2018-08-31 10:50:01
638
原创 Java面试题-阿里、饿了么、链家、携程
一、J2SE部分1、Java基础==与equals()方法的区别?1. ==在比较基本数据类型时比较的是值,比较两个对象时比较的是地址值;2. equals()方法存在于Object类中,Object类中equals()方法底层依赖的是==操作, 在所有没有重写equals()的类中,调用equals()其实和使用==的效果一样,也是比较的地址值。 Strin...
2018-07-19 21:29:36
9214
4
原创 Nginx企业应用
一、proxy参数深入理解1、请求头设置参数(location中) nginx支持在原请求里添加和设置参数proxy_set_header Host $host; 设置请求host为客户端访问的域名(指向nginx虚拟服务),由于nginx重发了一次请求,所以默认服务节点收到的请求host为反向代理指向的服务节点的host。2、连接相关参数(一般配置在loc...
2018-07-09 19:08:50
555
原创 Nginxa安装、命令、配置以及核心模块
写在前面:负载均衡:请求分发(转发)–一次请求反向代理:代理服务器重新发起请求(重定向)–两次请求一、nginx的安装1、下载 http://nginx.org/download/ –> ./configure 运行nginx配置文件 –> make 编译 –> make install 安装 brew install nginx ...
2018-07-09 19:08:07
763
原创 Java并发-剖析ThreadLocal源码
一、ThreadLocal是什么? ThreadLocal与线程同步机制不同,线程同步机制是多个线程共享同一个变量,而ThreadLocal是为每一个线程创建一个单独的变量副本,故而每个线程都可以独立地改变自己所拥有的变量副本,而不会影响其他线程所对应的副本。可以说ThreadLocal为多线程环境下变量问题提供了另外一种解决思路。二、ThreadLocal常用方法的源码...
2018-07-03 15:05:18
253
原创 Quartz集群数据库连接失效
一、问题描述[2018-6-5 13:57:11] [WARN ] [com.mchange.v2.c3p0.impl.NewPooledConnection:425] - [c3p0] A PooledConnection that has already signalled a Connection error is still in use![2018-6-5 13:57:11]...
2018-06-06 10:56:57
2814
原创 Java线程池的实现--Executor、ThreadPoolTaskExecutor、@Async的使用
一、为什么要使用线程池 当我们需要的并发执行线程数量很多时,且每个线程执行很短的时间就结束了,这样,我们频繁的创建、销毁线程就大大降低了工作效率(创建和销毁线程需要时间、资源)。java中的线程池可以达到这样的效果:一个线程执行完任务之后,继续去执行下一个任务,不被销毁,这样线程利用率提高了。二、Jdk 1.5后线程池 //【固定的线程池】定义进程池并指定其大小 ...
2018-06-05 17:33:21
5679
原创 filter过滤器注入bean实例时注入失败null
1、问题描述 SpringBoot中filter注入bean时注入失败,bean一直为空。@Slf4j@Componentpublic class RestAuthFilter extends FormAuthenticationFilter { //实际注入为null @Autowired MobileDeviceService mobileDev...
2018-05-30 17:44:02
6719
原创 Cannot forward to error page for request [/wechat/portal] as the response has already been commit
1、问题描述 最近使用Spring Boot搭建 web 框架过程中遇到这样一个问题:该接口接收微信服务器的签名校验,但是请求的时候报了ERROR。2018-05-30 13:56:14.265 ERROR - Cannot forward to error page for request [/wechat/portal/hdd] as the response has al...
2018-05-30 17:05:49
24198
2
原创 Tomcat This is very likely to create a memory leak. Stack trace of thread 错误分析
1、问题描述 启动tomcat部署项目时,报This is very likely to create a memory leak. Stack trace of thread错误。29-May-2018 12:30:09.322 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.sta...
2018-05-30 10:18:55
122769
1
原创 AngularJS教学视频+资料+ES6教学视频
获取链接在文末,若失效请留言。一、视频截图 二、资料截图链接:https://pan.baidu.com/s/1gfMA1fNME6yCD50vPScmvA 密码:0tgy
2018-05-02 17:32:57
893
原创 数据结构--图(Java版)
一、图的基本概念 线性表和树两类数据结构,线性表中的元素是“一对一”的关系,树中的元素是“一对多”的关系,本章所述的图结构中的元素则是“多对多”的关系。 图(Graph)是一种复杂的非线性结构,在图结构中,每个元素都可以有零个或多个前驱,也可以有零个或多个后继,也就是说,元素之间的关系是任意的。无向图: 无向图是由顶点和边构成。有向图: 有向图是由顶点和有...
2018-05-02 16:23:37
26197
7
原创 数据结构--树(Java版)
一、树节点的表示/** * 树的节点 * @author hoaven * */public class TreeNode<T> { T data; TreeNode<T> left; TreeNode<T> right; public TreeNode(T data){ this.data =...
2018-05-02 15:14:03
1130
原创 数据结构--冒泡排序、归并排序、快速排序、选择排序、插入排序(Java版)
一、冒泡排序1、思路 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 针对所有的元素重复以上的步骤,直到没有任何一对元素需要比较。 2、实现/** * 排序算法的接口 * @author hoaven */public interface ISort { /** * 对数组array进行升序排序 * @p...
2018-05-02 11:06:48
750
原创 数据结构--二分查找(Java版)
二分查找:在一个有序数组中查找某个值。一、循环实现/** * 使用循环的方式实现二分查找 * * @param array * @param value * @return 找到了value就返回该值,否则返回null */ public static Integer searchCirculation(int[...
2018-04-28 17:53:17
305
原创 数据结构--队列(Java版)
一、队列介绍 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列也是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的特点:先进先出二、队列的简单操作1、队列的定义/** * 队列的接口 * @author hoaven */public...
2018-04-28 17:33:57
220
原创 数据结构--堆栈(Java版)
一、栈的介绍 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈的特点:先进后出二、栈的简单操作...
2018-04-28 16:47:12
248
原创 数据结构--链表(Java版)
一、链表介绍 链表是由一系列非连续的节点组成的存储结构,链表是一种递归的数据结构,它或者为空,或者是指向一个结点的引用,该结点含有一个泛型的元素和一个指向另一个结点的引用。分类:简单分下类的话,链表又分为单向链表和双向链表,而单向/双向链表又可以分为循环链表和非循环链表,下面简单就这四种链表进行图解说明。1、单向链表 单向链表就是通过每个结点的指针指向下一个结点从而链...
2018-04-28 15:11:19
289
原创 Java后端接口、Mysql优化建议与规范
一、后端接口禁止使用递归;原因:每次递归调用时会向栈中push当前方法的运行状态(现场),而Java栈内存的使用超过限制的大小时,程序会出现栈异常;避免层级嵌套循环;注意方法、类文件中的代码量,适度分离;使用基本类型定义变量时,千万注意该变量值可能为null的情况,此时建议使用对应的包装类来定义变量;避免在同一接口中过多的访问数据库,建议次数控制在3次以内;避免过多使用static...
2018-04-28 11:25:55
1903
原创 slf4j、slf4j-logback日志框架使用
写在前面:本文旨在代码中使用@Slf4j注解实现日志处理,使用slf4j作为门面api,使用slf4j-logback作为日志绑定。一、Slf4J介绍 SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。1、依赖 <dependency> ...
2018-04-28 11:00:09
492
原创 lombok-Java插件使用
一、lombok介绍 lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。二、lombok安装1、安装插件2、引入依赖<dependency> <groupId>org.projectlombok</gr...
2018-04-28 10:26:10
426
原创 单例设计模式的几种Java实现
一、静态变量初始化实现线程安全的单例模式 static变量instance是在类被加载时初始化并仅被初始化一次,这样就可以保证只有一个instance被初始化。public class Singleton { private static Singleton instance = new Singleton(); private Singleton(){} ...
2018-04-28 09:34:46
171
原创 Redis分布式锁Java实现
一、背景 在天猫、京东、苏宁等等电商网站上有很多秒杀活动,例如在某一个时刻抢购一个原价1999现在秒杀价只要999的手机时,会迎来一个用户请求的高峰期,可能会有几十万几百万的并发量,来抢这个手机,在高并发的情形下会对数据库服务器、文件服务器、应用服务器造成巨大的压力,严重时甚至宕机了。另一个问题是,秒杀的东西都是有量的,例如一款手机只有10台的量秒杀,那么,在高并发的情况下,成千上万条数据...
2018-04-09 11:27:42
231
原创 javassist 版本导致ClassNotFoundException: javassist.ClassPath异常
1、异常描述使用Dubbo时,引入了javassist导致出现了ClassNotFoundException: javassist.ClassPath异常,因为此异常网上资料较少,特分享出来供大家脱坑: 服务启动后报错:message: Context initialization failed (o.s.web.context.ContextLoader:350) [localhost-sta
2018-03-30 11:34:29
15993
2
原创 java.util.concurrent源码分析(五)ConcurrentHashMap实现
1、线程安全和非线程安全引入问题:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?以上是Java面试中常见的提问,众所周知,前者是非线程安全的,后者是线程安全的。那何为非线程安全?何为线程安全?线程安全:线程安全就是说多线程访问同一代码(临界资源),不会产生不确定的结...
2018-03-27 18:40:53
198
原创 java.util.concurrent源码分析(四)ReentrantReadWriteLock实现
1、ReentrantReadWriteLock介绍(1)ReentrantReadWriteLock与ReentrantLock ReentrantLock实现了标准的互斥操作, 也就是一次只能有一个线程持有锁, 也即所谓独占锁的概念. 显然这个特点在一定程度上面降低了吞吐量, 实际上独占锁是一种保守的锁策略, 在这种情况下任何”读/读”, “写/读”, “写/写”操作都不能同时发生.但是同样
2018-03-27 13:30:18
193
原创 java.util.concurrent源码分析(三)ReentrantLock实现
1、ReentrantLock介绍(1)简介在java.util.concurrent.locks包中有很多Lock的实现类, 常用的有ReentrantLock, ReadWriteLock(实现类ReentrantReadWriteLock). 这些锁的实现思路都大同小异, 都依赖java.util.concurrent.AbstractQueuedSynchronizer类。...
2018-03-26 20:13:36
222
原创 java.util.concurrent源码分析(二)atomic包
1、atimic包介绍Aomic数据类型有四种类型:AomicBooleanAomicIntegerAomicLongAomicReferrence:引用,针对Object以上四种类型对应的数组类型所有原子操作都是依赖于sun.misc.Unsafe这个类,它是Java的一个安全的开发工具。2、关于CAS现代主流CPU都支持的一种硬件级别的原子操作, 比较并交换, 操作包含三个操作数:*
2018-03-26 17:50:51
265
深入理解Java虚拟机:JVM高级特性与最佳实践(两本高清供选择)pdf
2018-04-03
架构探险——从零开始写Java Web框架高清带书签pdf
2018-04-03
RabbitMQ实战 高效部署分布式消息队列完整版带书签pdf
2017-12-22
Java多线程编程核心技术_完整版_高清带书签
2017-09-26
apache-tomcat-7.0.72
2016-09-30
Maven实战高清pdf
2016-09-30
hadoop笔记和相关资料
2016-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人