自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 问答 (2)
  • 收藏
  • 关注

原创 互联网大厂Java面试实录:严肃面试官VS搞笑谢飞机

请简述一下Java虚拟机(JVM)的主要组成部分及其作用。:嗯,JVM就是跑Java程序的东西,是不是?:具体点。:好吧,有堆、栈、方法区,还有垃圾回收?(点头):不错,回答得挺全面。:那说说HashMap的工作原理是什么?:HashMap是个键值对集合,存数据用的。:能详细讲讲吗?:呃,它用哈希函数把键转成一个哈希值,对应数组下标,然后链表解决冲突。:嗯,有进步。:最后,ArrayList和LinkedList有什么区别?:一个是数组实现,一个是链表实现,差不多吧。:继续保持!

2025-07-03 10:34:44 294

原创 互联网大厂Java面试实录:严肃面试官VS搞笑水货谢飞机

在互联网大厂Java求职者的面试现场,一位严肃的面试官和搞笑的水货程序员谢飞机展开了激烈的问答。面试官围绕Java核心知识、JUC、JVM、多线程等多项技术展开,既有基础问答,也有复杂问题,透过生动的对话,展现真实面试场景。

2025-07-03 10:33:15 268

原创 互联网大厂Java求职面试实录:严肃面试官与搞笑程序员谢飞机

在互联网大厂的Java岗位面试中,面试官经常会围绕Java核心知识及相关技术进行深入提问。本文通过一个严肃的面试官与风趣的应聘者谢飞机之间的对话,展现真实面试场景,帮助技术新人了解面试流程及重要技术点。

2025-07-03 10:11:32 629

原创 互联网大厂Java求职面试实战场景与深度技术解析——程序员谢飞机的故事

本文模拟一场在互联网大厂进行的Java开发岗位面试。面试官严肃且专业,而候选人谢飞机则性格幽默,对简单问题能给出靠谱回答,复杂问题则显得略显模糊,反映真实面试中的状态,帮助读者借鉴学习。所涉及技术栈涵盖:Java SE 8/11/17,Spring Boot,Spring Cloud微服务架构,Hibernate及MyBatis,Kafka消息队列,Redis缓存,JUnit 5测试,Docker和Kubernetes等。面试背景为内容社区与UGC场景,强调高并发、数据一致性及扩展性。

2025-06-28 19:32:07 801

原创 互联网大厂Java求职面试实战场景与深度技术解析——程序员谢飞机的故事

本文模拟一场在互联网大厂进行的Java开发岗位面试。面试官严肃且专业,而候选人谢飞机则性格幽默,对简单问题能给出靠谱回答,复杂问题则显得略显模糊,反映真实面试中的状态,帮助读者借鉴学习。所涉及技术栈涵盖:Java SE 8/11/17,Spring Boot,Spring Cloud微服务架构,Hibernate及MyBatis,Kafka消息队列,Redis缓存,JUnit 5测试,Docker和Kubernetes等。面试背景为内容社区与UGC场景,强调高并发、数据一致性及扩展性。

2025-06-28 19:31:34 482

原创 互联网大厂Java面试实战揭秘:三轮技术问答深度解析

以下是一篇以互联网大厂Java求职者面试为场景的技术深度文章,通过严肃的面试官和搞笑的水货程序员谢飞机的对话形式,展示三轮循序渐进的技术问答。文章附带代码案例和详细技术解答,适合Java初学者学习与面试准备。

2025-06-28 19:25:23 230

原创 互联网大厂Java面试实战:水货程序员谢飞机的三轮面试揭秘

在互联网大厂的招聘战场,谢飞机,这位自认为“水货程序员”,带着一肚子的代码和一丝紧张,走进了面试现场。面试官是一位严肃但不失耐心的技术专家,擅长从业务场景和技术细节中发掘候选人的真本事。本篇文章我们通过三轮提问,循序渐进地剖析了互联网大厂Java面试的典型问题,涵盖核心语言、框架、数据库、缓存、微服务、消息队列等多方面。每个问题都紧贴现实业务场景,最后附上详细解答,帮助小白快速入门。

2025-06-28 19:24:50 267

原创 互联网大厂Java面试趣谈:谢飞机的搞笑面试之旅

ArrayList是一个可变数组,HashMap是一个键值对存储,前者用来存放列表,后者用来存放映射。:呃,Spring是个大框架,Spring Boot是个小框架,前者功能多,后者更简单。:呃,我主要负责公司内部的一个管理系统开发,使用Java和Spring Boot实现。:当然,线程有几种状态,包括出生、就绪、运行、堵塞、结束。:Redis有RDB和AOF两种持久化方式,一个是快照,一个是日志。:设计模式不少呢,单例、工厂、策略,这几个我都听过。:好的,今天的面试到这里,你回去等通知吧。

2025-06-28 15:08:09 383

原创 大厂Java面试:谢飞机的搞笑应对

面试官:“我们先从基础开始,讲讲Java的内存模型吧?谢飞机:“嗯,Java的内存模型就像家里的冰箱,存放一些变量,冷冻区、冷藏区、还有个蔬菜保鲜盒。面试官:“那具体一点?谢飞机:“哦,具体一点就是,呃,冰箱里有个小人会帮我们拿东西。面试官(笑了一下):“好,那再讲讲JUC的锁机制?谢飞机:“JUC的锁就像宿舍门锁,室友之间互相抢锁,有时候锁坏了就要找宿管修。面试官:“那如果是多线程访问呢?谢飞机:“呃,那就得每个人都有一把钥匙,不然就得敲门。面试官:“嗯,回答得还行。

2025-06-24 19:31:31 196

原创 互联网大厂Java面试:谢飞机的搞笑求职经历

Spring是一个框架,SpringBoot是个启动器,能让Spring飞起来!在某互联网大厂的面试室,面试官正襟危坐,神情严肃,而求职者谢飞机则显得有些紧张。谢飞机,我们先来聊聊Java核心知识,你能说说Java中的JVM是什么吗?谢飞机,今天的面试就到这里,你的表现……呃,设计......设计……(无奈)好吧,最后一个问题,讲讲Docker的基本用途。多线程嘛,就是让程序一边看剧,一边下载,互不影响!线程池就是存放线程的游泳池,想用的时候捞一个出来。单例模式就是一个班里只有一个班长,大家都听他的。

2025-06-24 19:28:09 311

原创 如何在Java面试中脱颖而出:面试官与求职者的幽默对话

Java Virtual Machine是Java程序的运行时环境,提供了内存管理、垃圾回收和平台无关的执行环境。:Spring通过IoC容器管理对象的创建和依赖关系,使得对象间的耦合度降低,便于测试和维护。:JVM就是Java的发动机嘛,Java Virtual Machine,专门跑Java的。:线程池就像是一个线程的集合,像公交车,大家排队上车,车满了就要等下一辆。:Spring就是个大工厂,依赖注入嘛,就是把该给的东西给到该给的地方。:一个持久层框架,简化了JDBC的操作,支持动态SQL和映射。

2025-06-24 17:06:53 258

原创 大厂Java面试喜剧:谢飞机的奇幻之旅

请你简单描述一下Java的内存模型,以及它是如何实现线程安全的?:Java的内存模型就像是一个大仓库,线程安全嘛,就是大家都按顺序来,不抢东西就行。:嗯,虽然简单,但也算说到点子上了。:那你再说说,JUC包中你最常用的一个类,并简单描述一下它的作用。:JUC包里我最常用的是,它就像是一个倒计时器,等计时结束就开始干活。:不错,这个比喻很形象。:说说线程池的工作原理吧。:线程池嘛,就是一个装线程的游泳池,让线程们在里面玩。:哈哈,有趣的理解。

2025-06-23 16:40:15 748

原创 互联网大厂Java求职面试指南:程序员谢飞机的奇葩面试经历

在某个阳光明媚的下午,谢飞机,一个自称“技术大神”的程序员,走进了某互联网大厂的面试房间,迎接他的是一位面色严肃的面试官。

2025-06-22 16:11:33 402

原创 回溯相关-组合问题

普通暴力思路为:k=n时候,定义n层for循环,指针都相邻,取值即可。思路:此问题可以抽象为树,如下图,解释一下为什么取了2之后,只能从3,4中取,因为组合问题,不允许重复取元素,如果还从1,3,4中取,就会出现【1,2】重复。在[1,9]范围内使用4个不同的数字,我们可以得到的最小和是1+2+3+4 = 10,因为10 > 1,没有有效的组合。给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。输出: [[1,2,6], [1,3,5], [2,3,4]]

2024-03-24 16:51:21 447

原创 二叉搜索树相关

思路:有三种情况,1:root.val<key:则代表root.left都小于low,直接返回root.right。双指针,指向nums的开头和末尾,选取nums中间元素:(low+high)/2,作为根节点,不断改变指针的指向,递归构造二叉搜索树。给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。所以结果应当返回修剪好的二叉搜索树的新的根节点。

2024-03-23 15:54:41 342

原创 二叉搜索树插入和删除节点

若root的left和right都不为空,则寻找到root的right的最左下角元素node,将node.lelft与root.left链接,并将root.right替换root。思路一:我的版本比较粗暴,定义了一个dfs函数对搜索树进行遍历,寻找插入位置:当root节点的值小于val,判断root.right是否为空,若为空则插入节点;给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。

2024-03-20 16:41:54 277 1

原创 二叉搜索树-众数和最近公共祖先

思路:对二叉树进行递归,当root为null、p、q这三种情况的时候,进行返回,若没有返回,若root不为null、p、q,则判断root的左右子树left和right的返回值,若left和right都不为空,则代表都有返回值,为p或q,直接返回root即可;百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。结点右子树中所含节点的值 大于等于 当前节点的值。

2024-03-19 16:23:32 342

原创 合并二叉树及二叉搜索树相关

合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。否则开始合并,记录两节点的和val,构造node节点,继续构造node节点的左右子树。思路:二叉搜索树,左节点的值<根节点<右节点的值。给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值。思路:采用中序遍历递归收集二叉搜索树的节点值,循环判断相邻元素的差值,记录最小值。给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

2024-03-18 12:15:43 508

原创 构造二叉树

给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。思路:定义一个函数,可以寻找自定义始末位置的数组中的最大值。思路:后续遍历最后一个值为根节点,利用hashMap存储中序遍历,方便后续找到中序遍历的下标。

2024-03-17 16:52:39 233 1

原创 113 路经总和(两种解法)

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。

2024-03-13 11:56:16 172

原创 二叉树相关-递归

当该节点不为空的时候,将val值记录在路径中,判断该节点是否是叶子节点,若是,则加入结果集;思路:使用dfs解决,重点在如何判断节点为左叶子节点,需要通过父节点来判断:当如节点的left节点不为空且left节点不含左右孩子,则left节点为左节点,并将该值记录为val,否则值为0,继续遍历左右子树即可。给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。叶子节点 是指没有子节点的节点。

2024-03-10 16:54:06 307 1

原创 翻转二叉树

根据二叉树镜像的定义,考虑递归遍历(dfs)二叉树,交换每个节点的左 / 右子节点,即可生成二叉树的镜像。给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。思路:对于每次出队的节点,交换其左右孩子。有迭代法和递归法两种解法。

2024-03-09 16:35:49 198 1

原创 二叉树的层序遍历

层序遍历:从左到右,一层一层的遍历二叉树,层序遍历为广度优先遍历,需要借助队列来实现。

2024-03-09 16:22:32 1228 1

原创 二叉树的前中后序遍历

思路:二叉树的前中后序遍历,都属于深度优先遍历,需要借助栈来实现。思路:跟前序遍历差不多,但是入栈时候先左再右,最后反转结果即可。思路:借助指针来完成。

2024-03-09 15:35:16 158 1

原创 栈和队列相关

定义单调队列deque,维护deque中的值从头至尾单调递减,对窗口右端来说,当nums[j]进入时,需要删掉deque中小于nums[j]的值;对窗口左端来说,当nums[i-1]==deque的队列头(最大值),则需要从deque中删除头元素,因为nums[i-1]不是最大值,deque中已经提前删除了该值,不需要进行维护。最后用一个tmp栈,将原始栈中的元素移入,从tmp中出栈记录,则为最终答案。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。

2024-03-07 14:21:47 919 1

原创 字符串相关

思路:先求出kmp算法中的next数组,拿出next[next.length-1],则为字符串s的最大公共前后缀maxBoth,用next数组长度-maxBoth-1,即为最小重复的子串长度。思路:循环的时候,i从0开始,每次i=i+2*k,反转区间为(i,min(i+k,S.length)-1).解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输入:s = [“h”,“e”,“l”,“l”,“o”]

2024-03-05 12:51:32 808

原创 哈希表相关

在频率数组中,下标为数字,值为该数字出现的次数。给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!首先先将数组由小到大排序,使用i循环遍历数组,left指针为i+1,right指针指向末尾,求得三指针的和sum,若sum<0,则left++,若sum>0,则right–,若sum==0,记录该值即可。输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]

2024-03-03 13:17:43 631

原创 随想录-链表相关

思路:快慢指针法,引入虚拟头节点,fast指针先走n步,然后用while循环让fast和slow一直走,直到fast.next==null,此时slow指针的下一个位置即为倒数第n个节点的位置,删除即可。思路:双指针法,指针A指向headA,指针B指向headB,当A与B不相交的时候,一直循环前进,若A到头,则进入headB继续循环,B指针同理。循环到cur指向空。思路:使用hash表来解决,指针从头开始循环遍历,每遍历节点就加入进hash表,若hash表中已存在该节点,则为环形的入口,返回即可。

2024-03-01 17:40:24 875 1

原创 数组-螺旋矩阵相关(模拟思想)

输入:array = [[1,2,3,4],[12,13,14,5],[11,16,15,6],[10,9,8,7]]输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输入:array = [[1,2,3],[8,9,4],[7,6,5]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]

2024-02-29 12:03:11 442

原创 数组-滑动窗口相关(长度最小的子数组等)

我们使用频率数组a,将种类为i的物体的个数记录在a[i]中,当滑动窗口加入新的元素fruits[i]时,若a[fruits[i]]==1,代表初次加入,则种类+1;先扩大滑动窗口的右边界,直到滑动窗口包含3个数字,此时缩小滑动窗口的左边界到只包含2个数字,继续扩大滑动窗口右边界,每次循环最后,滑动窗口中数字种类必定<=2,进行窗口长度比较和记录。思路:循环扩大滑动窗口右边界,直到窗口中包含所有子串的字符,此时缩小滑动窗口左边界,直至窗口中不含所有子串字符,再继续扩大右边界。你想要尽可能多地收集水果。

2024-02-29 11:48:01 811

原创 数组-移除元素相关

你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。输入:nums = [0,1,2,2,3,0,4,2], val = 2。输入:nums = [0,0,1,1,1,2,2,3,3,4]

2024-02-28 11:33:39 901 1

原创 数组-二分查找相关

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为Olog⁡nO(\log n)Ologn的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]

2024-02-28 10:54:12 717

原创 【深基2.例12】上学迟到

学校和 yyy 的家之间的距离为s米,而 yyy 以v米每分钟的速度匀速走向学校。在上学的路上,yyy 还要额外花费10分钟的时间进行垃圾分类。学校要求必须在上午8:00到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。

2023-09-19 20:31:02 159 1

空空如也

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

TA关注的人

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