某小厂面试

1.spring ioc aop

IOC(Inversion of Control)是一种设计原则,它将原本由程序员手动创建和管理的对象交给Spring容器来管理。Spring容器充当对象工厂的角色,负责对象的创建和依赖关系的管理。通过IOC,当我们需要使用对象时,只需从容器中获取即可。

实现IOC的方式之一是依赖注入(Dependency Injection)。依赖注入可以通过以下三种方法来实现:

  1. 注解注入:使用注解(如@Autowired、@Resource)来标注需要注入的依赖对象,Spring容器会根据注解信息自动完成对象的创建和注入。
  2. Setter注入:通过为依赖对象提供对应的setter方法,在XML配置或者注解中配置依赖关系,Spring容器在创建对象时会自动调用setter方法来完成依赖注入。
  3. 构造方法注入:通过在构造方法中声明依赖参数,Spring容器会根据构造方法的参数信息来创建对象并完成依赖注入。

AOP(Aspect-Oriented Programming)是一种编程范式,它允许在程序的某个特定点(切入点)插入非业务性的代码,比如日志记录等。这些代码被称为切面(Aspect),可以通过AOP来实现。

2.arraylist和linkedlist哪个查询快

ArrayList和LinkedList在查询、删除和插入操作上具有不同的性能特点。

  1. 查询:ArrayList的查询速度较快,因为它内部使用数组实现,可以通过索引直接访问元素,时间复杂度为O(1)。而LinkedList需要从头或尾开始遍历链表,直到找到目标元素,时间复杂度为O(n)。
  2. 删除和插入:LinkedList在删除和插入操作上比ArrayList更快。当需要删除或插入元素时,ArrayList需要移动其他元素以保持连续性,导致时间复杂度为O(n)。而LinkedList只需要更改相邻节点的指针,时间复杂度为O(1)。特别是在链表的首尾操作上,LinkedList表现更为突出。

3.java基本数据类型

基本数据类型指的是Java语言中的基本数据类型,包括整型、浮点型、布尔型和字符型。以下是Java中的基本数据类型:

  1. 整型:
    • int:用于表示整数,占用4个字节。
    • byte:1个字节,范围为-128到12
    • long:用于表示长整数,占用8个字节。
    • short:用于表示短整数,占用2个字节。
  2. 浮点型:
    • float:用于表示单精度浮点数,占用4个字节。
    • double:用于表示双精度浮点数,占用8个字节。
  3. 布尔型:
    • boolean:用于表示逻辑值,只有两个取值:true和false。
  4. 字符型:
    • char:用于表示单个字符,占用2个字节。

4.自动装箱拆箱

自动装箱就是将基本数据类型用对应的引用数据类型封装起来

比如:

int a=1;

Interge w=a;

自动拆箱就是指将包装类对象自动转换为对应的基本数据类型。

比如:

Interge a=1;

int w=a;

5.关系型数据库用过吗

用过,比如mysql,sqlserver

6.mysql连接方式

  • JDBC连接:使用Java数据库连接(JDBC)API通过驱动程序连接到MySQL数据库,导入库,在配置文件中配置url,username,password。
  • 命令行连接:使用MySQL命令行客户端通过命令行界面连接到MySQL数据库,mysql -u -p,username为主机名或者主机的IP地址。
  • 图形化工具连接:使用图形化工具如Navicat Premium 15等连接到MySQL数据库。
  • 编程语言连接:通过编程语言的MySQL连接库(如Python的MySQLdb、PHP的mysqli扩展等)连接到MySQL数据库。

7.内连接和外连接

  • 内连接:内连接根据两个或多个表之间的匹配条件,返回同时在这些表中存在的行。只有满足连接条件的行才会被返回,其他行将被过滤掉。
  • 外连接:外连接根据连接条件,返回左表(左外连接)或右表(右外连接)中的所有行,同时根据连接条件匹配的行将被返回。如果没有匹配的行,将使用NULL值填充缺失的列。

将使用一个名为 Employees 的表和一个名为 Departments 的表来演示。

  1. Employees 表包含员工的信息,具有以下列:

    • EmployeeID: 员工ID
    • EmployeeName: 员工姓名
    • DepartmentID: 所属部门ID

    下面是 Employees 表的示例数据:

    EmployeeIDEmployeeNameDepartmentID
    1John1
    2Mary2
    3David1
    4Lisa3
  2. Departments 表包含部门的信息,具有以下列:

    • DepartmentID: 部门ID
    • DepartmentName: 部门名称

    下面是 Departments 表的示例数据:

    DepartmentIDDepartmentName
    1Sales
    2Marketing
    3Finance
    4HR

现在,我们可以使用内连接和外连接来获取不同的结果:

  1. 内连接(Inner Join):
    内连接会返回同时存在于两个表中的匹配行。

    示例查询:

    SELECT Employees.EmployeeName, Departments.DepartmentName
    FROM Employees
    INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
    

    查询结果:

    EmployeeNameDepartmentName
    JohnSales
    MaryMarketing
    DavidSales
    LisaFinance

    上述结果显示了员工的姓名和他们所属的部门名称,仅包括存在于 Employees 表和 Departments 表中的匹配行。

  2. 左外连接(Left Outer Join):
    左外连接会返回所有的左表行,以及与左表匹配的右表行。如果右表中没有匹配的行,则使用 NULL 值填充右表的列。

    示例查询:

    SELECT Employees.EmployeeName, Departments.DepartmentName
    FROM Employees
    LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
    

    查询结果:

    EmployeeNameDepartmentName
    JohnSales
    MaryMarketing
    DavidSales
    LisaFinance

    注意,左外连接的查询结果与内连接的结果相同。这是因为在这个示例中,所有的员工都有所属的部门,没有员工没有部门。

  3. 右外连接(Right Outer Join):
    右外连接会返回所有的右表行,以及与右表匹配的左表行。如果左表中没有匹配的行,则使用 NULL 值填充左表的列。

    示例查询:

    SELECT Employees.EmployeeName, Departments.DepartmentName
    FROM Employees
    RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
    

    查询结果:

    EmployeeNameDepartmentName
    JohnSales
    MaryMarketing
    DavidSales
    NULLHR

    上述结果显示了部门的名称以及与之匹配的员工姓名。注意到最后一行中的员工姓名为 NULL,这是因为 “HR” 部门在 Employees 表中没有匹配的员工。

8.主键和外键

  • 主键:主键是用于唯一标识表中每一行数据的列或列组合。它具有唯一性和非空性约束,用于确保每一行都有唯一的标识,并且不允许为空值。主键可以帮助在表中快速查找和识别特定的行。
  • 外键:外键是表中的一个列,它创建了与另一个表中的主键之间的关联。外键用于建立表之间的关系,它指向其他表中的主键,用于实现表之间的引用完整性。外键可以用于实现表之间的关联查询和数据一致性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

B64A-消闲

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

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

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

打赏作者

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

抵扣说明:

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

余额充值