存在morning
乐于了解新技术,善于复盘总结,不是很聪明,但能够持续进步。
展开
-
【Java程序员面试专栏 综合面试指南】资深程序员面试指南
想要实现多线程,必须在主线程中创建新的线程对象。Java 语言使用 Thread 类及其子类的对象来表示线程,在它的一个完整的生命周期中通常要经历如下的五种状态新建(NEW): 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态可运行状态(RUNABLE): RUNNABLE状态可以认为包含两个子状态:READY和RUNNING,就绪(READY): 处于新建状态的线程被start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件,只是没分配到CPU资源。原创 2024-04-04 22:26:26 · 168 阅读 · 0 评论 -
【Java程序员面试专栏 Java领域】Java SE核心面试指引(一):基础知识考察
关于Java SE部分的核心知识进行一网打尽,包括四部分:基础知识考察、面向对象思想、核心机制策略、Java新特性,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示:原创 2023-11-18 19:34:26 · 247 阅读 · 0 评论 -
【Java程序员面试专栏 Java领域】Java SE核心面试指引(二):面向对象思想
从 Java5 开始,Java 支持定义可变长参数,所谓可变长参数就是允许在调用方法时传入不定长度的参数。就比如下面的这个 printVariable 方法就可以接受 0 个或者多个参数//......可变参数只能作为函数的最后一个参数,但其前面可以有也可以没有任何其他参数;遇到方法重载的情况,会优先匹配固定参数的方法,因为固定参数的方法匹配度更高全局字符串常量池,class文件常量池,运行时常量池。我们现在所说的就是全局字符串常量池全局字符串常量池在每个VM中只有一份,存放的是字符串常量的引用值。原创 2023-11-21 23:35:06 · 453 阅读 · 0 评论 -
【Java程序员面试专栏 Java领域】Java SE核心面试指引(三):核心机制策略
JAVA反射机制是在运行状态中,获取任意一个类的结构 、创建对象 、获取方法、执行方法 、属性,这种在运行状态动态获取信息以及动态调用对象方法的功能被称为Java语言的反射机制泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数使用泛型可以避免过多的方法方法重载,更广泛的说,多种数据类型执行相同的代码时可以实现代码复用。原创 2023-11-24 23:32:37 · 598 阅读 · 0 评论 -
【Java程序员面试专栏 Java领域】Java SE核心面试指引(四):Java新特性
什么是函数式编程?函数式编程是一种编程范式,除了函数式编程之外还有命令式编程声明式编程等编程范式命令式编程:命令式编程 是面向计算机硬件的抽象,有变量、赋值语句、表达式、控制语句等,可以理解为 命令式编程就是冯诺伊曼的指令序列。它的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么,其实就是代码脚本段声明式编程:声明式编程 是以数据结构的形式来表达程序执行的逻辑。它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做。SQL 语句就是最明显的一种声明式编程的例子,,其实就是表达式结果。原创 2023-11-25 21:33:08 · 455 阅读 · 0 评论 -
【Java程序员面试专栏 Java领域】Java集合 核心面试指引
的初始化长度length(默认值是16),为负载因子(默认值是0.75),threshold是HashMap所能容纳键值对的最大值。。也就是说,在数组定义好长度之后,负载因子越大,所能容纳的键值对个数越多。HashMap的默认加载因子是0.75。加载因子是衡量HashMap在其容量自动增加之前可以达到多满的一个度量,它是容量与大小的比值。当HashMap中的条目数超过容量与加载因子的乘积时,HashMap会进行扩容操作,即重新计算桶的数量并重新分配所有元素。时间效率。原创 2024-02-16 16:21:42 · 1067 阅读 · 0 评论 -
【Java程序员面试专栏 Java领域】Java并发 核心面试指引
线程1占有资源A想申请资源B,同时线程2占有资源B想申请资源A就会造成死锁try {//t1休眠2秒以便t2能拿到moniterB});try {});t1.start();t2.start();线程 t1 通过synchronized (moniterA)获得 moniterA的监视器锁,然后通过Thread.sleep(2000);让线程 t1休眠 2s 为的是让线程t2 得到执行然后获取到 moniterB的监视器锁。原创 2024-02-17 01:17:33 · 211 阅读 · 0 评论 -
【Java程序员面试专栏 Java领域】Java虚拟机 核心面试指引
将*.java文件转为*.class的过程称为编译器的前端(前端编译例如:JDK的javac编译器当虚拟机发现某个方法或代码块运行特别频繁时,就会把这些代码认定为“Hot Spot Code”(热点代码),为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各层次的优化,完成这项任务的正是JIT编译器,把字节码(*.class文件) 转变为本地机器码的过程称为Java虚拟机的即时编译运行期(JIT编译器,Just In Time)原创 2024-02-17 19:25:44 · 399 阅读 · 0 评论 -
【Java程序员面试专栏 Java领域】Java Spring框架 核心面试指引
Spring 框架是一个开源的 Java 平台,它最初由 Rod Johnson 在 2003 年设计,并且随后成为了领先的全栈 Java 开发框架。它提供了一个全面的编程和配置模型,用于现代基于 Java 的企业应用- 无论是应用程序级别的还是大规模企业级别的。Spring 的核心特性可以用于任何 Java 应用程序,并且有许多扩展和库,用于构建web应用程序上的全栈解决方案。轻量级容器: Spring 提供了一个轻量级的IoC(控制反转)容器,它管理应用程序中对象的创建、生命周期和配置。依赖注入。原创 2024-02-18 13:21:15 · 158 阅读 · 0 评论 -
【Java程序员面试专栏 数据库】MySQL核心面试指引(一):基础知识考察
元组:元组(tuple)是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。在二维表里,元组也称为行。码:码就是能唯一标识实体的属性,对应表中的列。候选码:若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何子集都不能再标识,则称该属性组为候选码。例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是候选码。主码: 主码也叫主键。原创 2024-01-21 00:33:51 · 230 阅读 · 0 评论 -
【Java程序员面试专栏 数据库】MySQL核心面试指引(二):核心机制策略
多版本并发控制(MVCC)是一种用来解决读-写冲突的无锁并发控制,也就是为事务分配单向增长的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照。当前读,像select lock in share mode(共享锁), select for update;update, insert ,delete(排他锁)这些操作都是一种当前读,它读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁快照读。原创 2024-01-21 13:25:38 · 274 阅读 · 0 评论 -
【Java程序员面试专栏 数据库】MySQL核心面试指引(三):性能优化策略
读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上。这样的话,就能够小幅提升写性能,大幅提升读性能一般情况下,我们都会选择一主多从,也就是一台主数据库负责写,其他的从数据库负责读。主库和从库之间会进行数据同步,以保证从库中数据的准确性。这样的架构实现起来比较简单,并且也符合系统的写少读多的特点分库分表是一种数据库架构优化策略,用于处理大型数据库系统中的数据和负载。随着数据量的增长和访问量的提升,单一数据库可能面临性能瓶颈、扩展限制和管理困难等问题。原创 2024-01-21 17:42:40 · 242 阅读 · 0 评论 -
【Java程序员面试专栏 计算机基础】计算机网络 核心面试指引
关于计算机网络部分的核心知识进行一网打尽,包括计算机的网络模型,各个层的一些重点概念,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示原创 2024-01-22 23:19:58 · 195 阅读 · 0 评论 -
【Java程序员面试专栏 分布式中间件】Kafka 核心面试指引
关于Kafka部分的核心知识进行一网打尽,包括Kafka的基本概念,基本架构,工作流程,存储机制,生产策略和消费策略,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示从Kafka的基本定义和应用场景等说起Kafka 是一个分布式流式处理平台,它被设计用于构建实时的数据管道和流应用程序。Kafka 主要用于处理高吞吐量的数据流,并支持容错处理。流平台具有三个关键功能:Kafka 主要有两大应用场景:当然还有一些其它的应用场景消息队列:Kafka 可以作为一个高性能的消息队列系统原创 2024-01-25 01:01:08 · 341 阅读 · 0 评论 -
【Java程序员面试专栏 分布式中间件】ElasticSearch 核心面试指引
以上非结构化查询方式抽象而言可以理解为将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引,这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。虽然创建索引的过程也是非常耗时的,但是索引一旦创建就可以多次使用,全文检索主要处理的是查询,所以耗时间创建索引是值得的。原创 2024-02-15 16:51:37 · 481 阅读 · 0 评论 -
【Java程序员面试专栏 分布式中间件】Redis 核心面试指引
Redis是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis支持多种类型的数据结构,如字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)以及范围查询、位图、流和基数估计等高级数据结构。它通过将数据存储在内存中来提供高性能的读写操作,对于需要快速访问大量数据的应用程序而言,这一点尤其重要。性能极高:由于数据存储在内存中,Redis能够提供极高的性能,使其成为处理大量读写操作的理想选择。支持持久化。原创 2024-02-16 00:36:22 · 448 阅读 · 0 评论 -
【Java程序员面试专栏 数据结构】一 高频面试算法题:数组
一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊数组,包括数组合并,滑动窗口解决最长无重复子数组问题,图形法解下一个排列问题,以及一些常见的二维矩阵问题,所以放到一篇Blog中集中练习原创 2024-02-23 23:04:49 · 211 阅读 · 0 评论 -
【Java程序员面试专栏 数据结构】二 高频面试算法题:链表
一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目题目题干直接给出对应博客链接,这里只给出跟随双指针跟随双指针&虚拟头节点跟随双指针&递归漫游双指针漫游双指针&分治&递归快慢双指针快慢双指针快慢双指针&漫游双指针&跟随双指针漫游双指针跟随双指针跟随双指针单指针跟随双指针&虚拟头节点漫游双指针漫游双指针漫游双指针&分治&递归漫游双指针快慢双指针&漫游双指针&跟随双指针双向链表+哈希表 或 LinkedHashMap。原创 2023-11-13 23:37:04 · 154 阅读 · 0 评论 -
【Java程序员面试专栏 数据结构】三 高频面试算法题:栈和队列
一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,因为栈和队列这两哥们结构特性比较向对应,所以放到一篇Blog中集中练习题目题干直接给出对应博客链接,这里只给出简单思路、代码实现、复杂度分析辅助栈辅助栈单调栈(单调递减)单调栈(单调递减)单调栈(单调递减)单调队列(单调递减)原创 2024-02-20 23:25:32 · 203 阅读 · 0 评论 -
【Java程序员面试专栏 数据结构】四 高频面试算法题:哈希表
一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,一个O(1)查找的利器哈希表,所以放到一篇Blog中集中练习辅助哈希排序+双指针原地哈希。原创 2024-02-21 23:08:29 · 388 阅读 · 0 评论 -
【Java程序员面试专栏 数据结构】五 高频面试算法题:二叉树
一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是二叉树相关汇总的高频题目。原创 2023-11-20 22:58:29 · 308 阅读 · 0 评论 -
【Java程序员面试专栏 数据结构】六 高频面试算法题:字符串
一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊数组,包括数组合并,滑动窗口解决最长无重复子数组问题,图形法解下一个排列问题,以及一些常见的二维矩阵问题,所以放到一篇Blog中集中练习滑动窗口+双指针+辅助哈希中心扩散法+双指针双指针双指针双指针辅助栈双指针指针。原创 2024-02-24 16:21:39 · 407 阅读 · 0 评论 -
【Java程序员面试专栏 算法思维】一 高频面试算法题:排序算法
一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊排序算法,包括手撕排序算法,经典的TOPK问题以及区间合并,所以放到一篇Blog中集中练习双指针+递归+基准值双指针+递归大顶堆+递归快速排序+二分查找快速排序快速排序+比较。原创 2024-02-25 15:17:16 · 784 阅读 · 1 评论 -
【Java程序员面试专栏 算法思维】二 高频面试算法题:二分查找
LeetCode地址,找到目标值后不急着循环结束,需要继续寻找,直到找到目标值边界为止,关键词:二分查找// 找到目标值,但循环不一定结束,因为不确定该目标值的位置// 寻找左边界,则右测最大下标锁死// 寻找右边界,则左测最大下标锁死// 跳出循环后给出目标边界值下标时间复杂度 O(LogN):二分查找,只需查找对数阶次即可空间复杂度 O(1): 没有使用额外空间。原创 2024-02-25 19:17:12 · 120 阅读 · 0 评论 -
【Java程序员面试专栏 算法思维】三 高频面试算法题:搜索算法
一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊搜索算法,以岛屿问题为切入点练习,所以放到一篇Blog中集中练习网格搜索网格搜索网格搜索。原创 2024-02-25 21:33:18 · 91 阅读 · 0 评论 -
【Java程序员面试专栏 算法思维】四 高频面试算法题:回溯算法
一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊回溯算法,主要就是排列组合问题,所以放到一篇Blog中集中练习网格搜索。原创 2024-02-26 22:53:20 · 242 阅读 · 0 评论 -
【Java程序员面试专栏 算法思维】五 高频面试算法题:贪心算法
一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,本篇主要聊聊贪心算法,所以放到一篇Blog中集中练习贪心算法。原创 2024-02-25 16:49:18 · 286 阅读 · 0 评论 -
【Java程序员面试专栏 算法思维】六 高频面试算法题:动态规划
默认长度比数组长度+1,目的是初始化填0,这样当A或B长度为0时,第一行第一列默认为0正好处理边界问题。原创 2024-03-02 12:03:28 · 176 阅读 · 0 评论