sfjc面试记录

1、MySQL组件和工作原理

  MySQL主要组件:

  ① Connectors:与客户端工具和其他编程语言中的sql 语句进行交互

  ② Connection Pool (连接池):管理缓冲用户连接,线程处理等需要缓存的需求

  ③  Management Serveices & Utilities:处理器/系统管理和控制工具

  ④ SQL Interface (SQL接口):接受用户的SQL命令,并且返回用户需要查询的结果。

  ⑤ Parser (解析器):SQL命令传递到解析器的时候会被解析器验证和解析。

    主要功能:

    a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,后面SQL语句的传递和处理就是基于这个结构的

    b.  如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的,语句将不会继续执行下去

  ⑥ Optimizer (查询优化器,可以利用explain语法查询SQL语句的执行计划)

    SQL语句在查询之前会使用查询优化器对查询进行优化(产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果) 他使用的是“选取-投影-联接”策略进行查询。  

  ⑦ Cache和Buffer (查询缓存)

  ⑧ Engine (存储引擎)、

  工作原理:

  1)连接器(connector)拿到程序请求,将请求暂时存在连接池(connection pool)中,并有处理器(Management Sercice&Utilities)管理。

  2)当该请求从等待队列进入处理队列,管理器(Management Service&Utilities)会将该请求丢给SQL接口(SQL interface)

  3)SQL接口(SQL interface)接收到请求后,它会将请求进行hash处理并与缓存(Cache和Buffer)中的结果进行对比,若匹配则返回缓存(Cache和Buffer)中的结果,否则继续完整流程。

  4)SQL接口(SQL interface)把请求传递给解析器(Parser),解析器(Parser)判断SQL是否正确,正确则转换为数据结构,进行后续步骤,错误中断执行,返回

  5)解析器(Parser)将数据结构传递给优化器(Optimizer),优化器(Optimizer)会产生多种执行计划,选择最优的执行计划执行

  6)确定最优的执行计划后,SQL会交给存储引擎(Engine)来处理,存储引擎从存储设备中取得相应数据,原路返回给程序

  事务的隔离级别

  数据库默认隔离级别:  mysql ---repeatable;oracle、sql server ---read commited

  在MySQL标准中定义了四种隔离级别:

       READ UNCOMMITTED(读未提交):事务中的修改即使未提交也是对其它事务可见

       READ COMMITTED(读提交):事务提交后所做的修改才会被另一个事务看见,可能产生一个事务中两次查询的结果不同。

       REPEATABLE READ(可重读):只有当前事务提交才能看见另一个事务的修改结果。解决了一个事务中两次查询的结果不同的问题。

       SERIALIZABLE(串行化):只有一个事务提交之后才会执行另一个事务。

  附:参考博客:

    https://www.cnblogs.com/daijw/p/9250331.html 

    https://cloud.tencent.com/developer/article/1347090 

    https://www.cnblogs.com/xiaohaillong/p/6079551.html

2、MySQL有哪些引擎

  Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB

  常用引擎有:

  InnoDB引擎

    1)支持事务,实现了标准的4个事务隔离级别

    2)支持外键、行级锁等数据库的高级特性

    3)支持每个表的数据和索引存放在单独文件中(innodb_file_per_table)

    4)当需要使用数据库的事务时,该引擎就是首选。由于锁的粒度小,写操作是不会锁定全表的。所以在并发度较高的场景下使用会提升效率的

    5)索引基于聚簇索引建立,对于主键查询有较高性能

    6)使用的B+索引

  MyISAM引擎

    1)不支持事务和行级锁

    2)MyISAM对整张表加锁而不是对行,所以不适用写操作比较多的场景

    3)性能较InnoDB更好,执行速度更快

    4)不支持单表一个文件,会将所有的数据和索引内容分别存在两个文件中

    5)如果表的读操作远远多于写操作时,并且不需要事务的支持的。可以将MyIASM作为数据库引擎的首选

    6)使用的B+索引

  Memory引擎

    1)数据存储在内存中,不消耗IO

    2)存储数据速度较快但不会被保留,一般作为临时表的存储被使用

3、数据库一般用什么字段作为索引
4、mybatis工作原理
5、引入小公司开发的开源组件,产生了bug怎么办?当初怎么考虑的?
6、Linux,查看进程用了哪些端口号,如何查看建立的连接
7、Linux上可以生成Excel文件么
8、如何在jvm启动时提高某个应用的内存
9、数据库优化
10、kafka原理
11、对springboot有哪些了解?用过哪些注解。
12、springboot和spring的区别
13、springboot集成mybatis,如何开启驼峰命名法
14、了解过哪些新技术
15、long类型的字段,传到前台后面出现00怎么解决
16、将哪些数据缓存到redis里面,用户更改缓存的数据怎么办?

17、你参数与了项目的重构,基于什么考虑重构呢?你们项目重构前端使用了angular,花了多长时间学习呢?

原文地址:https://www.cnblogs.com/codewy/p/11574530.html