面试问题整理

news/2024/10/17 18:23:59/

第三家

1.负责的项目的开发人员人数?人员组成

2.说说java的数据类型

我说的list 、set 、map ,面试官说这是接口,他说的是实现的类型

List

1. ArrayList:
    特点:基于数组实现,支持动态扩容。元素的访问和修改操作效率高,但插入和删除操作的效率较低。
   使用场景:适用于频繁读取和修改元素,而对插入和删除操作要求相对较低的场景。

2. LinkedList:
   特点:基于双向链表实现,插入和删除操作的效率高,但访问和修改操作的效率较低。
   使用场景:适用于频繁插入和删除元素,而对访问和修改操作要求相对较低的场景。

3. Vector:
   特点:类似于ArrayList,基于数组实现,支持动态扩容。与ArrayList不同的是,Vector是线程安全的。
   使用场景:适用于多线程环境下需要线程安全的场景。

4. CopyOnWriteArrayList:
   特点:基于数组实现,支持动态扩容。与ArrayList不同的是,CopyOnWriteArrayList是线程安全的,通过写时复制(Copy-on-write)机制实现高效的并发访问。
   使用场景:适用于读多写少的并发环境,例如读取缓存数据的场景。

5. Stack:
   特点:基于栈(Stack)数据结构实现,遵循后进先出(LIFO)原则。
   使用场景:适用于需要后进先出顺序的场景,例如实现简单的撤销/恢复功能。

Map

1. HashMap:
  特点:基于哈希表实现,具有较高的插入、删除和查找效率。不保证元素的顺序。
  使用场景:适用于快速查找和存储键值对,并不要求维护元素的顺序。

2. TreeMap:
  特点:基于红黑树(自平衡的二叉查找树)实现,按键的自然顺序或自定义顺序进行排序。查找效率较高。
  使用场景:适用于需要按键排序的场景,例如按字母顺序进行遍历或范围查找。

3. LinkedHashMap:
  特点:基于哈希表和双向链表实现,保持插入顺序或访问顺序。查找效率高,同时保持了元素的顺序。
  使用场景:适用于需要保持插入顺序或访问顺序的场景,例如记录访问日志、LRU缓存等。

4. ConcurrentHashMap:
  特点:基于哈希表和锁分段技术实现,支持高并发访问。多个线程可以同时读取,而写操作会锁定对应的段。
  使用场景:适用于多线程环境下需要高并发访问的场景,可以提供较好的性能和线程安全。

5. Hashtable:
  特点:类似于HashMap,但是是线程安全的。对于每个公共方法都进行了同步处理。
  使用场景:适用于多线程环境下需要线程安全的场景,但由于同步处理的开销,性能可能较低。

3.set 有HashSet、TreeSet、LinkedSet ,LinkedHashSet的特点是什么,以及这三者是在什么情况下使用

set

1. HashSet
   特点:基于哈希表实现,不保证元素的顺序,可以快速插入和查找元素。
   使用场景:适用于快速查找和插入元素,并且不需要保持元素的顺序的场景。

2. TreeSet
   - 特点:基于红黑树(自平衡二叉搜索树)实现,按照元素的自然顺序或自定义排序顺序对元素进行排序。
   - 使用场景:适用于需要按照顺序存储元素,并支持元素排序的场景。

3. LinkedHashSet
   特点:基于哈希表和双向链表实现,保留元素的插入顺序,可以快速访问元素。
   使用场景:适用于需要保持元素插入顺序,并且需要快速访问元素的场景。

4. EnumSet
  特点:专门用于存储枚举类型的集合,基于位向量实现,效率较高。
  使用场景:适用于存储枚举类型的元素集合,并且对性能要求较高的场景。

5. ConcurrentSkipListSet
  特点:基于跳表(Skip List)实现,支持高并发环境下的并发访问。
  使用场景:适用于需要在并发环境下进行并发访问的场景,具有较好的并发性能。

6. CopyOnWriteArraySet
   特点:基于可重入锁和基于数组的数据结构实现,适用于高并发读取、低并发更新的场景。
   使用场景:适用于多线程环境下读操作远远超过写操作的场景,保证读操作的线程安全性。

4. java流(jdk8加的stream接口),用在什么地方? lanmba表达式

5.依赖注入的方式

1. 构造函数注入
  特点:依赖对象通过构造函数传递,对象的依赖关系在创建时得到满足。依赖对象通常是必要的。
  适用场景:适用于具有明确依赖关系和必要依赖的场景。可以保证对象在创建时就具备完整的依赖关系。

2. Setter方法注入
  特点:依赖对象通过Setter方法设置,对象的依赖关系可以动态改变。依赖对象可以是可选的。
  适用场景:适用于对象的依赖关系可能随时发生变化的场景。可以灵活地在运行时注入或更改依赖对象。

3. 接口注入
  特点:定义接口来接受依赖对象的传入,对象通过接口方法获取依赖对象。
  适用场景:适用于需要通过接口方法获取依赖对象的场景。一般用于特定的对象或框架中。

4. 注解注入
  特点:使用注解标记依赖对象,容器根据注解信息自动注入依赖对象。
  适用场景:适用于使用依赖注入框架或容器管理依赖的场景。可以通过注解简化和统一依赖注入的配置和管理。

5. 上下文注入
   特点:通过访问上下文对象获取依赖对象,上下文对象可以是全局的上下文环境、容器或其他维护对象之间关系的机制。
   适用场景:适用于对象需要动态获取依赖对象的场景。可以通过上下文机制灵活地获取和管理依赖对象。

6.mysql用过窗口函数嘛?

MySQL引入了窗口函数作为一种高级查询技术,它允许在查询结果集内进行基于窗口的计算操作。窗口函数可以根据特定的窗口(window)或分组(group)来计算聚合、排序和排名等操作。以下是MySQL中常用的窗口函数:

1. ROW_NUMBER():
   - 功能:为结果集中的每一行分配一个唯一的整数值,表示该行在结果集中的顺序。
   - 示例:

SELECT ROW_NUMBER() OVER (ORDER BY column) AS row_number FROM table;

2. RANK():
   - 功能:为结果集中的每一行分配一个排名值,相同值的行具有相同的排名,下一个排名将被跳过。
   - 示例

SELECT RANK() OVER (ORDER BY column) AS rank FROM table;

3. DENSE_RANK():
   - 功能:为结果集中的每一行分配一个密集排名值,相同值的行具有相同的排名,下一个排名不会被跳过。
   - 示例:

SELECT DENSE_RANK() OVER (ORDER BY column) AS dense_rank FROM table;

4. NTILE(n):
   - 功能:将结果集分成指定数量的桶(bucket),并为每个桶分配一个编号。
   - 示例:

SELECT NTILE(4) OVER (ORDER BY column) AS bucket FROM table;

5. LAG(column, offset, default_value):
   - 功能:返回指定列在当前行之前的指定偏移量处的值。如果偏移量超出范围,可以提供默认值。
   - 示例:

SELECT LAG(column, 1, default_value) OVER (ORDER BY column) AS lag_value FROM table;

6. LEAD(column, offset, default_value):
   - 功能:返回指定列在当前行之后的指定偏移量处的值。如果偏移量超出范围,可以提供默认值。
   - 示例:

SELECT LEAD(column, 1, default_value) OVER (ORDER BY column) AS lead_value FROM table;

MySQL还提供了其他窗口函数,如SUM、AVG、MIN、MAX等,可以根据具体的需求选择和组合使用。窗口函数可以在SELECT语句中与OVER子句一起使用,通过指定PARTITION BY子句对结果集进行分组,并通过ORDER BY子句定义排序规则。窗口函数提供了更灵活和高效的数据处理能力,可以实现复杂的分析和聚合操作。

7.外键约束用过吗?

用过,这地方方需要介绍一下怎么用的

8.数据库存储的json格式

数据库中存储JSON格式的数据通常有两种方式:

1. JSON字段:
  1. 一些数据库系统(如MySQL、PostgreSQL、Oracle)提供了对JSON格式的原生支持,允许将JSON数据存储在特定类型的字段中(如MySQL的JSON类型)。
  2. 可以使用数据库的内置函数和操作符对JSON数据进行查询、更新和操作。
  3.JSON字段适合存储结构不规则、经常变化或者需要进行复杂的JSON操作的数据。

2. 文本字段:
  1. 数据库的文本字段(如VARCHAR、TEXT)可以存储JSON字符串。
  2. JSON数据以字符串形式存储,不直接支持JSON操作。
  3. 在查询时,需要使用数据库的字符串处理函数(如正则表达式、字符串截取)来提取或操作JSON数据。

选择哪种方式存储JSON数据取决于具体的需求和数据库系统的支持情况。如果数据库原生支持JSON类型并提供了JSON函数和操作符,建议使用JSON字段进行存储和操作。如果数据库不支持原生JSON类型或者JSON操作需求较简单,可以使用文本字段存储JSON字符串。

无论选择哪种方式,存储JSON数据时应注意数据的完整性和一致性。确保插入的JSON数据格式正确,并使用适当的约束和验证机制。在查询时,可以使用数据库的内置JSON函数或第三方JSON库进行解析和处理,以满足具体的业务需求。

9.spring做缓存用什么?(我说的redis)缓存接口用什么样的方式去做?

10.restful风格的接口设计过嘛?restful风格的接口设计登录是如何做的?


http://www.ppmy.cn/news/349532.html

相关文章

【微服务】SpringBoot 插件化开发模式详细总结

目录 一、前言 1.1 使用插件的好处 1.1.1 模块解耦 1.1.2 提升扩展性和开放性 1.1.3 方便第三方接入 1.2 插件化常用实现思路 二、Java常用插件实现方案 2.1 serviceloader方式 2.1.1 java spi 2.1.2 java spi 简单案例 2.2 自定义配置约定方式 2.2.1 添加配置文件…

【大学计算机技术】第一章 测试19

文章目录 选择题 选择题 20多年来微处理器的发展非常迅速,下面关于微处理器发展的叙述不准确的是( )。 A. 微处理器中包含的晶体管越来越多,功能越来越强大 B. 微处理器中Cache的容量越来越大 C. 微处理器的指令系统越来越简单规整 D. 微处理器的性能价格…

云计算机专用显示器,华为云电脑+5G,你真的需要一款便携显示器!

移动互联网时代,手机办公已经成为越来越多人的需求。但是由于手机屏幕太小,部分功能操作有所限制,对于复杂的表格处理、PPT制作或处理多任务时,手机办公还是很难满足人们需求。 5G时代来临 即将到来的5G云服务时代,网络…

加速数字化转型,通过零代码ETL工具实现吉客云数据自动化同步

一、吉客云系统介绍 吉客云是一家SaaS企业服务提供商,主要提供企业级应用服务。吉客云的服务范围涵盖了企业级推广、企业级智能客服、企业级销售管理、企业级客户关系管理、企业级电子商务等方面的服务,并且提供了基于AI技术的解决方案。其目标是通过数…

计算机的神奇功能华为,图说华为MateBook X,这是一款神奇的笔记本电脑

随着互联网的快速发展,移动办公已经成为了人们的一种生活方式,因此大家对于笔记本电脑的要求相比一样也要高了很多,机身更轻薄一些、性能更强一些、最好还能有一些创新的体验,为我们的移动办公进一步带来便利。这些需求放在以往可…

华为发布Matebook系列笔记本+平板 外观堪比MacBook

华为不仅是手机、平板电脑和智能手表制造商,如今它也成为笔记本电脑制造商了。 该公司推出了两款全新笔记本电脑Matebook X和Matebook D,同时还发布了去年该公司推出的Windows 10平板电脑的升级版——Matebook E。有点混乱,对吧?…

华为电脑wrtw29安装Linux,Huawei/华为笔记本MateBook 13 WRT-W19怎么样,华为13寸笔记本电脑配置性能评测!...

2018款新品Huawei/华为 MateBook 13 WRT-W19笔记本电脑推荐:华为笔记本MateBook 13 WRT-W19 全面屏,13英寸, i7版本预定8号后发货 买赠扩展坞双肩包,CPU 英特尔 酷睿 i5-8265U或英特尔 酷睿 i7-8550U,显存容量2GB&…

基于云计算的java云HIS系统源码

一、一个好的HIS系统,要具有开放性,便于扩展升级,增加新的功能模块,支撑好医院的业务的拓展,而且可以反过来给医院赋能,最终向更多的患者提供更好的服务。 二、本套基于云计算的云医疗信息系统&#xff08…