#面试题
面试相关问题
老衲の少女心
可以写不出一行高深的代码,但是写出来的每一行的代码都必须是规范的代码
展开
-
【面试题】你知道为什么HashMap是线程不安全的吗?
我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密。jdk1.7中的HashMap在jdk1.8中对HashMap做了很多优化,这里先分析在jdk1.7中的问题,相信大家都知道在jdk1.7多线程环境下HashMap容易出现死循环,这里我们先用代码来模拟出现死循环的情况:public class HashMapTest { public static void main(String[] args) {原创 2020-09-09 10:33:06 · 673 阅读 · 0 评论 -
【面试题】hashCode() 和 equals() 之间的关系
前言关于 hashCode 和 equals 的处理,遵循如下规则:只要重写 equals,就必须重写 hashCode因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对象必须重写这两个方法如果自定义对象做为 Map 的键,那么必须重写 hashCode 和 equals说明:String 重写了 hashCode 和 equals 方法,所以我们可以非常愉快的使用 String 对象作为 key 来使用介绍equals() 的作原创 2020-09-07 17:07:08 · 761 阅读 · 0 评论 -
【面试题】Redis中是如何实现分布式锁的
分布式锁常见的三种实现方式:数据库乐观锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁。Redis的分布式锁Redis要实现分布式锁,以下条件应该得到满足互斥性:在任意时刻,只有一个客户端能持有锁。不能死锁:客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。容错性:只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。实现可以直接通过 set key value px milliseconds nx 命令实现加锁, 通过Lua脚本实现解锁。原创 2020-09-07 11:30:48 · 361 阅读 · 0 评论 -
【面试题】使用 HashMap 还是 TreeMap
基本介绍TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。HashMap<K,V>的Key值实现散列hashCode(),分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表或红黑树。适用于在Map中插入、删除和定位元素。结论如果你需要得到一个有序的结果时就应该使用TreeMap(因为Ha原创 2020-08-21 10:05:11 · 224 阅读 · 0 评论 -
【面试题】Spring框架中Bean的生命周期
生命周期1、实例化一个Bean--也就是我们常说的new一个对象;2、按照Spring上下文对实例化的Bean进行配置--也就是IOC注入;3、如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是Spring配置文件中Bean的id值4、如果这个Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(setBeanFactory(BeanFactory)传递的是Spring工厂自原创 2020-08-20 10:11:38 · 722 阅读 · 0 评论 -
【面试题】Spring,SpringMVC,SpringBoot,SpringCloud有什么区别和联系?
介绍Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。基础版本只有 2 MB 左右的大小,Spring使你能够编写更干净、更可管理、并且更易于测试的代码。SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,Spring MVC是Spring的一个模块。通过Dispatcher Servlet, ModelAndView 和 View Resolver,开发web应用变得很容易。主要针对的是网站应用程序或者服务开发——URL路由原创 2020-08-19 09:49:47 · 222 阅读 · 0 评论