[通用]计算机经典面试题基础篇Day3

[通用]计算机经典面试题基础篇Day3

1、请说明mysql的两种主要引擎

MySQL有多种存储引擎,但最常见的两种主要引擎是InnoDB和MyISAM。

2、说一下mysql这两种引擎的使用场景

MySQL的两种主要引擎,InnoDB和MyISAM,各自适用于不同的使用场景,以下是它们的主要用途和适合的应用场景:

  1. InnoDB引擎:
  • 事务支持:InnoDB是MySQL的默认事务存储引擎,因此它非常适合需要事务支持的应用程序,例如电子商务网站、银行系统、订单处理系统等。它确保了数据的一致性和完整性,以及事务的原子性、一致性、隔离性和持久性(ACID属性)。
  • 高并发性能:InnoDB支持行级锁定,这使得多个并发用户可以同时访问同一表的不同行,从而提高了并发性能。这对于具有大量同时在线用户的应用程序非常重要。
  • 外键约束:如果您的数据库需要维护表之间的关系和引用完整性,InnoDB是更好的选择,因为它支持外键约束。

适合的应用场景:

  • 事务性应用程序
  • 高并发读写操作
  • 需要外键支持的应用
  • 数据完整性和一致性要求较高的应用
  1. MyISAM引擎:
  • 读密集应用:MyISAM在处理大量读操作时表现得相当不错。因为它使用表级锁定,所以在并发写入操作较少的情况下,适合用于读取密集型应用程序,如博客、新闻网站、数据仓库等。
  • 不需要事务支持:MyISAM不支持事务,因此对于不要求ACID属性的应用程序,可以考虑使用它。如果数据的一致性和完整性对应用程序不是关键问题,而且性能是首要考虑因素,那么MyISAM可能是一个选择。
  • 临时表:MyISAM通常用于创建临时表,用于存储中间结果或缓存数据。

适合的应用场景:

  • 读密集型应用
  • 简单的查询和报表生成
  • 不需要事务支持的应用
  • 临时表和缓存需求

3、你认为mysql的优化方式都有什么

  1. 合适的索引设计
  • 创建适当的索引可以大大提高查询性能。确保表中的字段经过良好选择和规划,以便在常见的查询中使用索引。
  1. 查询优化
  • 使用合适的SQL查询,避免使用SELECT *,只选择所需的列,尽量减少数据传输。
  • 使用EXPLAIN来分析查询执行计划,以便优化查询。
  1. 硬件优化
  • 使用高性能硬件,包括快速磁盘、大内存和多核处理器,以提高数据库服务器的性能。
  • 使用SSD来加速磁盘I/O操作,以减少读写延迟。
  1. 调整缓冲区
  • 调整MySQL的缓冲区参数,如缓冲池大小、查询缓存等,以确保数据在内存中得到良好的管理和访问。
  1. 分区和分表
  • 对于大型表,可以考虑分区或分表,将数据分割成更小的部分,以提高查询性能。
  1. 定期维护
  • 定期进行数据库维护,包括优化表、重建索引、清理不再使用的数据,以保持数据库性能。
  1. 使用合适的存储引擎
  • 根据应用需求选择合适的存储引擎,如InnoDB或MyISAM,以满足事务性或读写需求。
  1. 分布式架构
  • 对于高负载应用程序,考虑采用分布式数据库架构,如MySQL集群或分片,以实现水平扩展。
  1. 查询缓存和缓存层
  • 使用查询缓存或缓存层,如Memcached或Redis,以减轻数据库服务器的负载。
  1. 监控和日志分析
  • 使用监控工具和日志分析来跟踪数据库性能,及时发现并解决问题。
  1. SQL优化器提示
  • 使用SQL_HINTS来指导MySQL优化器执行查询。这可以通过索引提示、查询缓存提示等来实现。
  1. 连接池管理
  • 使用连接池来管理数据库连接,以减少连接开销和提高并发性能。
  1. 优化表结构
  • 考虑使用合适的数据类型、避免NULL值、规范化数据,以减少数据存储和提高查询性能。
  1. 备份和恢复策略
  • 建立有效的备份和恢复策略,以防止数据丢失或硬件故障。

4、什么查询条件的索引会失效

  1. 使用函数或表达式:如果在查询条件中使用了函数或表达式,通常会导致索引失效。例如,WHERE YEAR(date_column) = 2023,这会使索引失效,因为数据库无法直接使用索引来查找年份。
  2. 对索引列进行了类型转换:如果查询中对索引列进行了类型转换,比如将整数列强制转换为字符列,索引可能会失效。
  3. 使用通配符在索引列开头进行模糊搜索:当在索引列的开头使用通配符(如LIKE '%keyword')时,索引通常不会被有效使用。通配符在开头会使索引失效,因为数据库无法快速定位匹配项。
  4. 使用NOT操作符:使用NOT操作符来否定查询条件时,索引可能会失效。例如,WHERE NOT column_name = 'value'
  5. 使用OR操作符:当使用OR操作符连接多个条件时,如果其中一个条件无法使用索引,整个查询可能会导致索引失效。
  6. 使用不等于操作符(!=或<>):在某些情况下,使用不等于操作符进行过滤可能导致索引失效,特别是当不等于操作符涵盖大部分数据时。
  7. 数据分布不均匀:如果数据在索引列上分布不均匀,即某些值出现频率非常高,而其他值很少出现,那么对于频繁出现的值,索引可能不会被使用。
  8. 索引列参与了计算:如果查询中的条件涉及到对索引列进行计算,索引可能会失效。例如,WHERE column1 * 2 = 10
  9. 表太小:对于非常小的表,使用索引可能不会提供明显的性能提升,因为数据库引擎可能选择全表扫描来更快地获取数据。
  10. 数据类型不匹配:如果查询条件中的数据类型与索引列的数据类型不匹配,索引可能会失效。

5、说一下mysql的索引分类

  1. B树索引(B-tree Index)
  • B树索引是MySQL中最常见的索引类型,也是默认的索引类型。
  • 它适用于等值查询、范围查询和排序操作。
  • B树索引适用于大多数数据类型,包括数字、字符串和日期等。
  • InnoDB存储引擎的默认索引类型是B树索引。
  1. 哈希索引(Hash Index)
  • 哈希索引适用于等值查询,即只能用于精确匹配。
  • 它在特定场景下可以提供非常快的查询速度,但不适用于范围查询或排序操作。
  • 哈希索引通常用于Memory存储引擎中,不支持持久性存储。
  1. 全文索引(Full-Text Index)
  • 全文索引适用于文本数据,用于实现全文搜索。
  • 它可以处理包含单词的文本字段,并支持高级搜索和排序功能。
  • MyISAM和InnoDB存储引擎都支持全文索引,但MyISAM的全文索引功能更为强大。
  1. 空间索引(Spatial Index)
  • 空间索引适用于处理地理空间数据,如坐标点、线、面等。
  • 它支持空间几何操作,如包含、相交、距离计算等。
  • MySQL使用R-tree索引来实现空间索引,支持InnoDB和MyISAM存储引擎。
  1. 前缀索引(Prefix Index)
  • 前缀索引是对列的前N个字符创建的索引,而不是整个列。
  • 它可以用于减小索引的大小和提高查询性能,但可能会牺牲精确性。
  • 前缀索引通常用于处理较长的文本列。
  1. 复合索引(Composite Index)
  • 复合索引是将多个列组合到一个索引中,以支持多列查询。
  • 它可以提高多列条件查询的性能,但要谨慎设计,以确保最佳的性能。
  • 复合索引的顺序和选择哪些列非常重要。
  1. 唯一索引(Unique Index)
  • 唯一索引确保索引列中的值是唯一的,不允许重复值。
  • 唯一索引可用于实现主键或唯一性约束。
  • 在插入或更新数据时,MySQL会检查唯一索引以确保数据的唯一性。
  1. 主键索引(Primary Key Index)
  • 主键索引是一种特殊的唯一索引,用于唯一标识表中的每一行。
  • 每个表只能有一个主键索引,通常与主键列一起定义。
  • 主键索引是表的物理排序顺序,因此查询主键列通常非常高效。

6、列举几个linux的使用命令

  1. ls:列出当前目录中的文件和子目录。
ls
  1. pwd:显示当前工作目录的路径。
pwd
  1. cd:更改当前目录。
cd /path/to/directory
  1. mkdir:创建新目录。
mkdir new_directory
  1. touch:创建新文件或更新文件的时间戳。
touch filename
  1. cp:复制文件或目录。
cp source_file destination
  1. mv:移动文件或重命名文件。
mv old_name new_name
  1. rm:删除文件或目录。
rm filename
  1. cat:显示文件内容。
cat filename
  1. less:逐页查看文件内容。
less filename
  1. head:显示文件的前几行。
head -n 10 filename
  1. tail:显示文件的最后几行。
tail -n 10 filename
  1. grep:在文件中搜索文本模式。
grep pattern filename
  1. ps:显示正在运行的进程。
ps aux
  1. kill:终止运行中的进程。
kill process_id
  1. ifconfig:显示网络接口信息。
ifconfig
  1. ping:测试与远程主机的网络连接。
ping remote_host
  1. ssh:通过SSH协议远程登录到另一台计算机。
ssh username@hostname
  1. top:实时显示系统的资源使用情况和运行中的进程。
top
  1. tar:创建或解压归档文件(通常是.tar.gz或.tar.bz2文件)。
tar -zxvf archive.tar.gz

7、linux中 > 和 >> 的区别,常用查看日志命令

在Linux中,>>> 是用于重定向输出的特殊符号,它们有以下区别:

  1. >
  • > 符号用于将命令的输出重定向到一个文件,如果目标文件已存在,则会覆盖原有内容。
  • 例如:command > file 将命令的输出写入到名为 file 的文件中。如果文件不存在,则会创建一个新文件,如果文件已存在,则会清空原有内容并写入新的输出。

示例:

echo "Hello, World!" > output.txt

这会创建一个新文件 output.txt,并将字符串 “Hello, World!” 写入其中。

  1. >>
  • >> 符号也用于将命令的输出重定向到一个文件,但与 > 不同的是,如果目标文件已存在,>> 会将新的输出追加到现有内容的后面。
  • 例如:command >> file 将命令的输出追加到名为 file 的文件的末尾。

示例:

echo "Appended text." >> output.txt

这会在已存在的 output.txt 文件末尾追加文本 “Appended text.”。

常用查看日志的命令:

  1. cat
  • cat 命令用于显示文件的内容。可以用于查看小型文件的内容。

示例:

cat filename
  1. less
  • less 是一个分页查看器,可以用于逐页查看大型文件,同时提供搜索和浏览功能。

示例:

less filename

less 中,可以使用箭头键上下滚动,按 / 键进行搜索,按 q 键退出。

  1. tail
  • tail 命令用于显示文件的末尾几行,默认情况下显示最后10行。

示例:

tail filenameb

可以使用 -n 选项指定显示的行数,例如 tail -n 20 filename 会显示最后的20行。

  1. head
  • head 命令用于显示文件的开头几行,默认情况下显示前10行。

示例:

head filename

可以使用 -n 选项指定显示的行数,例如 head -n 20 filename 会显示前20行。

8、说一下你对scp命令的理解

SCP(Secure Copy Protocol)是一个用于在不同系统之间安全复制文件和目录的命令行工具。它建立在SSH协议之上,提供了数据加密和认证,因此数据传输是安全的。

SCP命令的基本语法如下:

scp [options] source destination
  • source:要复制的文件或目录的源路径。可以是本地文件系统路径或远程主机上的文件路径。如果是远程路径,通常以user@host:source_path的形式指定,其中user是远程主机上的用户名,host是远程主机的主机名或IP地址,source_path是源文件或目录的路径。
  • destination:复制的目标路径。同样,可以是本地文件系统路径或远程主机上的路径。如果是远程路径,也以user@host:destination_path的形式指定。

常用的SCP选项包括:

  • -r:递归复制,用于复制目录及其内容。
  • -P:指定远程SSH端口号。
  • -i:指定用于身份验证的私钥文件。
  • -v:启用详细的输出,用于调试目的。

SCP的一些常见用途包括:

  1. 从本地系统向远程主机复制文件或目录
scp local_file user@remote_host:remote_path
  1. 从远程主机复制文件或目录到本地系统
scp user@remote_host:remote_file local_path
  1. 在远程主机之间复制文件或目录
scp user1@remote_host1:source_path user2@remote_host2:destination_path
  1. 使用不同的SSH端口号
scp -P 2222 local_file user@remote_host:remote_path

9、说一下你对tar命令的理解

tar(tape archive)是一个常用的命令行工具,用于在Unix和Linux系统中创建、查看、提取和压缩文件和目录的归档文件。tar命令通常用于将多个文件和目录打包成单个文件,以便进行备份、传输或存档。以下是我对tar命令的理解:

tar命令的基本语法如下:

tar [选项] [目标] []

常见的tar选项包括:

  • -c:创建新的归档文件。
  • -x:从归档文件中提取文件。
  • -t:列出归档文件中的文件列表。
  • -f:指定归档文件的名称。
  • -v:显示详细信息,通常用于显示提取或创建的文件列表。
  • -z:使用gzip进行压缩/解压缩。
  • -j:使用bzip2进行压缩/解压缩。
  • -C:在提取文件时指定目标目录。

一些常见的tar命令示例:

  1. 创建归档文件
tar -cvf archive.tar file1 file2 directory1

这将创建名为archive.tar的归档文件,包含了file1file2directory1

  1. 提取归档文件
tar -xvf archive.tar

这将从archive.tar中提取所有文件和目录。

  1. 查看归档文件中的内容
tar -tvf archive.tar

这将列出archive.tar中的文件列表。

  1. 使用gzip压缩
tar -czvf archive.tar.gz directory1

这将使用gzip对directory1进行压缩,并创建名为archive.tar.gz的归档文件。

  1. 解压缩gzip压缩的归档文件
tar -xzvf archive.tar.gz

这将解压缩archive.tar.gz并提取其中的文件。

tar命令非常有用,可以用于备份、迁移文件、创建软件分发包等任务。它是Unix和Linux系统中的标准工具之一,具有丰富的选项和功能,可根据需要进行配置。要了解更多详细信息,可以查看tar命令的手册页,使用man tar命令。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/74540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用python进行视频下载并界面播放快速下载素材

工具&#xff1a;python designer&#xff08;python自带&#xff09;:UI界面设计工具 VLC&#xff1a;视频播放工具 需要的库如下&#xff1a; import os,platform os.environ[PYTHON_VLC_MODULE_PATH] "./vlc-3.0.14" import vlc from 脚本 import Player from …

通过位运算打多个标记

通过位运算打多个标记 如何在一个字段上&#xff0c;记录多个标记&#xff1f; 如何在一个字段上&#xff0c;记录不同类型的多个标记&#xff1f; 如何用较少的字段&#xff0c;记录多个标记&#xff1f; 如何在不增加字段的要求下&#xff0c;记录新增的标记&#xff1f; 在实…

Oracle数据库连接之TNS-03505_无法解析服务名异常

在进行数据库开发的时候&#xff0c;通常需要连接Oralce数据库&#xff0c;在进行连接时&#xff0c;经常性的会提示TNS-03505: Failed to resolve name&#xff08;无法解析服务名&#xff09;&#xff0c;从而导致无法连接到数据库实例&#xff0c;那么通过本文对造成该问题的…

SpringMVC之文件上传下载以及jrebel的使用

目录 一、文件上传 1.1 导入依赖 1.2 配置文件上传解析器 1.3 配置服务器存放文件地址 1.3.1 点击编辑Configurations 1.3.2 将项目部署至tomcat服务器上 1.3.3 配置相对路径 1.4 导入PropertiesUtil工具类 1.5 编写resource.properties 1.6 添加sql 1.7 编写PageCo…

GIT高级使用技巧

GIT高级使用技巧 导出GIT日志到文件 按照 <哈希> - <作者名> <作者邮箱地址> - <作者日期> : <commit描述> 的格式导出日志 git log --prettyformat:"%H - %an <%ae> - %ad : %s" master > log.txt筛选日志并按照从旧到新…

2022年12月 C/C++(七级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:走迷宫 一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。 给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。 时间限制:1000 …

pandas笔记:显示中间的省略号

比如我们有这样一个数据&#xff08;Geolife中的数据&#xff09; 如何把中间的省略号完整地输出呢&#xff1f; pd.set_option(display.max_rows, None) data

机器人中的数值优化(十五)——PHR增广拉格朗日乘子法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…

Stable Diffusion 免费升级 SDXL 1.0,哪些新特性值得关注?体验如何?5 分钟带你体验!

一、引言 7 月 26 日&#xff0c;Stability AI 发布了 SDXL 1.0&#xff0c;号称目前为止&#xff0c;最厉害的开放式图像生成大模型。 它到底有没有网上说的那么炸裂&#xff1f;真的已经实现了像 midjourney 一样 靠嘴出图 的功能吗&#xff1f;相对于之前的版本&#xff0c;…

专业的视觉特效处理包,FxFactory 8 Pro for Mac助您打造精彩视频

FxFactory 8 Pro for Mac是一款强大的视觉特效处理包&#xff0c;专门为Mac用户设计。它集成了超过200种高质量的视觉效果和过渡效果&#xff0c;可以轻松地应用于各种视频项目中。该软件提供了一个直观的界面&#xff0c;用户可以通过简单拖放操作将特效应用到视频片段上。它支…

lv4 嵌入式开发-3 标准IO的读写

目录 1 标准I/O – 读写流 2 标准I/O – 按字符输入 3 标准I/O – 按字符输出 4 标准I/O – 思考和练习 5 标准I/O – 按行输入 6 标准I/O – 按行输出 7 标准I/O – 思考和练习 1 标准I/O – 读写流 流支持不同的读写方式: 读写一个字符&#xff1a;fgetc()/fputc()一…

oracle将一个用户的表复制到另一个用户

注&#xff1a;scott用户和scott用户下的源表&#xff08;EMP&#xff09;本身就有&#xff0c;无需另行创建。 GRANT SELECT ON SCOTT.emp TO BI_ODSCREATE TABLE ODS_EMP AS SELECT * FROM SCOTT.emphttp://www.bxcqd.com/news/77615.html SQL语句查询要修改密码的用户…

逻辑回归Logistic

回归 概念 假设现在有一些数据点&#xff0c;我们用一条直线对这些点进行拟合&#xff08;这条直线称为最佳拟合直线&#xff09;&#xff0c;这个拟合的过程就叫做回归。进而可以得到对这些点的拟合直线方程。 最后结果用sigmoid函数输出 因此&#xff0c;为了实现 Logisti…

Mybatis核心对象及工作流程

目录 一、mybatis核心对象 &#xff08;1&#xff09;SqlSession对象直接操作数据库 &#xff08;2&#xff09;SqlSession对象通过代理对象操作数据库 二、mybatis工作流程 一、mybatis核心对象 &#xff08;1&#xff09;SqlSessionFactoryBuilder SqlSession工厂构建者对…

Fine-tuning Large Enterprise Language Models via Ontological Reasoning

本文是LLM系列文章&#xff0c;针对《Fine-tuning Large Enterprise Language Models via Ontological Reasoning》的翻译。 基于本体论推理的大型企业语言模型微调 摘要1 引言2 微调LLM的神经符号管道3 通过概念证明进行初步验证4 结论 摘要 大型语言模型&#xff08;LLM&am…

创建简单的 Docker 数据科学映像

推荐&#xff1a;使用NSDT场景编辑器快速搭建3D应用场景 为什么选择 Docker for Data Science&#xff1f; 作为一名数据科学家&#xff0c;拥有一个标准化的便携式分析和建模环境至关重要。Docker 提供了一种创建可重用和可共享的数据科学环境的绝佳方法。在本文中&#xff…

Openharmony3.2 源码编译(ubuntu 22.04) 过程记录

OS: ubuntu 22.04 x64 1. 下载源码 1.1 安装码云repo工具 sudo apt install python3-pip git-lfsmkdir ~/bin curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo chmod ax ~/bin/repo pip3 install -i https://repo.huaweicloud.com/repository/p…

详解TCP/IP协议第二篇:OSI参考模型详解

文章目录 写给自己的话 一:协议分层与OSI参考模型 二:通过对话理解分层 三:OSI参考模型

飞腾 kylin-server v10 arm64 aarch64 anaconda3 conda 非法指令 Illegal instruction 笔记

原因&#xff1a; chenghlee commented on Jun 15, 2021 Its likely related to the compiler options used to build the linux-aarch64 packages on defaults; basically, Anaconda uses options that target the server-class Neoverse N1/N2 microarchitecture, rather th…

树的引进以及二叉树的基础讲解——【数据结构】

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 当我们学习完前面的数据结构&#xff0c;难度也就会上升&#xff0c;但是这个也是非常重要的数据结构。今天我们来学习一种新的数据类型——树。 目录 树的概念以及结构 树的概念 树的相关概念 树的表示 树在实…