网络数据库后端框架相关面试题

面试是工作的第一步,面试中面试官所提出的问题千奇百怪,其中关于网络数据库后端框架面试题汇总如下:

1,关系型数据库和非关系型数据库的区别

关系型数据库主要有 MYsql Iracle SQLSever等

相对于非关系型数据库的优势为查询效率高,有通用的sql 可以进行复杂的查询,支持事务,数据相对于安全。

支持事务: 可以用SQL语句方便的在一个表以及多个表之间做复杂的数据查询。由于有事务的支持,使得对于安全性能很高的数据访问要求得以在此实现。

非关系型数据库 主要有MongoDB Redis等

优点为性能高, 可扩展

NOSQL是基于键值对的,可以想象成表中主键和值的对应关系,而不是需要经过SQL层的解析,所以性能非常高。同样基于键值对的存储,数据之间没有耦合性,所以非常容易进行水平扩展

其中MongoDB的使用场景为:数据不是特别的重要,数据表的结构变化较为频繁,数据量也特别大,数据并发性也特别高,数据结构比较特别。这些情况下使用MongoDB比较合适。

2 redis数据库有哪几种数据结构

redis数据库主要有以下几种数据结构:string 字节;hash 哈希; list 列表; set 集合; zset 

3 MongoDB数据库有哪些优点

 第一 模式自由,面向集合存储,项目增删字段不影响程序的运行

第二 具有丰富的查询表达式 支持动态查询(根据特定条件来执行查询)来满足项目的数据查询需求

第三 具有良好的索引支持,文档内嵌套对象和数组,都可以创建索引

第四 支持二进制数据存储,可已经图片视频等文件转换成二进制流存储起来

第五 以内存映射为存储引擎, 大幅度提升性能

4 SQL查询优化有哪些

使用limit 对结果的记录进行限定

避免selece * 的使用,将需要查找的字段列出来

使用连接(join)来替代子查询

拆分大的delete或者insert语句

可通过开启慢查询日志来找出比较慢的SQL

不做列运算: SELECT ID WHERE AGE + 1 = 10 , 任何对列的操作都将导致表扫描,它包括数据库教程函数,计算表达式等,查询时要尽可能将操作移至等号右边

sql 语句尽量简单,一天sql只能在cpu运算;大语句拆小语句,减少锁时间;一条大sql可以堵死整个库

OR改写成IN OR的效率是O(n)级别 IN 的效率是O(logn)级别, in的个数建议控制在200以内

不用函数和触发器, 在应用程序实现

避免%xxx式查询

少用join

使用同类型进行比较, 比如用‘123’和‘123’, 123和123

尽量避免在WHERE子句中使用!= 和<>操作符 ,这样引擎将放弃使用索引而是进行全表扫描

对于连续数值 使用BETWEEN不用IN

列表数据不要拿全表,使用limit来分页,每页数量不要太大

5 什么是数据库触发器

触发器(Tigger)是用户定义在关系表上的一类由事件驱动的特殊过程。

触发器保存在数据库服务器中。

任何用户对表的增删改查均由服务器自动激活相应的触发器。

触发器可以实施更为复杂的检查和操作,具有更精细和更强大的数据控制能力。

6 关于redis发布订阅你了解哪些

本质就是设计模式中的观察者模式, 类似主播上线, 发送通知 ,订阅(关注)的人收到此消息执行不同的行为

7 请你说说mysql数据库中常见的函数有哪些,作用是什么

常见的函数主要有

字符串函数

其中包括 

char_length():返回字符串的长度,字符串的字符数

length():也是返回字符串的长度, 字符串的字节数

substring(): 从字符串中提取字符串,它可以根据指定的起始位置和长度来截取原始字符串的一部分

SELECT SUBSTRING('Hello World', 1, 5); -- 返回结果为 'Hello'

concat():将两个或者多个字符串连接起来,生成一个新的字符串

SELECT CONCAT('Hello', ' ', 'World'); -- 返回结果为 'Hello World'

TRIM():用于删除字符串的开头和结尾的空格(或者其他指点字符)

SELECT TRIM('   Hello   '); -- 返回结果为 'Hello'
SELECT TRIM(LEADING '0' FROM '0008675309'); -- 返回结果为 '8675309'
SELECT TRIM(BOTH ',' FROM ',,,Hello,,,'); -- 返回结果为 'Hello'

数学函数

其中包括

ABS():返回一个数的绝对值

SELECT ABS(-10); -- 返回结果为 10
SELECT ABS(5.5); -- 返回结果为 5.5
SELECT ABS(0); -- 返回结果为 0

CEIL():用于返回大于或等于给定值的最小整数值,也就是向上取整

SELECT CEIL(5.3); -- 返回结果为 6
SELECT CEIL(-3.8); -- 返回结果为 -3
SELECT CEIL(9.0); -- 返回结果为 9

FLOOR():用于返回小于或等于给定数值的最大整数值, 也就是向下取整

SELECT FLOOR(5.3); -- 返回结果为 5
SELECT FLOOR(-3.8); -- 返回结果为 -4
SELECT FLOOR(9.0); -- 返回结果为 9

ROUND():对于一个数进行四舍五入,并返回指定小数位数的结果

SELECT ROUND(5.732, 2); -- 返回结果为 5.73
SELECT ROUND(3.1456, 2); -- 返回结果为 3.15

POW():用于计算一个数的指定次幂

SELECT POW(2, 3); -- 返回结果为 8 (2的3次方)
SELECT POW(5, 2); -- 返回结果为 25 (5的2次方)

日期函数

其中包括

MONTH():提取日期中的月份部分, YEAR()函数同理

SELECT MONTH('2024-06-01'); -- 返回结果为 6
SELECT MONTH('1999-12-31'); -- 返回结果为 12

DAYOFMONTH() 函数用于提取日期中的日份部分

DATADIFF():计算两日期之间的天数差异

SELECT DATEDIFF('2024-06-01', '2024-05-01'); -- 返回结果为 31
SELECT DATEDIFF('2024-12-31', '2024-01-01'); -- 返回结果为 365

DATA_FORMAT():将日期按照指定格式进行格式化

SELECT DATE_FORMAT('2024-06-01', '%Y-%m-%d'); -- 返回结果为 '2024-06-01'
SELECT DATE_FORMAT('2024-06-01', '%W, %M %e, %Y'); -- 返回结果为 'Saturday, June 1, 2024'

DATE_ADD():对日期进行加法运算 sub_date:对日期进行减法运算

SELECT DATE_ADD('2024-06-01', INTERVAL 1 DAY); -- 返回结果为 '2024-06-02'
SELECT DATE_ADD('2024-06-01', INTERVAL 1 MONTH); -- 返回结果为 '2024-07-01'
SELECT DATE_ADD('2024-06-01', INTERVAL 1 YEAR); -- 返回结果为 '2025-06-01'

判断函数

其中包括

IF()和IFNULL

加密函数

其中包括

md5,  password 

聚合函数

sum ,  avg , count,   max,  min

关注我,下期继续分享

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

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

相关文章

【C++集群聊天服务器(一)】|Linux平台资源受限下boost库和muduo网络库源码编译安装

本人使用的服务器是2G2核 ubuntu22.04 前置工作 muduo库源码github仓库地址&#xff1a; muduo WIndows和Linux平台的boost源码包下载(zip是Windows版&#xff0c;tar.gz是Linux版&#xff0c;你也可以去boost官网下载最新版本) Boost C Libraries 由于muduo网络库是基于boo…

C语言| 输出*三角形

分析&#xff1a; ① 输入三角形主要分为两部分&#xff0c; 即输出空格和输出星号&#xff0c;要将它们分开&#xff0c;不用考虑空格数和星号个数之间的关系。 ② 从每行输出的空格个数来看&#xff0c;若总共输出n行&#xff0c;则第i行首先要输出n - i个空格&#xff0c;然…

基于java的CRM客户关系管理系统(二)

目录 第二章 相关技术介绍 2.1 后台介绍 2.1.1 B/S平台模式 2.1.2 MVC 2.1.3 Spring 2.1.4 Hibernate 2.1.5 Struts 2.2 前端介绍 2.2.1 JSP网页技术 2.3 开发工具 2.4 本章小结 前面内容请移步 基于java的CRM客户关系管理系统&#xff08;二&#xff09; 资源…

网络原理-TCP/IP --传输层(UDP)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 今天你敲代码了吗 目录 端口号UDP协议 端口号 我们在学习套接字的时候,涉及到两个概念:IP地址和端口号 IP地址是用来确定主机,这是网络层提供的概念 而端口号就是用来确定主机上的应用程序,就是传输层的概念的…

std::scoped_lock

scope--范围 当创建一个 std::scoped_lock 对象时&#xff0c;它尝试取得其所给互斥量的所有权,即上锁。当控制权离开创建 scoped_lock 对象的作用域时&#xff0c;scoped_lock 会被析构&#xff0c;互斥量随之被释放。 链接

代码随想录35期Day54-JavaScript

Day54题目 ### LeetCode739每日温度 核心思想:今天主要是学会单调栈的使用.找到比元素更大的下一个元素,如果比栈顶元素小就入栈,否则就出栈顶元素,当前元素就是比栈顶元素大的"下一个更大的元素". /*** param {number[]} temperatures* return {number[]}*/ var …

Linuxftp服务003虚拟用户登入

如果基于Vsftpd系统用户访问FTP服务器&#xff0c;系统用户越多越不利于管理&#xff0c;而且不利于系统安全管理&#xff0c;鉴于此&#xff0c;为了能更加的安全使用Vsftpd&#xff0c;需使用Vsftpd虚拟用户方式。 虚拟用户原理&#xff1a; 虚拟用户就是没有实际的真实系统…

CANDela studio新建和编辑服务

服务定义和编辑只能够在CDDT里面进行&#xff0c;思路分为三步&#xff1a; 1、Protocol Services里面添加服务&#xff0c;定义服务的格式、请求和正负响应。 2、根据服务的功能归类到Diagnostic Class Tenplates 3、Variant里面的Supported Diagnostic Classes勾选 然后我…

题目:回答结果(结构体变量传递)

题目&#xff1a;回答结果&#xff08;结构体变量传递&#xff09; There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about …

【2023百度之星初赛】跑步,夏日漫步,糖果促销,第五维度,公园,新材料,星际航行,蛋糕划分

目录 题目&#xff1a;跑步 思路&#xff1a; 题目&#xff1a;夏日漫步 思路&#xff1a; 题目&#xff1a;糖果促销 思路&#xff1a; 题目&#xff1a;第五维度 思路&#xff1a; 题目&#xff1a;公园 思路&#xff1a; 新材料 思路&#xff1a; 星际航行 思路…

Ubuntu基础使用

快捷键&#xff1a; 命令行打开快捷方式&#xff1a;Ctrl Alt T Ctrl l 清屏 截屏&#xff1a; LinuxOS命令&#xff1a; 显示当前工作目录所有内容&#xff1a;ls &#xff08;-a -l、-lh&#xff09; -a 输入全部内容&#xff08;包括隐藏文件&#xff09; -l 竖向展示…

CompassArena 司南大模型测评--代码编写

测试角度 要说测试模型&#xff0c;对咱们程序员来说&#xff0c;那自然是写代码的能力强不强比较重要了。那么下面我们以 leetcode 中的一道表面上是困难题的题目来考考各家大模型&#xff0c;看看哪个才应该是咱们日常写程序的帮手。 部分模型回答 问题部分如下截图&#…

GUI与Web前端:深入剖析与比较

GUI与Web前端&#xff1a;深入剖析与比较 在数字化时代的浪潮下&#xff0c;图形用户界面&#xff08;GUI&#xff09;和Web前端作为人机交互的两大关键领域&#xff0c;各自承载着不同的功能与价值。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;对GUI和Web前…

Linux前奏-预热版本

一、操作系统概述 1.1 了解操作系统的作用 我们所熟知的计算机&#xff0c;也就是电脑&#xff0c;就是由硬件和软件来组成的 硬件&#xff1a;计算机系统中由电子机械&#xff0c;和各种光电元件等组成的各种物理装置的总称 软件是什么呢&#xff1f; 软件&#xff1a;用…

调查问卷和考试系统SurveyKing

什么是 SurveyKing &#xff1f; SurveyKing 是功能更强大的调查问卷、考试系统&#xff0c;很多功能体验超过问卷网、问卷星。支持在线考试/调查问卷/公开查询/题库刷题/投票。 软件特性 &#x1f947; 支持 20 多种题型&#xff0c;如填空、选择、下拉、级联、矩阵、分页、签…

【Java】Java主要知识点目录整理

一、Java SE概述 作者相关文章链接&#xff1a; 1、【Java】JavaSE概述-CSDN博客 Java SE&#xff08;Java Platform, Standard Edition&#xff09;是Java编程语言的标准版&#xff0c;主要用于开发桌面应用程序、控制台应用程序以及一些简单的中小型Web应用。以下是Java S…

QiuDN:新手友好的公益CDN

在数字化的今天&#xff0c;网站的速度将直接影响着用户体验和搜索引擎排名&#xff0c;因此&#xff0c;作为一名网站管理员&#xff0c;我一直在寻找能够提升网站速度的解决方案。在一次偶然的机会中&#xff0c;我了解到了QiuDN&#xff0c;一个公益性质的CDN。听创始人称丘…

Vue3-Ref Reactive toRef toRefs对比学习

响应式数据&#xff1a; Ref 作用&#xff1a;定义响应式变量。 语法&#xff1a;let xxx ref(初始值)(里面可以是任何规定内类型、数组等)。 返回值&#xff1a;一个RefImpl的实例对象&#xff0c;简称ref对象或ref&#xff0c;ref对象的value属性是响应式的。 注意点&am…

使用Python库Matplotlib绘制常用图表类型

使用Python库Matplotlib绘图 一、Matplotlib绘图参数设置1.1 设置分辨率和画布大小1.2 保存图片并设置边缘留白为紧凑型1.3 设置坐标轴标签1.4 画直线设置线宽和颜色1.5 画子图1.5.1 通过figure的add_subplot()画子图1.5.2 通过plt的subplots画子图 二、使用Matplotlib中scatte…

深入解析芯片背后的技术:揭开半导体产业的神秘面纱

引言&#xff1a; 在这个数字化、信息化的时代&#xff0c;芯片已经成为了现代科技发展的重要基石。从智能手机、电脑到汽车、物联网设备&#xff0c;芯片无处不在。然而&#xff0c;对于大多数人来说&#xff0c;芯片背后的技术仍然是一个神秘而遥不可及的领域。本文将深入解…