面试真题·进阶教程·职场干货·思维导图免费分享
上月公司来了一位大佬,入职不到一周就把公司现有项目的性能优化了一遍,直接给公司节省了一半的成本。 一问情况,才知道这位仁兄也是一路被虐过来的。去年年底被裁,本以为自己技术还行,看了一段时间面经,复习了基础知识,就开始投大厂简历。阿里最先给他面试机会,结果没能扛过三面,然后是各种大大小小的公司,在实际面试中被碾压得翻不了身。整整一个半月,一个offer都没拿到,最后针对性的恶补,才入职了我司。
最近我在整理代码仓库的时候突然发现了被尘封了接近两年之久的Sentinel源码库 两年前我出于好奇心扒了一下Sentinel的源码,但是由于Sentinel本身源码并不复杂,在简单扒了扒之后几乎就再没扒过了 那么既然现在又让我看到了,所以我准备再来好好地扒一扒,然后顺带写篇文章来总结一下。
最近我在整理代码仓库的时候突然发现了被尘封了接近两年之久的Sentinel源码库 两年前我出于好奇心扒了一下Sentinel的源码,但是由于Sentinel本身源码并不复杂,在简单扒了扒之后几乎就再没扒过了 那么既然现在又让我看到了,所以我准备再来好好地扒一扒,然后顺带写篇文章来总结一下。
“铜三铁四”接近尾声,身边被迫“毕业”或者主动在这个时间点跳槽的大佬基本该找到工作的都找到工作了,找不到的也大多数都已经躺平了(手动狗头),只剩一群“45度人”(卷不动,躺不平的人)还不停在我后台私信希望我能写一些关于面试的知识,出一些相对来说有一点技术深度的面试知识点,或者整理一些Java面试高频的八股文。所以,这篇文章来了~
最近一组业务redis数据不断增长需要扩容内存,而扩容内存则需要重启云主机,在按计划扩容升级执行主从切换时意外发生了数据丢失与master进入只读状态的故障,这里记录分享一下。
铜三铁四已经结束了,但还是有很多Java程序员没有找到工作或者成功跳槽,跳槽成功的也只是从一个坑中,跳入另一个坑中……
RabbitMQ 的文章之前写过,但是当时给的示例是 Demo 版的,这篇文章主要是结合之前写的理论知识,将 RabbitMQ 集成到技术派项目中。
最近后台收到很多粉丝私信,说的是程序员究竟要不要去读源码?当下行情,面试什么样的薪资/岗位才会被问到源码? 对此,我的回答是:一定要去读,并且要提到日程上来!
上次我把 RabbitMQ 集成到项目中,但是每次使用 RabbitMQ 时都去 New 一个连接,导致并发起不来,所以这次我们就给 RabbitMQ 加一个连接池。 为了偷个懒,我直接用 ChatGPT 教我加。
前两天在知乎上看到一个问答,说的是: 一个Java程序员具备什么样的素质和能力才可以称得上高级工程师? 这个问题也引发了我的一些思考,可能很多人会说,“作为高级工程师,基础得过硬、得熟练掌握一门编程语言、至少看过一个优秀开源项目的源代码、有过高并发/性能优化的工作经验、沟通能力强等等”。 上面这些都很对,这些知识点也都是面试中的考点。后台也不止一位粉丝向我反馈过面试的时候经常会被面试官问到有无高并发、性能调优方面的经验。
我们知道Spring Boot项目,是可以通过java -jar 包名 启动的。 那为什么Spring Boot项目可以通过上述命令启动,而其它普通的项目却不可以呢? 原因在于我们在通过以下命令打包时
现在就这光景,不比以前,会个CRUD就有人要,即使大部分公司依然只需要做CRUD的事情......现在去面试,只会CRUD还要被吐槽:
浏览器是再熟悉不过的东西了,几乎每个人用过,比如 Chrome、FireFox、Safari,尤其是我们程序员,可谓开发最强辅助,摸鱼最好的伴侣。 浏览器能干的事儿,无头浏览器都能干,而且很多时候比标准浏览器还要更好 用,而且能实现一些很好玩儿的功能,我们能借助无头浏览器比肩标准浏览器强大的功能,而且又能灵活的用程序控制的特性,做出一些很有意思的产品功能来,稍后我们细说。
安全管理是Java应用开发中无法避免的问题,随着Spring Boot和微服务的流行,Spring Security受到越来越多Java开发者的重视,究其原因,还是沾了微服务的光。作为Spring家族中的一员,其在和Spring家族中的其他产品如SpringBoot、Spring Cloud等进行整合时,是拥有众多同类型框架无可比拟的优势的。
最近几个朋友找我聊天,给我讲述了面试过程中遇到的一些不太理解的事情。作为一个技术面试官,今天来分享 10 个面试相关的套路。
提到Redis,想必各位后端大佬们关于Redis的方方面面很多大多都以知晓。不过LZ想问的是是否有人去真正了解过Redis的源码?当然如果你工作上对Redis仅仅是简单的应用,那肯定是不用刻意去啃源码这个东西的。但是如果你想做到真正精通Redis,想要涨点薪的话,那源码这一块一定不能落下!
前天二面鹅厂,面试官问出了“nginx你了解吗?”这样宽泛直白的句式,我一时抓不到重点,一时语噻。 下班想了一下,平时潜移默化用到不少nginx的能力,但在面试的时候没有吹成对应的概念。
金三银四跳槽季,相信很多铁汁这个时候或多或少都有在准备面试的。对于刚入行的或者应届生一般面试前都会刷题或者看面经,这样心里才会有底。但也有人说面试前刷题是很愚蠢的行为,浪费时间效果还不大。但LZ认为,存在即真理!也许在有些人面前,刷题看面经真的没什么用,但谁又不是从刷题刷面经过来的呢,面试前系统的刷题梳理一下知识点还是对面试很有帮助的!
我们知道redis是一个非常常用的内存型数据库,数据从内存中读取是它非常高效的原因之一,那么但是如果有一天, 「 redis分配的内存满了怎么办 」 ?遇到这个面试题不要慌,这种问题我们分为两角度回答就可以:
现在在很多设计、开发、测试人员的眼中会认为SQL优化只是DBA 的事情。他们不需要去关心。反映到具体工作中,他们缺乏相应的优化意识,只注重功能的实现而忽略了相应的执行成本。最终的结果往往就是代码质量不高,软件上线后问题多。
本章将对SpringBoot配置文件中的数据加密做自定义开发. 在SpringBoot开发过程中配置文件是明文存放在application.yml或者application.properties文件中,这种配置方式会带来一定的安全隐患,本章将对这个问题提出一个简单的解决方案。
大家都知道金三银四是程序员跳槽的黄金时期,很多程序员都想着能抓住这一机会,挺进大厂!我曾经整理过一份详细的大厂岗位需求表,很多20K以上的Java岗位,基本都要求具备高并发分布式的相关经验。老练的面试官知道,对于一个 Java 程序员而言,如果对并发编程有全面而深入的了解,那说明技术功底足够扎实。所以,并发编程也是大厂面试的必考项。并发编程,也直接成为了资深开发和小白开发本质的分水岭。
本文是对之前开发中遇到的问题的一个总结,文章其实早就写好,但是觉得自己写得不够深入,就让文章一直躺在草稿箱里。昨天突然想起来了,就将文章重新修改了一下,还是发出来吧!
说到面试跳槽,大家从当初入行开始就一直摆脱不开它(咱们就是通过不断跳槽才能更快地提升自己)。在我们的技术生涯中会有很多大大小小的面试,对我们程序员来说每一次面试都是一次提升的机会,不管是简历修改,还是面试表达技巧,都是我们每个程序员都需要具备的软实力。
Spring 发布了 Spring Native 的 beta 版本,该功能已经在 start.spring.io 上可用了。 Spring Native 是什么 Spring Native 可以通过 GraalVM 将 Spring 应用程序编译成原生镜像,提供了一种新的方式来部署 Spring 应用。Spring Native 支持 Java 和 Kotlin。 这个项目的目标是寻找 Spring JVM 的替代方案,提供一个能将应用程序打包,并运行在轻量级容器的方案。期望能够在 Spring Native 中支持所有的 Spring 应用程序(几乎不用修改代码)。
金三银四跳槽黄金季,大部分程序员都想着在这两个月跳到一个更好的平台拿到自己理想的薪资。现在金三银四已经过去一半了,不知道大家都拿到Offer没有,如果没有的话,希望大家不要怪LZ凡尔赛了(手动狗头)。LZ截止今天为止已经收到了第9家公司的Offer,这张的Offer的话给到28k*14薪。由于个人原因,LZ没有去这家公司,而是选择了其他公司(其中缘由不太方便向大家透露了)。
微服务可谓是这几年比较热门的技术,从2017开始逐渐爆火,逐渐大大小小的公司纷纷将微服务技术引入并在实际业务中落地。 微服务的概念最早是在2014年由Martin Fowler和James Lewis共同提出:微服务是由单一应用程序构成的小服务,拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用HTTP API通讯。同时,服务会使用最小规模的集中管理 (例如Docker)技术,服务可以用不同的编程语言与数据库等。
大家都知道Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。这样一看:马爸爸可以说是左手双十一,右手阿里开源组件,不仅占据了程序员的购物车,还要攻占大家的开发工具(手动狗头)。
我们都知道传统的集中式系统已无法满足当今的互联网三高需求,所以现在的系统架构都是向着分布式系统不断演进。同时,越来越多的企业选择通过云的方式发布和部署应用,这也大大促进了分布式系统的发展。未来将是分布式系统“爆发”的时代。
在传统系统中,如果能够提供日志输出,基本上已经能够满足需求的。但一旦将系统拆分成两套及以上的系统,再加上负载均衡等,调用链路就变得复杂起来。 特别是进一步向微服务方向演化,如果没有日志的合理规划、链路追踪,那么排查日志将变得异常困难。
关于普通程序员的进阶之路,网上的学习路线与理论说辞一抓一大把。在小编看来优秀工程师的成长之路就是一条不断打怪升级之路,Java入行容易精通难,需要能力也需要运气。 相信很多的Java程序员在自己的进阶之路上都有遇到以下几个方面的问题却不知道如何解决,也没有一个好的学习路线与规划:
“高可用”是互联网一个永恒的话题,先避开MySQL不谈,为了保证各种服务的高可用有几种常用的解决方案。 服务冗余:把服务部署多份,当某个节点不可用时,切换到其他节点。服务冗余对于无状态的服务是相对容易的。 服务备份:有些服务是无法同时存在多个运行时的,比如说:Nginx的反向代理,一些集群的leader节点。这时可以存在一个备份服务,处于随时待命状态。 自动切换:服务冗余之后,当某个节点不可用时,要做到快速切换。 总结起来就是 冗余+故障转移 。
大家都知道,现在的Java面试是越来越难了!主要原因无非是两个: 随着Java这个行业的兴起,不管是在家待业的、对自己现在工作不满意的、大学选错专业的、缺钱的、想自己学的等等这些人绝大部分都是选择了去学习Java!大量人才涌入,导致岗位竞争越来越大,面试也就越来越难! 另外一个就是这两年的疫情影响,很多公司都宣布倒闭、裁员。加上互联网行业内卷的推动,面试造火箭工作拧螺丝已经是一个很常见的现象了!
1:场景分析 在我们使用SpringBoot+MyBatis的时候,我们一般是先引入依赖,然后配置
金三银四也快要结束了,不知道大家面试的时候有没有被问到过Spring相关问题(循环依赖、事务、生命周期、传播特性、IOC、AOP、设计模式、源码)?反正我这个小学弟前段时间就来私信我说自己面试挂在了Spring这一块。(原谅我不厚道地笑了,如下图所示)
Redis 内部使用一个 RedisObject 对象来表示所有的 key 和 value,RedisObject 中的 type,则是代表一个 value 对象具体是何种数据类型,它包含字符串(String)、链表(List)、哈希结构(Hash)、集合(Set)、有序集合(Sorted set)。
Java面试复盘 金三银四已经快要结束,不知道大家在这个跳槽旺季是否都拿到了自己理想的Offer?是否做好面试的复盘?对于我们做技术的来讲,每次面试之后的复盘工作非常重要,一次好的复盘能让我们认识到自己的短板,明确我们后续努力的方向! 如果你觉得自己复盘得差不多了,不妨来看看下面LZ的灵魂4连击,看自己能答出几道(手动狗头): 如何设计一个分布式环境下全局唯一的发号器? 如何设计一个带有过期时间的LRU缓存? 如何设计一个分布式锁? 如何设计一个分布式环境下的统─配置中心?
有人说世界上有三个伟大的发明:火,轮子,以及 Kafka。 发展到现在,Apache Kafka 无疑是很成功的,Confluent 公司曾表示世界五百强中有三分之一的企业在使用 Kafka。今天便和大家分享一下 Kafka 相关知识点,高性能、持久化、多副本备份、横向扩展...... 万字长文,做好准备,建议先收藏再看 !
Redis想必大家都听说过,不管是面试还是工作上我们都能见到。但是Redis到底能干什么?又不能干什么呢?(如下图)
我是一个 Linux 服务器上的进程,名叫小进。 老是有人说我最多只能创建 65535 个 TCP 连接。 我不信这个邪,今天我要亲自去实践一下。 我走到操作系统老大的跟前,说: "老操,我要建立一个 TCP 连接!" 老操不慌不忙,拿出一个表格递给我, "小进,先填表吧"
Spring框架自从诞生以来就一直备受开发者青睐,它涵盖了Spring、Springboot、SpringCloud等诸多解决方案,一般我们都会统称为Spring全家桶!出于Spring框架在Java开发者心中中的统治地位,所以不管是面试还是工作,Spring都是绕不开的重点也是难点! 关于Spring的描述网上的博客数不胜数,其家族所有成员想必大家也在很多的网站跟博客平台都看过了,今天LZ也就不过多的赘述了,就主要跟大家来聊聊最近大家面试被问的比较多的几个。我去看了一下后台大概统计了一下,粉丝们给我的反馈是出去面试被问的最多的就是Spring源码,SpringBoot跟SpringClou
前言 传统定时器是硬编码。但是有的时候业务上需要不断地调整 问题描述 我们开发了一个定闹钟的功能。这个功能肯定是定时器开发。但是这就存在一个问题这个定时是动态的。那么我们如何实现呢?请接着看
Java面试 谈到Java面试,相信大家第一时间脑子里想到的词肯定是金三银四,金九银十。好像大家的潜意识里做Java开发的都得在这个时候才能出去面试,跳槽成功率才高!但LZ不这么认为,LZ觉得我们做技术的一生中会遇到很多大大小小的面试,金三银四(金九银十)只是机会比平时多一些,但也未必每个人都能在这个时间段找到自己理想的岗位。我们能做的就是时刻准备着,当机会来临的时候能把握住就行。 这不借此机会,本着好东西就是要拿出来分享的原则,LZ就把前段时间从阿里的老哥手上白嫖到的面试参考指南分享出来,希望能对你们有所帮助。
我们都知道,目前大型网站跟企业级应用目前的要求都是达到“互联网三高”,这时传统的集中式系统肯定是无法满足基本的需求的,越来越多的企业的系统架构目前都是向着分布式系统的方向演进。
大致问题是,TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗? 这是个好问题,应该有不少人都会搞混,因为这两个东西看上去太像了,很容易误以为是同一个东西。 事实上,这两个完全是两样不同东西,实现的层面也不同:
Java面试 今年时间属实过得挺快的,眼瞅着就要到8月了!想必有很多小伙伴这会已经在为金九银十面试跳槽做准备了。临近面试肯定是要想办法提升自己的面试能力,这个时候如果还去一昧地提升自己的代码能力对面试是毫无帮助的。大多数人在面试的时候都会遇到以下几种情况(大家可以看看自己中了几个):
本文主要讲述mybatis在springboot中是如何被加载执行的,由于涉及的内容会比较多,所以这次只会对调用关系及关键代码点进行讲解,为了避免文章太长,读起来昏昏欲睡,一些不影响整体流程的细节就不涉及了。
大家都知道Redis的业务范围是非常广的,但是对于刚入行的小伙伴来说可能也就知道个缓存跟分布式锁。因为Redis的很多功能在一些小企业里,根本是用不到的,得等到并发量到了一定的程度,系统扛不住了,才会用到Redis那些高级的功能。下面LZ就带大家来看看,Redis到底能干些啥:
面试官跟他说 HTTPS 中的 TLS 握手过程可以同时进行三次握手,然后读者之前看我的文章是说「先进行 TCP 三次握手,再进行 TLS 四次握手」,他跟面试官说了这个,面试官说他不对,他就感到很困惑。
性能优化 作为一个程序员,性能优化是常有的事情,不管你是刚入行的小白还是已经入坑了很久的小秃头都会经历很多不同层次的性能优化——小到代码审查大到整个系统设计的优化!大势所趋之下,如何让自己的优化方向精准到性能瓶颈的那个点以及尽可能的提高优化的性价比已经慢慢成为每一个程序员都要考虑的问题了~ 下面是目前程序员进行性能优化时需要遵循的一些原则以及注意的一些点,大家可以看看自己在进行优化的时候是否有考虑到这些: