自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(208)
  • 收藏
  • 关注

原创 50道多线程并发面试题

如果想要执行的线程有返回,可以使用Callable。CPU的缓存是以缓存行(cache line)为单位进行缓存的,当多个线程修改相互独立的变量,而这些变量又处于同一个缓存行时就会影响彼此的性能。这就是伪共享现代计算机计算模型:CPU执行速度比内存速度快好几个数量级,为了提高执行效率,现代计算机模型演变出CPU、缓存(L1,L2,L3),内存的模型。CPU执行运算时,如先从L1缓存查询数据,找不到再去L2缓存找,依次类推,直到在内存获取到数据。

2022-09-27 21:37:42 579 1

原创 线程池使用的10个坑

日常开发中,为了更好管理线程资源,减少创建线程和销毁线程的资源损耗,我们会使用线程池来执行一些异步任务。但是线程池使用不当,就可能会引发生产事故。今天跟大家聊聊线程池的10个坑。大家看完肯定会有帮助的~线程池默认使用无界队列,任务过多导致OOM线程创建过多,导致OOM共享线程池,次要逻辑拖垮主要逻辑线程池拒绝策略的坑Spring内部线程池的坑使用线程池时,没有自定义命名线程池参数设置不合理线程池异常处理的坑使用完线程池忘记关闭。

2022-09-27 15:22:32 1862

原创 金九银十必问Java面试题

工作六年面试被问JVM为什么使用元空间替换了永久代?JVM 为什么使用元空间替换了永久代?”这是一个工作6年的同学去字节第一面遇到的问题,很遗憾,他没有回答出来大家好,我是Mic,一个工作了14年的Java程序员。关于这个问题,我们怎么回答?面试官到底关注什么呢?

2022-09-07 20:42:20 407

原创 淦!“忍一时越想越气,退一步越想越亏‘’ 三面阿里,被面试官怼得体无完肤

下面总结了一些问题,要注意自己一定要在自己的逻辑里面自洽,不能前后矛盾,前因后果要想清楚。也可以自己不要把所有问题都说满,可以故意漏下问题,等面试官提问(面试套路,自己主导问题方向)。总之,不然可能一个不是这个范围的问题把你问到了,你不知道如何回答,会给面试官一个不好的印象(为啥你自己的项目你都没有吃透?)面试一定要自信。本来应聘就是双向选择的过程,面试的公司也不是非你不进,不要因为你是面试者就姿态很低,一种乞求面试官给你一份工作的姿态,这样是不对的。

2022-09-07 20:38:39 218

原创 网易Java岗社招面试经历分享

面向对象的特点有哪些?列举几个java常用的package及其作用接口和抽象类有什么联系和区别重载和重写有什么区别java有哪些基本数据类型?Java支持的数据类型有哪些?什么是自动拆装箱?int 和 Integer 有什么区别数组有没有length()方法?String有没有length()方法?Java中符号>>和>>>有什么区别?Java类的实例化顺序什么是值传递和引用传递(1)值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量.

2022-09-07 19:46:43 201

原创 分布式中灰度方案实践

分布式系统中会存在这样的开发场景,不同需求可能涉及到对同一个服务的开发,那么该服务在研发期间就会存在多个版本并行的状态,为了保持不同版本之间的隔离性,验收需要将请求路由到指定版本号的服务上处理;假设存在三个服务:A、B、C,且服务B和C都存在多个版本,那么让请求按照即定的路由规则执行,即可保证研发期间的验收是版本间隔离的,并且可以实现灰度部署的策略;

2022-09-07 16:18:01 151

原创 【金九银十必问面试题】站在架构师角度分析问题,如何解决TCC中的悬挂问题

如何解决TCC中的悬挂问题”!一个工作了4年的Java程序员,去京东面试,被问到这个问题。这个问题面试官想考察什么方面的知识?我们又该怎么回答呢?

2022-09-07 15:13:59 192

原创 JVM内存模型与类加载机制

从jdk1.2开始,类的加载过程采用了父亲委托机制,除了根类加载器外,其他的类加载器,都有且只有一个父类,当ClassLoader1需要去加载某个类时,它首先委托给自己的父类加载器,父类还有父类继续往上委托,直到委托到根类加载器,如果从根类加载器加载不了,根的子类加载器尝试加载,直到某个父类加载器可以加载此类,由此类加载器加载(然后把此Class对象的引入往下传递),父类加载不了,当前类加载器加载,如果当前类也加载不了,抛出异常,ClassNotFoundException。

2022-09-06 16:09:53 210

原创 面试20K的职位必须要熟悉的Java线程池面试题

然后那个线程处理完一个任务之后,就会用阻塞的方式尝试从任务队列里获取任务,如果队列是空的,他就会阻塞卡在那儿不动,直到有人放一个任务到队列里,他才会获取到一个任务然后继续执行,循环往复,如下图。此时线程池里的线程都阻塞式在workQueue上等待获取任务,有一个任务进来就会唤醒一个线程来处理这个任务,处理完了任务再次阻塞在workQueue上尝试获取下一个任务,如下图所示这个意思。因为在面互联网大厂的时候,一定会问并发,问并发的时候一定会问到线程池,问到线程池一定会问构造线程池的一些参数的含义。

2022-09-06 15:00:27 89

原创 掌握了SpringBoot的自动装配原理后你会发现自定义Starter也是非常容易的哦!

创建一个普通的Maven项目,名称为,命名要注意,第三方starter约定是xxxx+.添加相关的依赖添加属性类/** * 定义属性类 * 指定前缀为 bobo.redisson */@ConfigurationProperties(prefix = "bobo.redisson")public classRedissonProperties { private String host = "localhost";}}然后创建对应的配置类。

2022-09-04 17:18:42 158

原创 打造淘宝秒杀架构:Java性能调优

秒杀系统绝对是程序员的加分项,不论是面试还是工作当中,如果自己有深刻的见解,也就意味着身价的高低;这本笔记是用图文搭配系统的讲解,可以让读者更容易理解核心概念。如果你的目标是提高自己的核心竞争力不被行业淘汰,那么高并发秒杀架构这块是你必不可少的一块。

2022-09-04 16:20:16 159

原创 Java面试题合集:网络编程+数据库原理+多线程+Spring框架+Redis等

ISO模型与协议http1.0:需要使用keep-alive参数来告知服务器端要建立一个长连接http1.1:默认长连接。支持只发送header信息,可以用作权限请求。支持Host域。http2.0:多路复用的技术,做到同一个连接并发处理多个请求。HTTP2.0使用HPACK算法对header的数据进行压缩。支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源。

2022-09-01 20:23:22 228

原创 阿里Java3轮面试真题:JVM+并发锁+Sql防注入+Zookeeper等

自我介绍、项目介绍Spring拦截器、实现了哪些方法?底层原理AOP如何配置,底层原理、2种动态代理,aop注解实现,xml定义切面Bean的作用域,单例模式是否线程安全?恶汉模式是否线程安全?bean如何结束生命周期?Spring事务种类,如何回滚,A方法调用B方法,在B方法中出现异常,会回滚吗?(动态代理)快速排序时间复杂度JVM内存结构详细分配,各比例是多少讲讲dubbo,数据库主从复制,2个节点读写分离,如何在读节点马上读到主节点写入的值。

2022-09-01 20:15:57 114

原创 面试中被问到性能优化手段该如何回答?

性能优化根据优化的类别,分为业务优化和技术优化。业务优化产生的效果也是非常大的,但它属于产品和管理的范畴。同作为程序员,在平常工作中,我们面对的优化方式,主要是通过一系列的技术手段,来完成对既定的优化目标。这一系列的技术手段,我大体归纳为如图以下 7 类:可以看到,优化方式集中在对计算资源和存储资源的规划上。优化方法中有多种用空间换时间的方式,但只照顾计算速度,而不考虑复杂性和空间问题,也是不可取的。我们要做的,就是在照顾性能的前提下,达到资源利用的最优状态。接下来,我简要介绍一下这7个优化方向。...

2022-08-31 20:33:46 314

原创 刷完20年京东架构师的 Redis 优化手册

读写速度快当商品抢购,主页访问量大时,数据库容易崩,就可以用 redis 分担压力相对于 Kafka 和 Rabbitmq,当只有一组消费者的消息队列时,Redis 可以轻松搞定异步消息传递时的繁琐功能Redis 提供的位图数据结构可以完全容纳下过亿的存储量,大大节约存储空间还有很多,我就不一一列举了。...

2022-08-31 20:21:09 112

原创 堪称2022年面试天花板的Java八股文面试真题汇总

为了不影响大家的阅读体验,这篇 Java 八股文的面试真题已经为大家整理好了,

2022-08-31 20:08:20 291

原创 字节跳动测试岗面试跪在二面,复盘失败原因决定再战一次

面试中1、自我介绍简历中有的信息就别重复闲扯啦,简单的由近到远介绍公司经历,然后介绍项目,突出项目中用到的技术点,你的职责,你的业绩,引导面试官去提问你熟练掌握的技能。2、不要给自己挖坑不要在面试中扯出一些你不熟悉的技能,面试官听到后都会跟着追问你。3、减少沉默的尴尬了解问题后,快速想思路,想不到就换种方式回答,或者回答一个类似技能点的答案。不然一直没想出来,沉默了半天,不仅会造成气氛尴尬,还会增加你的紧张,后边脑子就更不好使啦。4、分析面试官话语中想表达的想法经常 “嗯嗯, 可以。...

2022-08-31 16:18:44 259

原创 SpringCloud 微服务架构升级总结

起源:微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”。文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。通信方式:每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API)。微服务的常规定义:微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。...

2022-08-31 16:09:45 301

原创 面试常问的分布式事务解决方案

A系统在本地一个事务里操作的同时,插入一条数据到消息表接着A系统将这个消息发送到MQB系统接收到消息后,在一个事务里,往自己本地消息表里插入一条数据,同时执行其他的业务操作,如果这个消息已经被处理过了,那么此时这个事务会回滚,这样保证不会重复处理消息B系统执行成功后,就会更新自己本地消息表的状态以及A系统消息表的状态如果B系统处理失败,那么就不会更新消息表状态,那么此时A系统会定时扫描自己的消息表,如果有未处理的消息,会再次发送到MQ中去,让B再处理。...

2022-08-30 19:29:10 301

原创 献给程序员们一份“热腾腾”的面经分享(写于拿到offer的24小时内)!

首先介绍一下这是我一个朋友的面试经历,花了一周的时间,面试了5家公司,拿到两个offer,这篇面试分享是在拿到第二个offer的当天晚上写的。由于时间相隔较短,所以面试大部分内容都记得,我就单刀直入直接写一下朋友的面试内容,写作水平一般,有点像记流水账,大家将就着看看。。。...

2022-08-30 17:26:35 514

原创 阿里架构师深刻解读6大设计原则和28种设计模式

深刻解读6大设计原则和28种设计模式的准确定义、应用方法和最佳实践,全方位比较各种同类模式之间的异同,详细讲解组合使用不同模式的方法。

2022-08-30 16:46:03 133

原创 一篇深度讲解TCP文章看完让你面试时横着走

应用,主机,网络,数据,数据单位应用层 - 应用间通信协议,不同应用使用不同协议 HTTP,SMTP运输层 - 主机间通信服务,运输层复用、分用网络层 - 选择合适 网间路由、交换结点,通过 多链路、多通信子网数据链路层 - 切割报文,让他在链路上 一段段 传输物理层 - 数据单位是比特,让比特流运输无视设备差异。...

2022-08-30 14:16:44 88

原创 轻松应对各种线程池面试。全程很干,建议多喝烫水

一般面试官考察你线程池相关知识前,大概率会先问这个问题,如果你说没用过,不了解,ok,那就没以下问题啥事了,估计你的面试结果肯定也凶多吉少了。作为 JUC 包下的门面担当,线程池是名副其实的 JUC 一哥,不了解线程池,那说明你对 JUC 包其他工具也了解的不咋样吧,对 JUC 没深入研究过,那就是没掌握到 Java 的精髓,给面试官这样一个印象,那结果可想而知了。所以说,这一分一定要吃下,那我们应该怎么回答好这问题呢?...

2022-08-29 22:01:22 285 1

原创 架构师必备技能

等,进行处理。binlog是实时增量工具,ETL工具做辅助。通常一个数据同步功能,需要多个组件的参与,他们共同组成一个整体。五、通讯√ 推荐:http+json,方便调试。高性能要求可选二进制协议Java 中,netty已经成为当之无愧的网络开发框架,包括其上的socketio(不要再和我提mina了)。对于http协议,有common-httpclient,以及更加轻量级的工具okhttp来支持。对于一个rpc来说,要约定一个通讯方式和序列化方式。...

2022-08-29 21:50:52 277 1

原创 金九银十必掌握知识点:JVM夺命连环10问

在 Java1.7 之前,包含方法区的概念,常量池就存在于方法区(永久代)中,而方法区本身是一个逻辑上的概念,在1.7之后则是把常量池移到了堆内,1.8之后移出了永久代的概念(方法区的概念仍然保留),实现方式则是现在的元数据。这样,在使用的时候只使用 Eden 区和 S0、S1 中的一个,每次都把存活的对象拷贝另外一个未使用的 Survivor 区,同时清空 Eden 和使用的 Survivor,这样下来内存的浪费就只有10%了。统一标记出需要回收的对象,标记完成之后统一回收所有被标记的对象。...

2022-08-29 20:37:49 65

原创 大厂招聘IO常问面试题

Tomcat的Accept Count、Max Connect ions、Max Threads是什么?什么是EventLoop?BIO, NIO, AIO有什么区别,分别是什么原理?什么是Reactor模型?什么是Proactor模型?Tomcat线程模型如何实现,为何不用Netty?Netty的Channel如何处理的?Java的异步编程、异步网络编程如何实现的?Netty线程模型在使用中有什么需要注意的?Net ty如何实现Java层面的零拷贝的?Netty线程模型如何实现?NIO和IO适用场景。..

2022-08-29 16:07:52 129

原创 面试官:说下 Redis 是如何保证在宕机后数据不丢失的

那有同学就会说,我们可以把时间间隔设置的短一点,适当的缩短是可以的,但是如果间隔时间段设置短一点频繁的生成快照对系统还是会有影响的,特别是在数据量大的情况下,高性能的环境下是不允许这种情况出现的。从上面可以看出,我们配置的规则生效了,也成功的生成了 RDB 文件, 后续在服务器出现异常的情况,只要重新启动就会读取对应的 RDB 文件进行数据备份。文件里面的内容就是执行的命令,只不过是以一种固定的格式存储的,我们在备份的时候如果不需要哪些数据,可以手动删掉对应的命令就可以重新备份数据。...

2022-08-28 21:55:42 682 1

原创 求求你面试官,你能不能别问我 HashMap 了?

什么时候会触发扩容呢?扩容也不是简简单单的将原来的容量扩大就完事儿了,扩容时,首先创建一个新的 Entry 空数组,长度是原数组的 2 倍,扩容完毕之后还会再进行 ReHash ,也就是将原 Entry 数组里面的数据,重新 hash 到新数组里面去。频繁的从链表转到红黑树,再从红黑树转到链表,开销会很大,特别是频繁的从链表转到红黑树时,需要旋转。扩容时导致的死循环,这个问题只会在 1.7 版本及以前出现,因为在 1.7 版本及以前,扩容时的实现,采用的是头插法,这样就会导致循环链表的问题。...

2022-08-28 21:47:36 304

原创 Java程序员五面蚂蚁拿下offer定级P7,大厂面试不过如此?

在面试之前一定要对项目很熟悉!项目的优化点、技术栈、架构图等等都要搞清楚。阿里面试总体感觉比较重视基础,所以 Java 那些基本功一定要扎实。然后,网络部分也要格外重视。阿里面试官对于一些问题问的非常深入。......

2022-08-28 21:33:47 176

原创 SSM 70 道 面试题及学习笔记值得收藏!

很多小伙伴可能会很困惑,为什么 BAT 的面试官总是喜欢问源码?其实我们常用的 Spring、MyBaits 这样的框架可以说是 JAVA 里面最经典的教科书,从中你能学习到很多写代码的经验技巧,而去悟开源框架中蕴含的优雅架构设计之道这才是最重要的。......

2022-08-28 21:23:39 69

原创 人手一份 Spring 生态全家桶笔记,马士兵好评力荐

这份 PDF 的前三章节主要是为了给大家打基础以及一些必备的前置知识,第四章节到第八章节是基础部分的实战内容,从第九到第十四章节的内容是 SpringBoot 的高级用法,可以帮你完成更加复杂的功能。但是 IOC 更核心的意义并不在于此,其最大的好处在于让我们的代码脱离了对具体实现的依赖。在通常情况下,我得到的回答是:有了 IOC 就不需要手动创建对象了,只需要通过@Autowired 注解即可。这篇文章给大家写得比较简单,里面的详细内容很多,有需要的飘简介获取。第一,消息队列天生具备异步处理的功能。...

2022-08-28 15:05:12 71

原创 面试被问到 HashMap 的相关内容

什么时候会触发扩容呢?扩容也不是简简单单的将原来的容量扩大就完事儿了,扩容时,首先创建一个新的 Entry 空数组,长度是原数组的 2 倍,扩容完毕之后还会再进行 ReHash ,也就是将原 Entry 数组里面的数据,重新 hash 到新数组里面去。频繁的从链表转到红黑树,再从红黑树转到链表,开销会很大,特别是频繁的从链表转到红黑树时,需要旋转。扩容时导致的死循环,这个问题只会在 1.7 版本及以前出现,因为在 1.7 版本及以前,扩容时的实现,采用的是头插法,这样就会导致循环链表的问题。...

2022-08-26 20:30:41 323

原创 一文详解,分布式事务 Seata

原子性:事务中的所有操作,要么全部成功,要么全部失败一致性:要保证数据库内部完整性约束、声明性约束隔离性:对同一资源操作的事务不能同时发生持久性:对数据库做的一切修改将永久保存,不管是否出现故障。...

2022-08-26 20:17:25 102

原创 人手一份 Spring 生态全家桶笔记,马士兵好评力荐

本篇将会带领大家从基础一直学习到 SpringBoot 源码层面!其中涵盖了 Spring MVC、MyBatis(Plus)、Spring Data JPA、Spring Security、Quartz 等一系列主流框架,同时还整合了一线互联网大厂常用技术与中间件等等内容!同时这篇 PDF 还是十分注重实战学习、学会定位和解决问题、能够举一反三的思考。......

2022-08-26 20:11:38 144

原创 二面美团,有惊无险已拿offer,不得不说“太难了”

Java面试核心知识点一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!有需要获取的朋友:关注转发后私信我【666】即可免费获取Java面试核心知识点已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了,各位读者朋友们快来找我免费获取吧。...

2022-08-26 20:04:27 140

原创 面试官:说说 Java CAS 原理?

CAS(Compare-And-Swap)是比较并交换的意思,它是一条 CPU 并发原语,用于判断内存中某个值是否为预期值,如果是则更改为新的值,这个过程是原子的。下面用一个小示例解释一下。CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,计算后要修改后的新值B。(1)初始状态:在内存地址V中存储着变量值为 1。(2)线程1想要把内存地址为 V 的变量值增加1。这个时候对线程1来说,旧的预期值A=1,要修改的新值B=2。...

2022-08-26 19:35:53 96

原创 高可用的 11 个关键技巧

大型互联网架构设计,讲究一个四件套组合拳玩法,高并发、高性能、高可用、高扩展。如果能掌握这四个方面,应付大厂面试以及日常工作中的架构方案设计基本不是什么难题。今天就来学习下高可用都有哪些设计技巧?...

2022-08-25 19:49:06 144

原创 阿里钉钉、ICBU、CBU、蚂蚁、国际化中台Java后台面经

要求:1). 每个红包金额随机 2). 每个红包的金额数不小于1 3). 每个红包的金额数不超过总金额的30% 例如红包总金额100,人数10,输出【19 20 15 1 25 14 2 2 1 1】阿里提前批面了很多部门,除了淘系一面其他都过了,最终点了国际化中台的内推,在焦急等hr面中,分享面经,希望能帮到大家,都能拿到满意的offer~Redis特性介绍(基于内存、过期键删除策略、持久化、数据结构多样、事务、主从架构)树(二叉树、完全二叉树、满二叉树、红黑树、b树、b+树)、链表、栈、队列。...

2022-08-25 19:22:20 477

原创 面试题:我们为什么要分库分表?

如果出现数据库问题不要着急分库分表,先看一下使用常规手段是否能够解决。分库分表会给系统带来巨大的复杂性,不是万不得已建议不要提前使用。作为系统架构师可以让系统灵活性和可扩展性强,但是不要过度设计和超前设计。在这一点上,架构师一定要有前瞻性,提前做好预判。大家学会了吗?

2022-08-25 16:13:47 146

原创 滴滴后端三面:深度拷问

朋友刚刚试水滴滴面试,面试官还是可以的,问的问题总体来说还是比较OK 的,技术面的面试官感觉有点东西的,多的就不说了,直接附上面试题,希望大家有机会可以去试试。

2022-08-25 15:53:56 304

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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