美团数据开发工程师面试准备

SQL

找出总成绩最高的那个人和所有课程的成绩

select S.ID, S.SNAME, C.ID, C.CNAME, SC.CORE
from S,SC,C
where S.ID=SC.SID and SC.CID=C.ID
limit 10;

找出每门课程都高于80的人

注意:

  • having中的属性必须出现在select中
  • select中的聚合函数不能出现在where中
select S.ID, S.SNAME, min(SC.SCORE)
from S,SC
where S.ID=SC.SID
group by S.ID
having min(SC.SCORE)>80;

left join 和 inner join的区别

参考链接

on和where的区别

以 LEFT JOIN 为例:在使用 LEFT JOIN 时,ON 和 WHERE 过滤条件的区别如下:

  • ON 条件是在生成临时表时使用的条件,它不管 ON 中的条件是否为真,都会返回左边表中的记录;
  • WHERE 条件是在临时表已经生成后,对临时表进行的过滤条件。因为此时已经没有 LEFT JOIN 的含义(必须返回左侧表的记录)了,所以如果 WHERE 条件不为真的记录就会被过滤掉。

InnoDB和MyISAM的区别

参考链接

  • MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持等高级处理,往往被认为只适合小项目;
  • 而InnoDB类型支持事物,以及外部键和行级锁等高级数据库功能。

数据库三大范式

  • 1NF:表中无表
  • 2NF:主键不冗余
  • 3NF:主键不能通过传递依赖决定自己的一部分属性

数据库的事务

事务:一堆操作按照一定顺序排列成的序列,这个序列作为一个整体,其中的操作要么都执行,要么都不执行。

事务的调度方式:

  • 串行:一个一个的按照顺序执行,在cpu中同时只有一个事务在执行。
  • 并行:多个事务同时执行,在cpu中同时可以有多个事务在执行。
  • 并发:将多个事务拆分成一个一个的子任务,然后按照时间片,一个子任务一个子任务的执行,给用户感觉好像多个事务是在同时执行一样,而实际上,这就是子任务的串行。(所谓“假并行,真串行,就是并发。”)

事务的ACID性质:

  • 原子性:事务作为一个整体,不可分割的执行单元。
  • 一致性:数据不会因事务的执行而遭到破坏。
  • 隔离性:多个事务并发执行的结果应与这些事务先后单独执行(串行)的结果一样。
  • 持久性:一个事务一旦完成执行,其结果应当永久的反映在数据库中。

事务的状态变迁图:
在这里插入图片描述

数据库索引的类型

参考链接

  • 普通索引
  • 唯一索引可null
  • 主键索引,不可null
  • 组合索引,循最左前缀
  • 全文索引(查找文本中的关键字,而不是直接与索引中的值相比较)

MySQL优缺点

参考链接
什么是存储过程

什么是存储过程:类似于代码中的自定义函数,用于将常用的SQL语句封装起来,下次直接调用这个存储过程的名称(类似于函数名)。

优点:

  • 存储过程通常有助于提高性能。
  • 存储过程有助于减少应用程序和数据库服务器之间的流量,因为应用程序不必发送多个冗长的SQL语句,而只能发送存储过程的名称和参数。
  • 存储过程将数据库接口暴露给所有应用程序,只能使用他程序授予的适当的权限而不能赋予他权限,而这 也保证了他的安全性。

缺点:

  • 如果使用大量存储过程,那么使用这些存储过程的每个连接的内存使用量将会大大增加。 此外,如果您在存储过程中过度使用大量逻辑操作,则CPU使用率也会增加。
  • 存储过程的构造使得开发具有复杂业务逻辑的存储过程变得更加困难。
  • mysql不允许调试存储过程。
  • 开发和维护存储过程很难。

MySQL索引的优缺点

优点:

  • 通过创建唯一索引,可以保证数据库每一行数据的唯一性
  • 可以大大提高查询速度
  • 可以加速表与表的连接
  • 可以显著的减少查询中分组和排序的时间

缺点:

  • 创建索引和维护索引需要时间,而且数据量越大时间越长
  • 创建索引需要占据磁盘的空间,如果有大量的索引,可能比数据文件更快达到最大文件尺寸
  • 当对表中的数据进行增加,修改,删除的时候,索引也要同时进行维护,降低了数据的维护速度

除了MySQL之外的其他数据库

Oracle
Oracle可以很方便的进行多种不同数据库的整合,对应数据仓库。可移植性好,灵活,方便,可处理较大的数据量。
Neo4j

数据仓库

参考链接

什么是数据仓库:数据库是按照特定的一类需求而设计的,比如厨房用品;而数据仓库是面向一大堆不同需求的总体而设计的,比如整个家庭的用品(厨房用品,洗浴用品,交通工具等等)。

Spark

原理简述-知乎
Spark和Hadoop

HDFS的文件结构

参考链接

Hbase的数据结构

Hbase(Hadoop Database):非结构化数据库,基于列而非行。可以在廉价的PC上搭建起规模化的分布式存储系统。
什么是Hbase
Hbase数据结构-知乎
Hbase数据结构-CSDN

时间戳

TimeStamp,在Hbase中,同一个Cell中的数据按照时间从最近到最远进行排列,且每个数据都是无类型的字节码。

最主要的设计是什么(行键),行键是索引吗

Hbase行键介绍
行键是一行数据的主键,不是索引。

为什么要有列族,只有列不行吗

w3cschool
CSDN

Hadoop简介

Hadoop-百度百科

网络和操作系统

线程和进程的区别

知乎

网络协议

数据结构

动态规划和递归哪个好,区别是什么

动态规划是一种算法思想,有两种实现方式,一种是递归,一种是迭代(循环)
知乎

python常用的5个库

CSDN

算法

常见机器学习算法

  • 决策树
  • SVM
  • KNN
  • K-means
  • 马尔可夫
  • 朴素贝叶斯
  • CNN
  • RNN
  • LSTM
  • GCN

XGBoost

简书
博客园

随机森林

百度百科
知乎

RNN和LSTM区别

CSDN

个人

你觉得书上都是真的吗

你一般通过哪些途径学习新技术

你为什么要做一个任务,你的预期和目的是什么,从产品的角度

遇到困难,你是怎么解决的呢

有没有团队合作的经历

如果团队中意见有分歧怎么办,坚持己见吗

你们有过复盘吗

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值