面了字节的Java后端,其实面试之前是有点慌的,最近一直在准备论文,基本没怎么复习,偶尔帮同学做做题会看一看,基本上都是用到了再去查资料学习。所以字节这次面试称为过客局也不为过。面试完心里拔凉拔凉的,这件事告诉我们的教训是:第一还是要认真复习,多刷刷题,多练练手,编程题因为用了牛客网,根本没用提醒和代码补全,我直接数组定义都没写对;第二就是简历问的很细,最好及时复盘一下,很多知识重在平时积累。下面回顾一下面试问题:
1.先问用过什么数据库,然后问到数据库的索引,让根据抖音的关注列表设计一个数据库结构
当时回答了Mysql,介绍了一下项目用的索引,因为使用的不是很多也差不多忘记了,所以面试官举了个例子让我分析。抖音的关注列表我当时是设计了关注用户的ID和被关注用户的ID、头像、昵称和关注时间戳这几个。考虑到两个ID都是外键,查询需要联表,所以加了头像和昵称,也说了这样会快但是会造成信息不一致。然后面试官问如何加索引,希望得到时间戳排序的结果。
先来科普,索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。索引分为聚簇索引和非聚簇索引两种,聚簇索引 是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。
感觉索引做不了排序,所以就只在ID上加了主键索引,想的是查表也是根据ID作为where条件。排序的话使用order by