
大厂我来了
文章平均质量分 68
yes的练级攻略
微信搜一搜【yes的练级攻略】专注分享硬核后端技术,关注后回复【123】有一份20w字的高质量全面算法笔记等你领取。
展开
-
扯什么 try-catch 性能问题?
行啊yes,BB是一套一套的,走请你喝燕麦拿铁!” 老陈一把拉起我,我直接一个挣脱,“少来,我刚喝过咖啡,你那个倒立洗头,赶紧的!”我立马意识到老陈想岔开话题。正所谓听话不能听一半,以前读书时候最怕的就是一知半解,因为完全理解选择题能选对,完全不懂蒙可能蒙对,一知半解必定选到错误的选项!且不说性能,这代码的目的明显是让循环内部单次调用出错不影响循环的运行,你其到外面业务逻辑不就变了吗!“切,肯定 tryfor 性能好,想都不用想,不是的话我倒立洗头!“BB 不如 show code,看到没,老陈,我把。原创 2023-03-18 08:27:19 · 605 阅读 · 0 评论 -
不吹牛,吃下我这篇,Spring面试这关算是过了(近2w字,源码级)
你好,我是yes。这次是 Spring 面试题的总结,有些答案我写的都是源码级别的,吃下这篇,Spring 面试绝对稳了。好了,话不多说,发车!说下你理解的 Spring可以从两个层面来理解 Spring。第一个层面指的是 Spring Framework,是一个开源的应用框架,提供 IOC 和 AOP 降低了应用开发的复杂度。第二个层面指的是 Spring 全家桶,Spring 发展到今天可以说几乎是统领了 Java,有关 Java 应用开发所需的全部功能, Spring 都提供了解决方案,包原创 2022-04-02 09:40:38 · 4859 阅读 · 7 评论 -
关于Spring循环依赖这个高频面试题,网上有好多错误观点
你好,我是yes。今天我们来盘 Spring 的经典面试题循环依赖。这的面试题很经典,网上相应的文章很多,但是我还是想写一下,因为有些文章的观点在我看来是错的。比如有构造器就无法解决循环依赖?一定要三级缓存才能解决循环依赖?到底为什么要三级缓存?好了,话不多少,我们来盘一盘。什么是循环依赖很简单,看下方的代码就知晓了@Servicepublic class A { @Autowired private B b;}@Servicepublic class B {原创 2022-03-12 10:50:42 · 501 阅读 · 0 评论 -
最近我面了12个人,发现这个基础题都答得不好
你好,我是 yes。一般面试我都会问一两道很基础的题目,来考察候选人的“地基”是否扎实,有些是操作系统层面的,有些是 Java 语言方面的,还有些…最近我都拿一道 Java 语言基础题来考察候选人:能否实现一个方法,调换两个 String 对象的实际值?代码代码代码代码String yesA = "a";String yesB = "b";//让yesA=b,yesB=a?能否实现这个 swap 方法swap(yesA, yesB); 别想看这道题,其实考察了好几个点:明确 n原创 2022-02-26 15:54:09 · 29352 阅读 · 68 评论 -
搞懂 select/poll/epoll,就这篇了
首先,我们知道 select/poll/epoll 是用来实现多路复用的,即一个线程利用它们即可 hold 住多个 socket。按照这个思路,线程不可别任何一个被管理的 Socket 阻塞,且任一个 Socket 来数据之后都得唤醒线程。想想看这应该如何实现呢?我们拿 select 的逻辑来分析下按照我们的理解,select 管理多个 Socket 的模型如下图所示:这里要注意一下内核态和用户态的交互,用户程序访问不了内核空间。所以,我们调用 select 会把所有要管理的 socket原创 2022-02-23 20:01:40 · 1858 阅读 · 0 评论 -
之前被问的 ConcurrentHashMap 面试题,我汇总了一下
上篇已经讲了关于 HashMap 的相关面试点,这篇就来盘盘 ConcurrentHashMap。我们都知道 HashMap 是非线程安全的,然后还有个 HashTable ,这玩意虽说是线程安全,但所有方法用的是同一把锁,并发度太低,性能不好。所以,如要在并发场景下使用 Map ,那就推荐用 ConcurrentHashMap。而谈到 ConcurrentHashMap,经常会被问到 JDK1.8 相对于 1.7 版本做哪些优化,所以我们先来看下 1.7 的是实现。ConcurrentHashMa原创 2022-02-16 14:12:20 · 1527 阅读 · 1 评论 -
Hibernate、JPA、Spring Data JPA 之间的关系
大家好,我是yes。国庆假期要没啦,明天最后一天了,要开始收收心啦~今天讲讲一个初学者(可能包括一些老手)都没去搞懂的几个概念:Hibernate、JPA、Spring Data JPA 之间的关联。嘿嘿,前段时间有位同学说去大厂面试被问了这个。好了,话不多说,发车!HibernateHibernate 就不多介绍了, 一个 ORM 框架,它提供了 HQL 来屏蔽底层不同数据库厂商 SQL 之间的差异,大大提升了程序的可移植性。也提供了一套 Criteria API 来进行数据操作,使用这套原创 2021-10-09 12:28:45 · 335 阅读 · 0 评论 -
剑指 Offer 55 - I. 二叉树的深度
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3 。这个题目会的人写出来的时间估计是几秒钟。其实很直观,想要计算出树的深度,直接的想法就是 DFS,而 DFS 的实现就是利用递归就能完美的实现。递归跳出的条件很简单root == null,这个没什么疑义。如果不等于 null,那么当前的节点就算一个深度了,然后加上两个子树里面中原创 2021-09-28 14:45:24 · 193 阅读 · 0 评论 -
两分钟,谈谈 MySQL 索引的一些错误认识
你好,我是yes。今天就来谈谈有关 MySQL InnoDB索引的一些比较容易被误解的点。话不多说,直接发车!不一定会用上你认为会用上的索引为了故事可以顺利的发展,先来一张表, DDL 如下:现在要执行这个语句SELECT * FROM yes.t1 where f3 = 11;你觉得用的是哪个索引?很多同学可能会觉得虽然有 idx_f2_f3 这个联合索引,但是查询条件是 f3,没有 f2,不符合最左匹配原则,所以很显然只能进行全表扫描。我们来 explain 一下,看看:可以看到结原创 2021-09-28 14:44:31 · 300 阅读 · 0 评论 -
剑指 Offer 63. 股票的最大利润
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。来源:力扣(LeetCode)链接:htt原创 2021-09-27 17:53:43 · 99 阅读 · 0 评论 -
剑指 Offer 28. 对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1 / 2 2 / \ / 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1 / 2 2 \ &n原创 2021-09-26 14:04:26 · 76 阅读 · 0 评论 -
剑指 Offer 27. 二叉树的镜像
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode mirrorTree(TreeNode root) { if (root原创 2021-09-24 10:54:04 · 84 阅读 · 0 评论 -
ThreadLocal的短板,我 TransmittableThreadLocal 来补上!
你好,我是yes。之前我已经分析了ThreadLocal、InheritableThreadLocal、FastThreadLocal。然后有小伙伴让我再说说TransmittableThreadLocal(下边统一简称:TTL)。那今天就来介绍介绍 TTL,补充下 ThreadLocal 家族的短板吧。这篇过后,ThreadLocal 就真的一网打尽了!不过还是建议先看看前置篇,不然理解起来可能有点困难。缘由任何一个组件的出现必有其缘由,知其缘由背景才能更深刻地理解它。我们知道 Threa原创 2021-09-23 12:10:28 · 302 阅读 · 0 评论 -
剑指 Offer 26. 树的子结构
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3/ \4 5/ 1 2给定的树 B:4/1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,1]输出:true来源:力扣(LeetCode)链原创 2021-09-23 12:07:53 · 86 阅读 · 0 评论 -
剑指 Offer 32 - III. 从上到下打印二叉树 III
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[20,9],[15,7]]提示:节点总数 <= 1000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-shang-dao原创 2021-09-22 14:08:14 · 97 阅读 · 0 评论 -
我滴乖乖,MySQL联合索引不一定要求最左匹配?跳跃索引!
你好,我是yes。关于 MySQL 索引相关的知识点,我已经写的差不多了,今天再来补充一点关于联合索引的。之前我在群里就看到有同学说最左匹配已经过时了,现在 MySQL 8 都不需要最左匹配就能用上联合索引了。那真的是这样吗?以下实验基于 MySQL8.0.26 版本为了故事顺利的发展,我们先建个表。CREATE TABLE `t1` ( `f1` int NOT NULL AUTO_INCREMENT, `f2` int NOT NULL, `f3` int NOT NULL,原创 2021-09-22 14:07:13 · 1364 阅读 · 0 评论 -
剑指 Offer 32 - II. 从上到下打印二叉树 II
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof著作权归领扣网络所有。商业转载请联系官方原创 2021-09-17 10:04:56 · 85 阅读 · 0 评论 -
剑指 Offer 32 - I. 从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。原创 2021-09-16 10:56:19 · 80 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi原创 2021-09-15 09:58:28 · 73 阅读 · 0 评论 -
阿里面试官问我: LRU 和 Innodb Buffer Pool 有什么关系?
你好,我是yes。这个问题来自我的 VIP 读者,他在简历里写了熟悉 MySQL ,然后被问了 LRU 相关实现之后紧接着被问与 Innodb Buffer Pool 的联系,然后读者就蒙了。所以 LRU 和 Innodb Buffer Pool 有什么联系吗?确实有。其实我之前的文章写到过这个,就在今年的三月份,不过是写 Kafka 的冷热分区时顺带提了一下 Innodb Buffer Pool。今天咱们再来仔细盘一盘它们两者之间的联系,还是挺有启发的。Buffer PoolBuffer原创 2021-09-14 19:49:27 · 146 阅读 · 0 评论 -
剑指 Offer 11二维数组中的查找
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给定 tar原创 2021-09-14 11:15:51 · 80 阅读 · 0 评论 -
关于 MySQL insert 和自增 ID 的奇怪事件
你好,我是yes。上周五,我的微信星球用户向我提了个问题,这个问题既熟悉又生僻,还是挺有意思的,所以我在这里分享一下。首先有建立一张表CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) DEFAULT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;表没什么花头,主键是 ID,然后是自增的。此时执行一条插入语句原创 2021-09-13 11:27:49 · 2394 阅读 · 0 评论 -
剑指 Offer 53 - II. 0~n-1中缺失的数字
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。原创 2021-09-10 10:12:19 · 85 阅读 · 0 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I
统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0提示:0 <= nums.length <= 105-109 <= nums[i] <= 109nums 是一个非递减数组-109 <= target <= 109来源:力扣(LeetCode)链接:https://leetc原创 2021-09-09 09:52:34 · 77 阅读 · 0 评论 -
看我简单题,也能在面试官前面秀!
你好,我是yes。事情是这样的,今天日常打开 LeetCode 刷题,然后刷到了这题我一看,我去这题目也太简单的了吧,看不起谁呢?想都没想,直接一个:那理所当然,肯定是通过的,但是击败了 100%?我顿时就来了兴趣了,JDK的库竟然能击败 100%?这个还是比较少见的。为什么我会诧异呢,一共有两个原因:首先JDK的库需要考虑很多情况,属于一种普适性的实现,避免不了会有很多判断。然后 LeetCode 上有些人,为了击败 100% 会做一些奇怪的操作。比如有人会把测试用例的答案列成一个表原创 2021-09-08 16:21:31 · 142 阅读 · 0 评论 -
剑指 Offer 03:数组中重复的数字
找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3class Solution {public int findRepeatNumber(int[] nums) {int len = nums.length;Set numsSet = new HashSet()原创 2021-09-07 21:40:07 · 86 阅读 · 0 评论 -
剑指 Offer 24. 反转链表
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL题目还是很好理解的,而且实现其实也很简单,这题目也经常被问题。反转链表的题目,如果你搞不清楚,或者觉得有点混乱,我建议拿个纸来画一画应该就很清晰了。首先很容易想到的解法是迭代法。定义两个节点,一个指向当前节点,一个指向前面的节点。在最开始的时候,当前节.原创 2021-09-07 09:22:32 · 83 阅读 · 0 评论 -
原来这就是比 ThreadLocal 更快的玩意
你好,我是yes。继上一篇之后,咱们再来盘一盘 FastThreadLocal ,这个算是 ThreadLocal 的进阶版,是 Netty 针对 ThreadLocal 自己造的轮子,所以对 ThreadLocal 没有完全理解的话,建议先看上一篇文章,打个基础。那了解 FastThreadLocal 之后呢,对平日的一些优化可能可以提供一些思路,或者面试就能装个x。面试官:ThreadLocal 竟然有xxx这个缺点,那怎么优化啊?你就把 FastThreadLocal 的实现 BB 一遍,这不原创 2021-09-07 09:19:30 · 273 阅读 · 0 评论 -
我把面试 ThreadLocal 能问的,都写了
你好,我是yes。今天我们再来盘一盘 ThreadLocal ,这篇力求对 ThreadLocal 一网打尽,彻底弄懂 ThreadLocal 的机制。有了这篇基础之后,下篇再来盘一盘 ThreadLocal 的进阶版,等我哈。话不多说,本文要解决的问题如下:为什么需要 ThreadLocal应该如何设计 ThreadLocal从源码看ThreadLocal 的原理ThreadLocal 内存泄露之为什么要用弱引用ThreadLocal 的最佳实践InheritableThreadLoc原创 2021-09-06 15:26:21 · 950 阅读 · 2 评论 -
剑指 Offer 06. 从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000class Solution { public int[] reversePrint(ListNode head) { Deque<ListNode> stack = new ArrayDeque(); while (head != null) {原创 2021-09-02 22:10:01 · 87 阅读 · 0 评论 -
LeetCode 热题 HOT 100:最长有效括号
给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”输出:0提示:0 <= s.length <= 3 * 104s[i] 为 ‘(’ 或 ‘)’class Solution { public int longestValidP原创 2021-09-02 21:48:10 · 193 阅读 · 0 评论 -
LeetCode 热题 HOT 100:打乱数组
题目:给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。实现 Solution class:Solution(int[] nums) 使用整数数组 nums 初始化对象int[] reset() 重设数组到它的初始状态并返回int[] shuffle() 返回数组随机打乱后的结果示例:输入[“Solution”, “shuffle”, “reset”, “shuffle”][[[1, 2, 3]], [], [], []]输出[null, [3, 1, 2], [原创 2021-09-02 21:46:20 · 191 阅读 · 0 评论 -
剑指 Offer 30. 包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回原创 2021-09-02 21:44:46 · 85 阅读 · 0 评论 -
七万字,151张图,通宵整理消息队列核心知识点总结!这次彻底掌握MQ!
这次一定原创 2021-08-16 10:14:37 · 3142 阅读 · 30 评论 -
2万字高频MySQL面试题总结(含答案),金九银十成为offer收割机!【建议收藏】
大家好,我是yes。这篇是MySQL 面试题汇总,所有的答案都是我原创的,来来回回差不多整理个一个月左右,如果有什么问题,还请留言区指正!话不多说,请接招!你们公司数据库有备份的吧?我:有的,因为单点故障的情况不可避免,所以我们公司有主从。面试官:那你知道主备、主从、主主有什么区别?主备就是:主机和备机。备机是不干活的,也就是不对外提供服务,只是默默地在同步主机的数据,然后等着某一天主机挂了之后,它取而代之!至于切换的话主要有两种方式:人工切换,得知主机挂了之后手动把备机切成主机,原创 2021-08-04 08:28:31 · 1708 阅读 · 39 评论 -
程序员是如何卷死其它程序员的?
我这,应该不算卷吧?公司规定10点上班,我7点就到工位,不要问我为什么,我只是热爱工作,喜欢待在公司,这样我就能在每位同事来上班的时候,和他说一句早上好,当然其中也有我的上司。每次开会的时候,别人都是拿个小本本发言,而我是一份20页的 PPT,不敢写太长,怕别人说我装,PPT里面会有各种高级术语,赋能闭环抓手不在话下,而且我会配以流程图、时序图、脑图等各种图表来说明事情,因为都说一图胜千言嘛。什么?你说是真的不是公司规定这样做的吗?当然不是,都是我自愿的,我没别的意思,只是觉得这是应该的。我还特别原创 2021-07-31 10:12:11 · 683 阅读 · 12 评论 -
美团五面:Java历史上有三次破坏双亲委派模型,是哪三次?
你好,我是yes。这个面试题来自一位群友的面试题分享,就是我组建的那个面试交流群。其实不止三次,有四次。今天我们就来盘一盘这个面试题,不过在说双亲委派模型之前,我们得先了解下类加载。类加载我们平常写的代码是保存在一个 .java文件里面,经过编译会生成.class文件,这个文件存储的就是字节码,如果要用上我们的代码,那就必须把它加载到 JVM 中。当然,加载到 JVM 生成 class 对象的来源不一定得是.class文件,也可以来自网络等等,反正只要是符合 JVM 规范的都行。而类加载的原创 2021-07-30 10:09:37 · 1584 阅读 · 20 评论 -
去年,蚂蚁一面的一道笔试题,中等难度
试试看?原创 2021-03-12 19:42:15 · 1071 阅读 · 1 评论 -
我叫小M,立志建立MySQL帝国。
我用 007 这三个数字就轻易打败了一堆吹嘘 996 的应聘者。原创 2021-03-31 10:14:35 · 174 阅读 · 1 评论 -
图解+代码|常见限流算法以及限流在单机分布式场景下的思考
大家好,我是 yes。今天来说说限流的相关内容,包括常见的限流算法、单机限流场景、分布式限流场景以及一些常见限流组件。当然在介绍限流算法和具体场景之前我们先得明确什么是限流,为什么要限流?。任何技术都要搞清它的来源,技术的产生来自痛点,明确痛点我们才能抓住关键对症下药。限流是什么?首先来解释下什么是限流?在日常生活中限流很常见,例如去有些景区玩,每天售卖的门票数是有限的,例如 2000 张,即每天最多只有 2000 个人能进去游玩。题外话:我之前看到个新闻,最不想卖门票的景区“卢旺达火山公园原创 2020-07-12 15:46:15 · 603 阅读 · 1 评论