2023秋招大厂经典面试题及答案整理归纳(1-20)校招必看

目录

前言

1. 使用mysql索引都有哪些原则?索引什么数据结构?

1)、 对于查询频率高的字段创建索引;

2)、 对排序、分组、联合查询频率高的字段创建索引;

3)、 索引的数目不宜太多

4)、 若在实际中,需要将多个列设置索引时,可以采用多列索引

5)、 选择唯一性索引

6)、 尽量使用数据量少的索引

7)、 尽量使用前缀来索引

8)、 删除不再使用或者很少使用的索引.

2. Mysql有哪些存储引擎?请详细列举其区别?

3. 设计高并发系统数据库层面该如何设计?数据库锁有哪些类型?如何实现

1). 分库分表:

2). 读写分离:

3). 归档和操作表区分:

4). 索引啊之类的创建:

4. 数据库事务有哪些?

5. Oracle常用函数有哪些?

6.Sql中哪些情况可能不会走索引?

7. 讲讲分布式唯一 ID?

8. NIO和IO的区别?

9. Redis内存数据上升到一定大小会执行数据淘汰策略,Redis提供了哪6种数据淘汰策略?

10. 请描述 MyISM 和 InnoDB?

11. 请描述实时队列?

12. DB的特性和隔离级别?

13. ICMP是什么协议,处于哪一层?

14. 讲一下NIO和网络传输.

15. 内存泄漏

16. 请描述平衡二叉树.

17. 请问溢岀的原因?

18. 输入http://www.baidu.com在浏览器的完整过程,越详细越好。

19. 请描述C/C++程序的内存分区?

20. 快速排序的思想、时间复杂度、实现以及优化方法?


前言

2023秋招已经打响,本系列文章将会为大家整理500道大厂常考面试题及答案,不定期更新大厂面经,供大家参考与借鉴。每日更新20道,欢迎大家点赞收藏,以及在评论区分享自己的经典面试题。


1. 使用mysql索引都有哪些原则?索引什么数据结构?


1)、 对于查询频率高的字段创建索引;

2)、 对排序、分组、联合查询频率高的字段创建索引;

3)、 索引的数目不宜太多


原因:a、每创建一个索引都会占用相应的物理控件;

b、过多的索引会导致insert, update、delete语句的执行效率降低;

4)、 若在实际中,需要将多个列设置索引时,可以采用多列索引

如:某个表(假设表名为Student),存在多个字段(StudentNo, StudentName, Sex, Address, Phone, BirthDate),其中需要71 StudentNo, StudentName 字段进行查询,对 Sex字段进行分组,对BirthDate字段逹行排序,此时可以创建多列索引index index_najne (StudentNo, StudentName, Sex, BirthDate) ;#index_najne 为索引名

在上面的语句中只创建了一个索引,但是对4个字段都赋予了豪引的功能。 创建多列索引,需要遵循BTree类型,即第一列使用时,才启用索引。

在上面的创建语句中,只有mysql语句在使用到StudentNo字段时,索引才会被启用。

如: select * from Student wheie StudentNo = 1000; #使用到了 StudentNo 字段,索引被启用。

以使用explain检测索引是否被启用如:explain select * from Student where StudentNo = 1000;

5)、 选择唯一性索引

唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生 表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的 信息。如果使用姓名的话,可能存 在同名现象,从而降低查询速度。

6)、 尽量使用数据量少的索引

如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR (100)类型的 字段进行全文检索 需要的时间肯定要比对CHAR (10)类型的字段

需要的时间要多。

7)、 尽量使用前缀来索引

如果索引字段的值很长,最好使用催的前缀来索引。例如,TEXT和BLOG类型的字 段,进行全文检索会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提 高检索速度。

8)、 删除不再使用或者很少使用的索引.

表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再 需要。数据库管理员应当定期找出这些索引,将它们删除,从而减少索引对更新操作 的影响B+ tree树索引,B tree,散列




2. Mysql有哪些存储引擎?请详细列举其区别?

InnoDB:事务型存储引擎,并且有较高的并发读取频率 MEMORY:存储引擎,存放在内存中,数据量小,速度快

Merge:ARCHIVE:归档,有很好的压缩机制


3. 设计高并发系统数据库层面该如何设计?数据库锁有哪些类型?如何实现



1). 分库分表:

同样量的数据平均存储在不同数据库相同表(或不同表)中,减轻单表 压力,如果还是很大,就可以每个库在分多张表,根据hash取值或者其他逻辑判断将 数据存储在哪张表中

2). 读写分离:

数据库原本就有主从数据库之分,查询在从服务器増删改在主服务器

3). 归档和操作表区分:

建一张归档表,将历史数据放入,需要操作的表数据单独存储

4). 索引啊之类的创建:

对于数据量很大,百万级别以上的单表,如果増删改操作不频 繁的话可以创建bitMap索引,速度要快得多

(1). 共享锁:要等第一个人操作完,释放锁,才能操作

(2). 更新锁:解决死锁,别人可以读,但不能操作

(3). 排他锁:读写都被禁用

(4). 意向锁(xlock):对表中部分数据加锁,查询时,可以跳过

(5). 计划锁:操作时,别的表连接不了这张表




4. 数据库事务有哪些?


原子性:所有操作要么全部成功,要么全部失败

—致性:例如转账,一个事务执行前和执行后必须一致 隔离性:防止脏读,重复读问题

持久性:永久性提交数据応



5. Oracle常用函数有哪些?


Concat:字符串拼接,或者|| KConcat:字符串拼接,或者|| Instr:指定字符串位置

Length:长度

Trim:去空格

Lower:小写

Upper:大写

Nvl:判断空

Replace:替换

Substr:截取

Floor:向下取整

To_nmber:

To_char:

To_date:

Dec

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值