为金九银十跳个厂准备啦

203 阅读2分钟

这是我参与更文挑战的第12天,活动详情查看: 更文挑战

准备金九银十跳个厂的朋友,可以开始复习那些常见面试题啦。

一、数据库面试题
1.聚合函数

函数使用方法:select 方法名(字段名)from 表名

获取最大值max(字段名):select max(字段名) as 最大值 from 表名

获取最小值min(字段名):select min(字段名) as 最小值 from 表名

获取平均值avg(字段名):select avg(字段名) as 平均值 from 表名

求和sum(字段名):select sum(字段名) as 和 from 表名

统计记录count(字段名):select count(字段名) as 统计总数 from 表名

如果字段为null,则此字段的数据将不再统计之内;

为了解决上述问题,可使用count(*);

2.去重复

第一种:

两条记录或者多条记录的每一个字段值完全相同,这种情况去重复最简单,用关键字distinct就可以去掉。例:

  SELECT DISTINCT * FROM TABLE

第二种:

两条记录之间之后只有部分字段的值是有重复的,但是表存在主键或者唯一性ID。如果是这种情况的话用DISTINCT是过滤不了的,这就要用到主键id的唯一性特点及group by分组。例:

SELECT * FROM TABLE WHERE ID IN (SELECT MAX(ID) FROM TABLE GROUP BY [去除重复的字段名列表,....])

第三种:

两条记录之间之后只有部分字段的值是有重复的,但是表不存在主键或者唯一性ID。这种情况可以使用临时表,讲数据复制到临时表并添加一个自增长的ID,在删除重复数据之后再删除临时表。例:

//创建临时表,并将数据写入到临时表

SELECT IDENTITY(INT1,1) AS ID,* INTO NEWTABLE(临时表) FROM TABLE

//查询不重复的数据

SELECT * FROM NEWTABLE WHERE ID IN (SELECT MAX(ID) FROM NEWTABLE GROUP BY [去除重复的字段名列表,....])

//删除临时表

DROP TABLE NEWTABLE
二、算法常见面试题
1.冒泡排序

重复地走访过要排序的数列(从小到达排),每次比较相邻两个元素,如果它们的顺序错误就把它们交换过来,越大的元素会经由交换慢慢入到数列的尾端。

时间复杂度为O(n*2)

空间复杂度:只需要保存一个临时变量,其复杂度为:O(1)

image-20210612211813266.png

2.快速排序

在冒泡排序的基础上进行升级,在待排序的数组选取一个元素作为基准,将待排序的元素进行分区,比基准元素大的元素放在一边,比其小的放另一边,递归调用快速排序对两边的元素排序。选取基准元素并分区的过程采用双指针左右交换。

时间复杂度:最小 O(n);最大O(n2);平均O(nlogn)。

image-20210612211908632.png