简单面试-浅谈面试可能遇到的问题

本文详细介绍了IOC的概念,强调其利用映射存储对象并通过反射和配置实现对象创建与属性设置。关于Spring Bean,指出其默认为非线程安全的Singleton。此外,解释了@PropertySource、@Value等核心注解的作用。接着对比了数组和链表的存储结构差异,强调了它们在查询和增删操作上的效率。最后,概述了HashMap的特点,包括无序性、键值对存储及依赖hashCode和equals保证键的唯一性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用自己的话描述,写好md后,直接粘贴到语雀上

语雀操作,可以b站搜索一下。

1.说说你对IOC的理解

IOC作为一种用于管理对象的容器,内部是用map集合来存储对象的,通过反射配合xml配置或者注解来实现对象的创建和对对象的属性的赋值,一般来说IOC用来管理单列对象比较合适

2.说说spring的bean是否是线程安全的?为什么?

答案是否定的,绝对不可能是线程安全的,spring bean默认来说,singleton,都是线程不安全的,java web系统,一般来说很少在spring bean里放一些实例变量,一般来说他们都是多个组件互相调用,最终去访问数据库的,但是如果其中变量是线程安全的,一堆方法的调用也是线程安全的,就看这个变量是不是被全局共享使用,如果非要定义变量需要自己解决线程安全问题,或者使用Prototype。

3.@PropertySource、@Value、@Bean、@Configuration、@ComponentScan、@Import、@Service、@Autowired、@Qualifier。说说这些注解的作用?

@PropertySource用于加载properties配置文件

@Value用于给简单属性赋值

@Bean用于一个bean的配置

@Configuration用于指定配置的一个类

@ComponentScan用于指定要扫描的包

@Service用于标记一个类是否需要存入到IOC容器中,主要用于service层

@Autowired用于给引用类型赋值

@Import用于导入一些其他的配置类

@Qualifier用于给指定名称的类型赋值

4.数组和链表,存储结构的区别?

数组的存储结构 线性存储结构 ,对存储的数据通常只做查找和修改操作,因此数组结构的实现使用的是 顺序存储结构

链表的存储结构一般称作链式结构 链表分为 单向和双向链表

区别

​ 数组 查询快 增删慢

​ 链表 查询慢 增删快

5.hashCode和equals方法的作用?

hashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。

hashCode 的常规协定是:
在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用 hashCode 方法都必须生成相同的整数结果。
以下情况不 是必需的:如果根据 equals(java.lang.Object) 方法,两个对象不相等,那么在两个对象中的任一对象上调用 hashCode 方法必定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)

当equals方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
集合的了解,主要是单列集合ArrayList和LinkedList的区别?

equals 主要用于作逻辑比较 被比较的对象没写重写hashcode方法时比较的地址值 重写了hashcode方法时比较的对象本身的值

7.说说你对双列集合HashMap的了解?

HashMap

1.hashmap本身存储的数据是无序的

2.数据的存储格式是键值对

3.hashmap “链表散列”的数据结构,即数组链表的结合体

4.hashmap 存储的数据查询快 增删快
依赖hashCode方法和equals方法保证键的唯一
如果键要存储的是自定义对象,需要重写hashCode和equals方法

5.key唯一

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘色猫咪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值