记录第一次面试(面经)

115 阅读3分钟

面试的公司是个小公司,暂时不透露。

一.自我介绍

二.实习经历和项目了解

面试官针对我简历上写的东西进行提问,大家一定要重视简历上所写的东西啊,真的要好好熟悉简历

三.考察mysq语句

因为我面试的运用到mysql,数据库的很多,而且面试官也不是主要学Java的,所以专门针对mysql进行提问。

  1. 第一范式、第二范式和第三范式的定义:

    • 第一范式:要求数据库表中的每个字段都是不可分割的原子值。
    • 第二范式:2NF 在 1NF 的基础之上,消除了非主属性对于码的部分函数依赖。
    • 第三范式:在第二范式的基础上,消除了非主属性对于码的传递函数依赖
  2. 数据库的分类有几种? 关系型数据库和非关系型数据库的区别:关系型数据库是基于关系模型的数据库,主要通过表格的形式来存储数据,使用SQL作为查询语言。而非关系型数据库是一种不遵循关系模型的数据库,通常使用键值对、列族、文档、图等数据结构来存储数据。 接触过的关系型数据库:MySQL,Oracle。 接触过的非关系型数据库:Redis。

  3. SQL命令类型:包括DDL(数据定义语言)、DML(数据操作语言)、DCL(数据控制语言)等。

    • DDL:用于定义、更改或删除数据库结构,例如CREATE、ALTER、DROP等。
    • DML:用于操作数据库中的数据,例如SELECT、INSERT、UPDATE、DELETE等。
    • DCL:用于管理数据库访问权限和事务控制,例如GRANT、REVOKE、COMMIT、ROLLBACK等。
  4. 有多少种事务管理? 事务管理可以大致分为两种类型:本地事务和全局(或分布式)事务。 本地事务涉及单一资源,如数据库,而全局事务涉及多个资源,如多个数据库或其他外部系统。 事务管理:事务是数据库管理系统执行过程中的一个逻辑单位,由一条或多条SQL语句组成。事务具有原子性、一致性、隔离性和持久性(ACID)特性。

  5. 数据库的数据类型?

数值类型 (Numeric Types):

-   整数类型(Integer Types):TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
-   浮点数类型(Floating-Point Types):FLOAT, DOUBLE
-   定点数类型(Fixed-Point Types):DECIMAL, NUMERIC

日期和时间类型 (Date and Time Types):

-   DATE, TIME, DATETIME, TIMESTAMP, YEAR

字符串类型 (String Types):

-   CHAR, VARCHAR
-   BINARY, VARBINARY
-   TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB
-   TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
-   ENUM, SET

空间数据类型 (Spatial Data Types):

-   GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION

6. 多表查询方法有?

多表查询方式:INNER JOIN、OUTER JOIN(LEFT、RIGHT、FULL)、CROSS JOIN、UNION。

INNER JOIN:来自多个表的相关数据。 OUTER JOIN:来自一个表的数据,即使在另一个表中没有匹配项。 CROSS JOIN:所有可能的行组合。 UNION:合并来自不同表的类似结构化数据。

employees table:

idnamedepartment_id
1Alice1
2Bob1
3Charlie2
4DaveNULL

departments table:

iddepartment_name
1HR
2IT
3Finance
  1. INNER JOIN:
sqlCopy code
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;

Result:

namedepartment_name
AliceHR
BobHR
CharlieIT
  1. OUTER JOIN (LEFT JOIN):
sqlCopy code
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;

Result:

namedepartment_name
AliceHR
BobHR
CharlieIT
DaveNULL
  1. CROSS JOIN:
sqlCopy code
SELECT employees.name, departments.department_name
FROM employees
CROSS JOIN departments;

Result:

namedepartment_name
AliceHR
AliceIT
AliceFinance
BobHR
BobIT
BobFinance
......
  1. UNION:

Let's assume there is another table named contractors with a similar structure to employees.

contractors table:

idnamedepartment_id
1Eve2
2Frank3
sqlCopy code
SELECT name FROM employees
UNION
SELECT name FROM contractors;

Result:

name
Alice
Bob
Charlie
Dave
Eve
Frank
  1. 有几种视图,用来干什么? 视图是表示存储的 SQL 查询结果的虚拟表。 有两种主要类型的视图:物化视图和非物化视图。 物化视图存储查询结果,而非物化视图不存储数据并在查询时从基表中检索数据。

  2. MySQL存储过程? MySQL 存储过程是预编译的 SQL 块,可增强性能、安全性和可维护性。 使用CREATE PROCEDURE定义