avatar
文章
169
标签
38
分类
4

首页
归档
标签
分类
面试资料
首页
归档
标签
分类

面试资料

框架
发表于2025-01-22|八股文
框架1.Spring-1.Spring用到了哪些设计模式Spring框架在其设计和实现中使用了多种设计模式,这些设计模式有助于提高代码的可重用性、灵活性和可维护性。以下是一些在Spring中常用的设计模式: 工厂模式:Spring通过BeanFactory和ApplicationContext来创建对象,其中BeanFactory就是简单工厂模式的体现。工厂模式隐藏了对象实例化的复杂性,并提供一个统一的方式来获取对象。 单例模式:在Spring中,默认情况下,bean以单例的形式存在。这意味着对于每个bean定义,Spring容器只会创建一个共享的实例。这样做可以减少系统资源的消耗,并减少垃圾回收器的压力。 代理模式:Spring的面向切面编程(AOP)功能使用到了JDK的动态代理和CGLIB字节码生成技术。这使得可以在不修改源代码的情况下,为对象添加额外的行为。 策略模式:例如,Resource接口的不同实现类针对不同的资源文件实现了不同的资源获取策略。策略模式允许在运行时选择算法或操作的具体实现。 模板方法模式:Spring中的JdbcTemplate、RestTemplate等 ...
旋转图像
发表于2025-01-21|算法leetcode
旋转图像给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在** 原地** 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 12输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]] 示例 2: 12输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]] 提示: n == matrix.length == matrix[i].length 1 <= n <= 20 -1000 <= matrix[i][j] <= 1000 找规律的题。 1231 2 3 主对角线翻转 1 4 7 所有行逆序 7 4 14 5 6 ---------> 2 5 8 --------> 8 5 2 7 8 ...
螺旋矩阵
发表于2025-01-21|算法leetcode
螺旋矩阵给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 12输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5] 示例 2: 12输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7] 提示: m == matrix.length n == matrix[i].length 1 <= m, n <= 10 -100 <= matrix[i][j] <= 100 定义两个数组模拟移动方向 1234567891011121314151617181920212223242526class Solution { public List<Integer> spiralOrder(int[][] matrix) { int[] dx = new int[] { 0, 1, 0 ...
矩阵置零
发表于2025-01-21|算法leetcode
矩阵置零给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地算法。 示例 1: 12输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]] 示例 2: 12输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]] 提示: m == matrix.length n == matrix[0].length 1 <= m, n <= 200 -231 <= matrix[i][j] <= 231 - 1 进阶: 一个直观的解决方案是使用 O(m*n) 的额外空间,但这并不是一个好的解决方案。 一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。 你能想出一个仅使用常量空间的解决方案吗? 最容易想到的方法是开两个数组记录下应该将哪一行和哪一列清零,空间复杂度O(m+n) 1234567891011 ...
Java集合
发表于2025-01-20|八股文
Java集合1.Java集合有哪几种?Java集合类主要由两个接口Collection和Map派生出来的, 一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Collection 接口,下面又有三个主要的子接口:List、Set 和 Queue(念q)。 哪些是线程安全哪些线程不安全?java.util包下的集合类大部分都是线程不安全的,例如我们常用的HashSet、TreeSet、ArrayList、LinkedList、ArrayDeque、HashMap、TreeMap,这些都是线程不安全的集合类,但是它们的优点是****性能好。如果需要使用线程安全的集合类,则可以使用Collections工具类提供的synchronizedXxx()方法,将这些集合类包装成线程安全的集合类。java.util包下也有线程安全的集合类,例如Vector、Hashtable。这些集合类都是比较古老的API,虽然****实现了线程安全,但是性能很差。所以即便是需要使用线程安全的集合类,也建议将线程不安全的集合类包装成线程安全集合类的方式,而不是 ...
缺失的第一个正数
发表于2025-01-20|算法leetcode
缺失的第一个正数给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 123输入:nums = [1,2,0]输出:3解释:范围 [1,2] 中的数字都在数组中。 示例 2: 123输入:nums = [3,4,-1,1]输出:2解释:1 在数组中,但 2 没有。 示例 3: 123输入:nums = [7,8,9,11,12]输出:1解释:最小的正数 1 没有出现。 提示: 1 <= nums.length <= 105 -231 <= nums[i] <= 231 - 1 最容易想到的解法是新建一个哈希表 12345678910111213141516171819class Solution { public int firstMissingPositive(int[] nums) { Map<Integer, Boolean> map = new HashMap<>(); ...
数据库
发表于2025-01-20|八股文
数据库1.Mysql基础1.什么是关系型数据库?关系型数据库(RDB,Relational Database)就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。 关系型数据库中,我们的数据都被存放在了各种表中(比如用户表),表中的每一行就存放着一条数据(比如一个用户的信息)。 大部分关系型数据库都支持事务的四大特性(ACID)。 2.关系型和非关系型数据库的区别?关系型数据库的优点 容易理解,因为它采用了关系模型来组织数据。 完全支持事务的ACID 可以保持数据的一致性。 数据更新的开销比较小。 支持复杂查询(带 where 子句的查询) 非关系型数据库(NOSQL)的优点 无需经过 SQL 层的解析,读写效率高。 基于键值对,读写性能很高,易于扩展 可以支持多种类型数据的存储,如图片,文档等等。 扩展(可分为内存性数据库以及文档型数据库,比如 Redis,MongoDB,HBase 等,适合场景:数据量大高可用的日志系统/地理位置存储系统)。 2.什么是MySQLMySQL是一个关系型数据库,它采用表的形 ...
合并区间
发表于2025-01-20|算法leetcode
合并区间以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 123输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 123输入:intervals = [[1,4],[4,5]]输出:[[1,5]]解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。 提示: 1 <= intervals.length <= 104 intervals[i].length == 2 0 <= starti <= endi <= 104 解析点这 重点讲一下java的自定义排序 Comparator 的工作原理 接口定义: Comparator 接口定义了以下两个方法: 12javaCopyEditint com ...
Redis
发表于2025-01-17|八股文
Redis[1]Redis介绍1.键值型与NoSqlRedis是一种键值型的NoSql数据库,这里有两个关键字: 键值型 NoSql 其中键值型,是指Redis中存储的数据都是以key.value对的形式存储,而value的形式多种多样,可以是字符串.数值.甚至json: 而NoSql则是相对于传统关系型数据库而言,有很大差异的一种数据库。 对于存储的数据,没有类似Mysql那么严格的约束,比如唯一性,是否可以为null等等,所以我们把这种松散结构的数据库,称之为NoSQL数据库。 2. Redis数据类型1 五种常用数据类型介绍Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型: 字符串(string):普通字符串,Redis中最简单的数据类型,string的内部结构实现上类似Java的ArrayList 哈希(hash):也叫散列,类似于Java中的HashMap结构 列表(list):按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList,底层是双向链表 集合(set):无序集合,没有重复元素,类似于Ja ...
java基础
发表于2025-01-17|八股文
java基础1.面向对象基础1.面向对象和面向过程的区别?面向对象和面向过程是一种软件开发思想。 两者的主要区别在于解决问题的方式不同: 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。 面向对象会先抽象出对象,然后用对象执行方法的方式解决问题。 2.创建一个对象用什么运算符?对象实体与对象引用有何不同?new 运算符,new 创建对象实例(对象实例在堆内存中),对象引用指向对象实例(对象引用存放在栈内存中)。 一个对象引用可以指向 0 个或 1 个对象(一根绳子可以不系气球,也可以系一个气球); 一个对象可以有 n 个引用指向它(可以用 n 条绳子系住一个气球) 3.对象的相等和引用相等的区别 对象的相等一般比较的是内存中存放的内容是否相等。 引用相等一般比较的是他们指向的内存地址是否相等。 12345678910111213String str1 = "hello";String str2 = new String("hello");String str3 = "hello";// 使用 = ...
1…8910…17
avatar
范小勤
文章
169
标签
38
分类
4
Follow Me
公告
This is my Blog
最新文章
验证二叉搜索树2025-02-26
寻找重复数2025-02-17
下一个排列2025-02-17
颜色分类2025-02-16
只出现一次的数字2025-02-16
分类
  • 八股文11
  • 算法155
    • acwing22
    • leetcode133
标签
区间和 Trie 二叉树 模拟 完全背包 DFS 位运算 BFS 链表 优先队列 二叉搜索树 拓扑排序 哈希 01背包 栈 双向链表 差分 图论 摩尔投票 双指针 贪心 单调队列 桶排序 kmp 滑动窗口 并查集 前缀积 矩阵 递归 归并排序 单调栈 高精度 记忆化搜索 集合 二分 前缀和 动态规划 快速排序
归档
  • 二月 202543
  • 一月 202554
  • 十二月 202414
  • 九月 20241
  • 四月 202418
  • 三月 202419
  • 二月 202420
网站资讯
文章数目 :
169
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By 范小勤
框架 Hexo|主题 Butterfly