当前位置: 首页 > news >正文

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

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

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

关注我,下期继续分享

相关文章:

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

面试是工作的第一步&#xff0c;面试中面试官所提出的问题千奇百怪&#xff0c;其中关于网络数据库后端框架面试题汇总如下&#xff1a; 1&#xff0c;关系型数据库和非关系型数据库的区别 关系型数据库主要有 MYsql Iracle SQLSever等 相对于非关系型数据库的优势为查询效率…...

模拟集成电路(6)----单级放大器(共源共栅级 Cascode Stage)

模拟集成电路(6)----单级放大器&#xff08;共源共栅级 Cascode Stage&#xff09; 大信号分析 对M1 V x ≥ V i n − V T H 1 V x V B − V G S 2 V B ≥ V i n − V T H 1 V G S 2 V_{x}\geq V_{in}-V_{TH1}\quad V_{x}V_{B}-V_{GS2}\\V_{B}\geq V_{in}-V_{TH1}V_{GS2} Vx…...

docker以挂载目录启动容器报错问题的解决

拉取镜像&#xff1a; docker pull elasticsearch:7.4.2 docker pull kibana:7.4.2 创建实例&#xff1a; mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/dataecho "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasti…...

MySQL—函数—流程控制函数(基础)

一、引言 接下来&#xff0c;我们就进入函数的最后一个部分&#xff1a;流程函数。而流程控制函数在我们的日常开发过程是很有用的。 流程控制函数在我们 sql 语句当中&#xff0c;经常用来实现条件的筛选&#xff0c;从而提高语句的一个执行效率。 我们主要介绍以下4个流程控…...

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷7(私有云)

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包…...

Jenkins、GitLab部署项目

1、安装JDK 1.1、下载openJdk11 yum -y install fontconfig java-11-openjdk1.2、查看安装的版本号 java -version1.3、配置环境变量 vim /etc/profile在最底部添加即可 export JAVA_HOME/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64 export PATH$JAVA_HOME/…...

21.Redis之分布式锁

1.什么是分布式锁 在⼀个分布式的系统中, 也会涉及到多个节点访问同⼀个公共资源的情况. 此时就需要通过 锁 来做互斥控制, 避免出现类似于 "线程安全" 的问题. ⽽ java 的 synchronized 或者 C 的 std::mutex, 这样的锁都是只能在当前进程中⽣效, 在分布式的这种多…...

Mysql基础学习:mysql8 JSON字段查询操作

文章目录 一、查询JSON中某个属性值为XXX的数据量1、方式一2、方式二 二、查询的JSON中的value并去除双引号 一、查询JSON中某个属性值为XXX的数据量 1、方式一 select count(*)from table_namewhere JSON_CONTAINS(json-> $.filed1, "xxx")or JSON_CONTAINS(jso…...

搭建基于Django的博客系统数据库迁移从Sqlite3到MySQL(四)

上一篇&#xff1a;搭建基于Django的博客系统增加广告轮播图&#xff08;三&#xff09; 下一篇&#xff1a;基于Django的博客系统之用HayStack连接elasticsearch增加搜索功能&#xff08;五&#xff09; Sqlite3数据库迁移到MySQL 数据库 迁移原因 Django 的内置数据库 SQL…...

24年护网工具,今年想参加护网的同学要会用

24年护网工具集 吉祥学安全知识星球&#x1f517;http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247483727&idx1&sndb05d8c1115a4539716eddd9fde4e5c9&chksmc0e47813f793f105017fb8551c9b996dc7782987e19efb166ab665f44ca6d900210e6c4c0281&scene21…...

解决TrueNas Scale部署immich后人脸识别失败,后台模型下载异常,immich更换支持中文搜索的CLIP大模型

这个问题搞了我几天终于解决了&#xff0c;搜遍网上基本没有详细针对TrueNas Scale部署immich应用后&#xff0c;CLIP模型镜像下载超时导致人脸识别失败&#xff0c;以及更换支持中文识别的CLIP模型的博客。 分析 现象&#xff1a;TrueNas Scale安装immich官方镜像应用后&…...

面试高频问题----2

一、进程、线程、协程有什么区别&#xff1f; 1.进程&#xff1a;进程是操作系统中独立运行的程序实例&#xff0c;每个进程都有自己的内存空间和系统资源&#xff1b;进程之间相互独立&#xff0c;每个进程有自己的内存地址空间&#xff0c;一个进程无法直接访问另一个进程的…...

Nginx的配置文件-详细使用说明

Nginx的配置文件是Nginx服务器运行的核心,它决定了Nginx如何响应和处理各种请求。以下是对Nginx配置文件(通常名为nginx.conf)的详细解析,按照常见的结构和配置项进行分类: 1. 全局块 user:指定Nginx运行的用户和用户组。例如:user nginx;worker_processes:指定工作进…...

YOLOv5改进 | 卷积模块 | 提高网络的灵活性和表征能力的动态卷积【附代码+小白可上手】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 轻量级卷积神经网络由于其低计算预算限制了CNNs的深度&#xff08;卷积层数&#xff09;和宽度&#xff08;通道数&#xff09;&#xff0c;…...

23、linux系统文件和日志分析

linux文件系统与日志分析 文件时存储在硬盘上的&#xff0c;硬盘上的最小存储单位是扇区&#xff0c;每个扇区大大小是512字节。 inode&#xff1a;元信息&#xff08;文件的属性 权限&#xff0c;创建者&#xff0c;创建日期等&#xff09; block&#xff1a;块&#xff0c…...

安装VS2017后,离线安装Debugging Tools for Windows(QT5.9.2使用MSVC2017 64bit编译器)

1、背景 安装VS2017后&#xff0c;Windows Software Development Kit - Windows 10.0.17763.132的Debugging Tools for Windows默认不会安装&#xff0c;如下图。这时在QT5.9.2无法使用MSVC2017 64bit编译器。 2、在线安装 如果在线安装参考之前的文章&#xff1a; Qt5.9.2初…...

路由策略实验2

对R7&#xff0c;重发布直连路由 对R2&#xff0c;做双向 对R3同样 先不改优先级 查看&#xff0c;知道所有给R3的路由为151&#xff0c;全部为OSPF。 知道了是错误的&#xff0c;先把3&#xff0c;4之间的线路断掉 接着对R3&#xff0c;让优先级全部回到100&#xff08;displa…...

Linux网络-守护进程版字典翻译服务器

文章目录 前言一、pid_t setsid(void);二、守护进程翻译字典服务器&#xff08;守护线程版&#xff09;效果图 前言 根据上章所讲的后台进程组和session会话&#xff0c;我们知道如果可以将一个进程放入一个独立的session&#xff0c;可以一定程度上守护该进程。 一、pid_t se…...

Python 推导式详解:高效简洁的数据处理技巧

推导式是 Python 提供的一种简洁而强大的语法&#xff0c;用于创建列表、集合和字典。它可以让代码更简洁、更易读&#xff0c;同时提高运行效率。 基本语法 列表推导式 基本语法&#xff1a; [expression for item in iterable if condition]示例&#xff1a; # 生成平方…...

车联网安全入门——ICSim模拟器使用

文章目录 车联网安全入门——ISCim模拟器使用介绍主要特点&#xff1a;使用场景&#xff1a; 安装使用捕获can流量candumpcansnifferwiresharkSavvyCAN主要特点&#xff1a;使用场景&#xff1a; 重放can报文cansendSavvyCAN 总结 车联网安全入门——ISCim模拟器使用 &#x1…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...