2024.3.14 Boss投递
2024.3.16 面试(Boss面试间)
面试官是软件开发部经理
自我介绍
学校的地点
实习和毕设以及学校安排冲突吗
打算参加秋招的具体时间
专业是软件工程是吧
数学学过那几科呢
概率统计中有平均值,标准差,中值,方差,具体讲讲定义以及计算方法
正太分布如何计算,一般如何使用
线性代数学的怎么样
0的整数次方有哪几种结果呢
那0的0次方呢
那0的-1次方的
那在程序中输入会出现什么呢
在写程序中有遇到过0除这样的异常吗
Python基础有多少
如何使用Pandas库进行一些数据加载工作呢
数据清洗的时候的量有多大,是如何加载的
自己有做过编程相关的实践么
如何使用python从Hadoop加载数据,具体描述一下过程
你感觉专业课程中学的最好的有哪些
数据库中的笛卡尔积有了解吗,具体讲讲
如果100*5和10000*3的两张表笛卡尔积是多大
在数据库中,笛卡尔积通常是指在关系数据库中,两个或多个表的每行数据组合在一起的结果,形成一个新的结果集。这个概念来源于数学中的笛卡尔积,是集合论的一个基本概念。
具体来说,如果有两个表A和B,A有m行数据,B有n行数据,那么A和B的笛卡尔积就是一个有m*n行数据的表。在这个结果表中,A表的每一行都会与B表的每一行组合一次,形成一行新的数据。
以一个简单的例子来说明:
假设有两个表:
表1(员工表):
- 员工ID
- 员工姓名
表2(部门表):
- 部门ID
- 部门名称
如果表1有3个员工,表2有4个部门,那么这两个表的笛卡尔积就是一个包含12行数据的表。每一行数据都包含一个员工和一个部门的组合。
笛卡尔积在数据库中通常不是我们想要的结果,因为它会生成大量的数据,这些数据往往是无关的。在实际应用中,我们通常需要通过连接操作(如内连接、外连接等)来从笛卡尔积中筛选出我们真正需要的数据
你了解的数据库原理中,二维表有几类计算呢
- 选择(Selection):从表中选取满足特定条件的行。这可以通过使用SQL中的WHERE子句来实现。
- 投影(Projection):从表中选取特定的列。这可以通过使用SQL中的SELECT子句来实现,选择你想要显示的列。
- 连接(Join):将两个或多个表中的行基于某些相关列合并起来。常见的连接类型包括内连接(INNER JOIN)、外连接(LEFT/RIGHT/FULL OUTER JOIN)、交叉连接(CROSS JOIN,即笛卡尔积)。
- 并(Union):将两个或多个表的行合并起来,形成一个新的表。要求这些表具有相同的列结构。如果有重复的行,默认情况下会去除重复行,但可以使用UNION ALL来保留重复行。
- 差(Except):也称为差集,从一个表中去掉与另一个表共有的行,只保留在第一个表中独有的行。
- 交(Intersect):取两个表共有的行,即两个表的交集。
- 笛卡尔积(Cartesian Product):前面提到的,两个表的每一行与另一个表的每一行组合,形成一个新的结果集。如果表A有m行,表B有n行,那么笛卡尔积就有m*n行。
- 聚合函数(Aggregate Functions):对表中的列进行计算,返回单个值。常见的聚合函数包括COUNT()、SUM()、AVG()、MAX()、MIN()等。
- 分组(Group By):将表中的行根据一个或多个列的值进行分组,通常与聚合函数结合使用,以对每个分组进行计算。
- 排序(Order By):根据一个或多个列的值对表中的行进行排序
[补充]窗口函数详解
MySQL从版本8.0开始支持窗口函数(Window Functions),这是一种非常有用的功能,它允许你进行复杂的数据分析,而无需使用传统的分组(GROUP BY)或聚合(如SUM、COUNT等)操作。窗口函数可以让你在分组的数据上进行计算,同时保留原始行的详细信息。
窗口函数可以分为以下几类:
- 聚合函数作为窗口函数:如SUM()、AVG()、COUNT()、MAX()、MIN()等。这些函数在窗口中计算聚合值,但不会减少行数。
- 排序函数:如ROW_NUMBER()、RANK()、DENSE_RANK()、NTILE()等。这些函数用于为窗口中的每一行分配一个唯一的序号或排名。
- 分析函数:如LEAD()、LAG()、FIRST_VALUE()、LAST_VALUE()、CUME_DIST()、PERCENT_RANK()等。这些函数用于访问窗口中当前行之前或之后的行数据。
基本格式:
SELECT
column1,
column2,
FUNCTION_NAME([arguments]) OVER (window_specification)
FROM
table_name;
其中window_specification定义了窗口的范围和排序方式,它可以包含以下部分:
- PARTITION BY column1, column2, ...:将数据分区,每个分区单独进行窗口函数的计算。
- ORDER BY column1, column2, ...:指定窗口内数据的排序方式。
- FRAME clause:定义窗口的框架,即窗口函数应该考虑的行范围。框架可以是ROWS或RANGE,并且可以指定框架的起始和结束,如UNBOUNDED PRECEDING(从分区的第一行开始)到CURRENT ROW(当前行),或者UNBOUNDED FOLLOWING(到分区的最后一行)。
ROW_NUMBER()、RANK()、DENSE_RANK()三者区别具体结合实例讲解
ROW_NUMBER()总是为每一行分配一个唯一的序号,RANK()在遇到重复分数时会分配相同的排名但会跳过后续的排名,而DENSE_RANK()也会为重复分数分配相同的排名但不会跳过后续的排名
那你有接触过数据库的哪几类操作呢
- 数据定义语言(DDL)操作:
-
- 创建数据库(CREATE DATABASE)
- 创建表(CREATE TABLE)
- 修改表结构(ALTER TABLE)
- 删除表(DROP TABLE)
- 创建索引(CREATE INDEX)
- 删除索引(DROP INDEX)
- 数据操纵语言(DML)操作:
-
- 插入数据(INSERT)
- 更新数据(UPDATE)
- 删除数据(DELETE)
- 查询数据(SELECT)
- 数据控制语言(DCL)操作:
-
- 授予权限(GRANT)
- 收回权限(REVOKE)
- 事务控制语言(TCL)操作:
-
- 提交事务(COMMIT)
- 回滚事务(ROLLBACK)
- 开始事务(BEGIN TRANSACTION)
- 数据库查询语言(DQL)操作:
-
- 查询数据(SELECT)
- 数据库管理操作:
-
- 备份数据库(BACKUP)
- 恢复数据库(RESTORE)
- 监控数据库性能
- 优化数据库性能
表的新建有哪些语句有哪几种方式呢
你数据结构有了解过吗
是基于C还是Java
如何实现双层(双向)链表呢
有做过一些数据结构的联系么
后续二面是进入现场
感觉自己基础特别薄弱,基础问题都不清楚,专业课程没有具体学习,数学基础一般,唉😔!~