Java面试
文章平均质量分 90
Java面试相关内容
Wei *
这个作者很懒,什么都没留下…
展开
-
【算法题】小红书2023秋招提前批算法真题解析
定义 dp 数组 [n][2] 表示 以 a[i] 为结尾且选 a[i] 的子数组的最大和是多少,第二维的 0 和 1 分别表示当前有没有将元素换成 x 的操作。二分查找是为了快速找出以某一个精华区为起点时,最后一个被覆盖到的精华区的索引。前缀和是为了快速求出一个区间中的精华区一共有多少个精华帖子。记得要转 long 否则答案会溢出 int。按照题目要求读取数据,存入哈希表做计数统计。将结果放入列表,自定义筛选和排序即可。—— 最后的数组是这样的。使用等差数列求和公式得答案为。每次询问就是一批输入数据。原创 2023-09-08 22:23:26 · 968 阅读 · 0 评论 -
【面试题】智力题
该文章记录一些面试中的智力题目。原创 2023-09-17 21:24:30 · 2479 阅读 · 1 评论 -
【Java面试题】Java基础语法
equals的话,他是属于java.lang.Object类里面的方法,如果该方法没有被重写过,默认也是== ,我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equasl是比较值的错误观点.**举例:**如果我们有1000万个对象,这个时候要找出外界输入的对象,判断和我们1000万个对象中哪个对象相等,这个时候我们会先调用hashcode方法,去大大的缩小范围,然后再使用equals方法,这样就可以大大提高我们寻找对象的速度。原创 2023-06-27 00:42:42 · 354 阅读 · 0 评论 -
【Java面试题】Java基础——面向对象
1. 实现方式不同:抽象类必须被子类实现,而接口可以被多个类实现。2. 抽象方法和默认方法不同:抽象类中可以定义抽象方法和非抽象方法,而接口只能定义抽象方法。3. 构造函数不同:抽象类可以定义构造函数,而接口不能定义构造函数。4. final修饰符的使用不同:抽象类中可以定义final修饰符,而接口中的所有方法都不能被final修饰。5. 继承限制不同:子类只能继承一个抽象类,而一个类可以实现多个接口。总之,抽象类更像是一种“半成品”,它提供了一些基本的实现,但还需要子类去完善;原创 2023-06-27 12:33:38 · 448 阅读 · 1 评论 -
【Java面试题】设计模式
代理模式:对某一个目标对象提供它的代理对象,并且由代理对象控制对原对象的引用。例如,我们想访问某个对象A时,不能直接访问,需要由对象A的代理对象A Proxy进行代理。通俗来说,A Proxy我们可以认为是A的助理、中介、对外联络人。所以,整个类图十分简单,如下所示。原本客户需要直接调用目标类(委托类),而现在客户需要通过代理类来调用目标类。原创 2023-06-27 12:48:47 · 811 阅读 · 0 评论 -
【Java面试题】框架篇——SpringMVC
Spring MVC是一个基于Spring框架的Web应用程序框架,它提供了许多注解来简化控制器(Controller)和视图(View)的配置。3、 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。10、 DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。1、 用户发送请求至前端控制器DispatcherServlet。5、 执行处理器(Controller,也叫后端控制器)。原创 2023-06-28 00:08:12 · 50 阅读 · 0 评论 -
【Java面试题】框架篇——Redis
缓存击穿也称为热Key问题是指在 Redis 中,Redis中一个热点key在失效的同时,大量的请求过来,从而会全部到达数据库,压垮数据库。1.互斥锁:线程1先发来请求,并且获取到了互斥锁。这时线程1就可以去查询数据库,接着将查询到的数据缓存到redis中,最后记得释放锁,不然以后别的线程无法访问数据库。原创 2023-06-28 00:08:03 · 118 阅读 · 0 评论 -
【Java面试题】Java基础——多线程
死锁是指两个或多个事务在互相等待对方释放资源的情况下,无法继续执行的状态。当发生死锁时,所有等待的事务都会被阻塞,直到有一个事务先释放资源才能继续执行。1. 避免嵌套事务:尽量减少事务的嵌套层数,避免出现循环等待的情况。2. 加锁顺序:按照固定的顺序加锁,避免不同事务之间的加锁顺序不一致导致死锁。3. 超时机制:设置合理的超时时间,如果一个事务等待的时间超过了设定的阈值,就放弃等待并回滚操作。原创 2023-06-27 12:36:13 · 92 阅读 · 0 评论 -
【Java面试题】Java基础——排序算法
插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过创建有序序列和无序序列,然后再遍历无序序列得到里面每一个数字,把每一个数字插入到有序序列中正确的位置。它重复的遍历过要排序的数列,一次比较相邻的两个元素,如果他们的顺序错误就把他们交换过来。将0索引的元素到N索引的元素看做是有序的,把N+1索引的元素到最后一个当成是无序的。快速排序又是一种分而治之思想在排序算法上的典型应用。原创 2023-06-27 12:44:08 · 862 阅读 · 0 评论 -
【Java面试题】Java基础——集合
在 HashMap 中,元素是以键值对的形式存储的,可以通过调用 put(key, value) 方法将元素存储到 HashMap 中。具体的操作流程如下:1.创建一个新的键值对(Entry)对象,将要存储的键和值作为参数传入。2.对键进行哈希运算,以得到在底层数组中的位置(桶)。3.如果该位置为空,则将新的键值对放入该位置。4.如果该位置已经存在键值对,则进行链式存储。新的键值对将成为链表头部,原有键值对将成为链表的后继节点。原创 2023-06-27 12:28:22 · 226 阅读 · 0 评论 -
【Java面试题】框架篇——MyBatis
一级缓存的作用在我看来在实际业务场景中作用真的非常有限,因为需要在一个事务方法中重复查询的需求场景真的太少,而且由于Mysql数据库的MVCC机制以及事务隔离机制-可重复读的能力,会导致同一个事务方法内多次执行相同的查询必定会得到相同的结果,所以在事务范围内的重复查询基本没什么实际作用。 Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。原创 2023-06-28 00:10:20 · 73 阅读 · 0 评论 -
【Java面试题】Java基础——IO流
缓冲区就是一段特殊的内存区域,很多情况下当程序需要频繁地操作一个资源(如文件或数据库)则性能会很低,所以为了提升性能就可以将一部分数据暂时读写到缓存区,以后直接从此区域中读写数据即可,这样就显著提升了性。对于 Java 字符流的操作都是在缓冲区操作的,所以如果我们想在字符流操作中主动将缓冲区刷新到文件则可以使用 flush() 方法操作。序列化就是一种用来处理对象流的机制,将对象的内容进行流化。可以对流化后的对象进行读写操作,可以将流化后的对象传输于网络之间。原创 2023-06-27 12:35:44 · 200 阅读 · 0 评论 -
【Java面试题】Java基础——查找算法
但是排序之后,会改变原有数据的顺序,查找出来元素位置跟原来的元素可能是不一样的,所以排序之后再查找只能判断当前数据是否在容器当中,返回的索引无实际的意义。因此被称为黄金分割。**细节:**对于表长较大,而关键字分布又比较均匀的查找表来说,插值查找算法的平均性能比折半查找要好的多。基本思想:也是二分查找的一种提升算法,通过运用黄金比例的概念在数列中选择查找点进行查找,提高查找效率。其实就是因为方便,简单,但是如果我能在二分查找的基础上,让中间的mid点,尽可能靠近想要查找的元素,那不就能提高查找的效率了吗?原创 2023-06-27 12:38:41 · 94 阅读 · 0 评论 -
【Java面试题】框架篇——Spring
Spring框架是一个为Java应用程序的开发提供了综合、广泛的基础性支持的Java平台。Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发。Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心Spring是如何在后台进行工作的。Spring框架至今已集成了20多个模块。这些模块主要被分如下图所示的核心容器、数据访问/集成,、Web、AOP(面向切面编程)、工具、消息和测试模块。原创 2023-06-28 00:10:11 · 150 阅读 · 0 评论 -
【Java面试题】框架篇——Spring Boot
Spring Boot是一个基于Spring框架的快速开发应用程序的工具,它提供了许多注解来简化配置和加速开发过程。它提供了实时的监控和警报,可以帮助开发人员及时发现和解决应用程序中的问题。总之,Spring Boot 将按照上述顺序加载配置文件,并且优先级由高到低为命令行参数、系统属性、类路径下的配置文件、环境变量和默认配置。总之,Spring Boot是一个非常强大的开发工具,可以帮助开发人员更快地构建高质量的应用程序,并提高开发效率和应用程序的质量。的变量,并将其值解析为配置文件的位置。原创 2023-06-28 00:10:26 · 75 阅读 · 0 评论 -
【Java面试题】SQL篇
脏读(Dirty Read)、幻读(Phantom Read)和不可重复读(Non-repeatable Read)是并发事务中常见的问题,这些问题通常是由于事务隔离级别不当导致的。1. 脏读(Dirty Read):指一个事务读取了另一个事务尚未提交的数据,这个数据在后续的事务执行中可能会被修改或删除。例如,在一个事务中读取一个行,而另一个事务在这个行上插入了新数据,那么第一个事务仍然会读取到旧的数据而不是新数据。2. 幻读(Phantom Read):指一个事务在执行时,看到了一个不存在的记录。原创 2023-06-28 00:07:57 · 783 阅读 · 0 评论 -
【Java面试题】项目篇
最后,我们记录日志。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。通过单元测试,开发人员可以快速识别和修复代码中的异常,确保程序的正确性和稳定性,并在开发的早期阶段捕获潜在的问题。在压力测试中,测试人员会使用性能测试工具模拟并发用户的访问和操作,以测试系统在高压力和压力下的性能和稳定性。FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。原创 2023-06-28 00:10:17 · 1151 阅读 · 0 评论