点时科技面试题

1.hashmap底层是什么?

在 JDK 1.7及以前 底层实现是一个 数组 + 链表 的形式,

而在 JDK 1.7以后 底层是 数组 + 链表 + 红黑树 。

2.ES为什么查询速度快

https://blog.csdn.net/weixin_42588555/article/details/129565314

Elasticsearch (ES) 是一种分布式搜索引擎,它的查询速度快的原因有很多。

首先,ES使用了倒排索引这种数据结构来快速查找文档。倒排索引是一种针对文本搜索而优化的数据结构,它将每个词与出现这个词的文档列表关联起来,这样就可以快速查找包含某些词的文档。

其次,ES使用了分布式系统的优势,可以利用多台机器的计算能力来处理查询。它将索引分成若干个分片,并在多台机器上进行分布式存储,这样就可以并行处理查询,提升查询效率。

另外,ES还有很多优化查询的功能,比如布尔查询、聚合查询、嵌套查询等,这些功能都可以帮助快速定位符合查询条件的文档。

3.List和Set的区别是什么?

(1) list方法能够允许重复的对象,但是,set方法和list方法不同,set方法不允许重复对象

(2) list的话,它是一个有序的容器,它保持了每个元素的插入顺序,也就是输出顺序就是输入顺序。

但是set方法是无序容器,它不可以保证每个元素的存储顺序,TreeSet通过Comparator或者是Comparable维护了一个排序顺序。

(3)list和set不同,list能够插入多个null元素,但是,set只允许插入一个null元素。

(4)list方法常用的实现类:

ArrayList、LinkedList 和 Vector。

Set方法:

HashSet、LinkedHashSet 以及 TreeSet。

在这当中,最流行是HashSet,HashSet是基于HashMap实现。

4.vue的生命周期

Vue 的实例从创建到销毁的过程 ,就是生命周期 ,

也就是从开始创建 ,初始化数据 ,编译模板 ,挂载Dom到渲染DOM ,

更新数据再到渲染 ,卸载等一系列的过程 ,我们称这是Vue的生命周期

5.spring 中的依赖注入有几种方式?

https://juejin.cn/post/7248898395884224568

(1)构造器注入

public class ExampleService {

    private Dependency dependency;

    public ExampleService(Dependency dependency) {

        this.dependency = dependency;

    }

    // ...

}

(2)Setter方法注入

public class ExampleService {

    private Dependency dependency;

    public void setDependency(Dependency dependency) {

        this.dependency = dependency;

    }

    // ...

}

(3)接口注入

public interface DependencyInjection {

    void setDependency(Dependency dependency);

}

public class ExampleService implements DependencyInjection {

    private Dependency dependency;

    @Override

    public void setDependency(Dependency dependency) {

        this.dependency = dependency;

    }

    // ...

}

(4) 自动装配(Autowiring)

自动装配是Spring框架提供的一种便捷的依赖注入方式。

通过自动装配,Spring容器可以自动识别和解析Bean之间的依赖关系,并将相应的依赖注入到目标Bean中。

自动装配可以根据不同的规则进行,包括按类型、按名称、按注解等。示例代码如下:

public class ExampleService {

    @Autowired

    private Dependency dependency;

    // ...

}

(5)注解注入

Spring框架提供了多个注解用于依赖注入,简化了配置和代码的编写。常用的注解包括:

@Autowired:自动装配依赖项。

@Qualifier:在存在多个候选Bean时,指定要注入的具体Bean。

@Resource:指定要注入的Bean,并可以通过名称或类型进行查找。

@Value:注入简单的值,如基本类型、字符串等。

@Inject:与@Autowired类似,用于依赖注入。

示例代码如下:

java复制代码public class ExampleService {

    @Autowired

    @Qualifier("dependency")

    private Dependency dependency;

    // ...

}

(6) Java配置

除了XML配置,Spring还支持使用Java配置类来进行依赖注入。

通过编写Java配置类,可以更加灵活地定义和管理Bean之间的依赖关系。示例代码如下:

@Configuration

public class AppConfig {

    @Bean

    public ExampleService exampleService() {

        ExampleService service = new ExampleService();

        service.setDependency(dependency());

        return service;

    }

    @Bean

    public Dependency dependency() {

        return new Dependency();

    }

}

在配置文件中,通过<context:annotation-config>启用注解支持,并使用<bean>标签引用Java配置类:

<context:annotation-config />

<bean class="com.example.AppConfig" />

@Autowired和@Resource到底有什么区别?

https://blog.csdn.net/xhbzl/article/details/126765893

(1) 来源不同

@Autowired 和 @Resource 来自不同的“父类”,其中 @Autowired 是 Spring 定义的注解,而 @Resource 是 Java 定义的注解,它来自于 JSR-250(Java 250 规范提案)。

(2) 依赖查找顺序不同

@Autowired 是先根据类型(byType)查找,如果存在多个 Bean 再根据名称(byName)进行查找

@Resource 是先根据名称查找,如果(根据名称)查找不到,再根据类型进行查找

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容