腾讯云软件工程师面试问题收集记录-数据库
-
SQL是什么:结构化查询语言,是一种专门用于管理关系型数据库管理系统的编程语言
-
MySQL操作命令
-
数据库操作
- 登陆数据库:mysql -u 用户面 -p
- 创建数据库:CREATE DATABASE testdb;
-
-
SQLite操作命令
-
数据库操作
- 创建数据库:sqlite3 test.db
-
表的操作
- 创建表:CREATE TABLE students ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER );
- 删除表:DROP TABLE students;
-
数据操作
- 插入数据:INSERT INTO students (id, name, age) VALUES (1, 'Alice', 20);
- 查询数据:SELECT * FROM students;
- 更新数据:UPDATE students SET age = 21 WHERE id = 1;
- 删除数据:DELETE FROM students WHERE id = 1;
-
-
SQL 注入
- 是一种常见的网络安全攻击手段,它利用应用程序对用户输入的不充分验证来影响数据库查询,从而达到非法获取、修改或删除数据的目的。
- 防御方式:参数化查询:确保用户输入被正确处理,不会被解释为SQL代码的一部分。
-
MySQL是什么:开源关系型数据库管理系统
-
MySQL两种引擎
- 引擎是指用于管理和处理数据的软件组件
- InnoDB:InnoDB数据完整性好,适合需要高度一致性和可靠性的应用。
- MyISAM:MyISAM在简单读取和写入操作上可能更快,尤其是在不涉及事务处理和外键约束的情况下。
-
MySQL的索引
-
索引本身是一种数据结构,而索引数据结构是实现索引的特定形式
-
索引的主要目的是提高查询效率。没有索引时,数据库可能需要进行全表扫描来找到匹配的数据
-
索引类型
- BTree索引:MySQL中最常见的索引类型
- 哈希索引:当查询需求主要是单条记录查询时
-
-
MySQL索引数据结构
- B+树:B+树的特点是所有数据都存储在叶子节点,并且叶子节点之间通过指针连接,形成了一个有序的链表
- 哈希结构:通过计算记录的哈希值来快速定位数据
-
MySQL组合索引:组合索引是指同时使用多列来创建的索引,是MySQL中一种常见的索引类型,它可以在多个列上创建以加速查询
-
MySQL的慢查询:执行时间超过设定阈值的SQL查询
-
Redis 是什么:一个开源的高性能键值对(key-value)数据库:“键”是用于唯一标识一条记录的标识符,“值”则是与该键关联的实际数据:在一个电话簿中人名就是健,号码就是值
-
Redis 的数据结构:字符串、列表、集合、哈希
-
redis 缓存穿透,击穿,雪崩:三种不同的缓存问题
- 缓存穿透:用户查询的数据在缓存中不存在,在数据库中也不存在
- 缓存击穿:恰好有大量的并发请求需要访问这个Key,因为缓存失效,这些请求会同时去数据库加载数据并回设到缓存,有可能瞬间把数据库压垮
- 缓存雪崩:指缓存中大量数据在同一时刻集中过期,导致所有查询都落在数据库上
-
Redis是阻塞IO还是非阻塞IO
- 非阻塞IO
- 允许Redis在等待数据传输完成时执行其他任务,从而实现了异步数据处理。
- 非阻塞IO是Redis能够实现高并发和高性能的关键因素之一
-
Redis 的内存淘汰策略
- 当内存使用超过配置限制时,采取一定的策略来淘汰数据,以保证服务的正常运行
- 返回错误不淘汰任何
- 淘汰最久未使用的
- 随机淘汰
-
Redis是多线程还是单线程的
- 处理客户端请求的核心部分是单线程的,网络IO操作时会使用多线程
-
Redis如何做到高并发的
- 基于内存操作:将所有数据存储在内存中,这样可以避免磁盘I/O的延迟,从而显著提高读写速度。
- 单线程模型:虽然单线程在处理多个请求时看似是限制因素,但因为Redis的操作几乎都是内存级别的,所以这个设计避免了多线程中的上下文切换开销
- I/O多路复用技术:非阻塞IO,在等待数据传输完成时执行其他任务,处理大量的并发连接
-
Redis为什么这么快
- 基于内存操作:将所有数据存储在内存中,这样可以避免磁盘I/O的延迟,从而显著提高读写速度。
- 单线程模型:虽然单线程在处理多个请求时看似是限制因素,但因为Redis的操作几乎都是内存级别的,所以这个设计避免了多线程中的上下文切换开销
- I/O多路复用技术:非阻塞IO,在等待数据传输完成时执行其他任务,提高处理效率
- 高效的数据结构:Redis的数据结构是为高速访问和处理优化的
-
Redis String最大可以保存多大的数据:512MB
-
Redis原子性的实现机制:Redis采用了单线程模型。在这种模型下,Redis可以确保在任意时刻只有一个命令被执行,因此不会出现多命令同时对数据进行修改的情况,从而保证了每个操作的原子性。
-
Redis主从复制:主从复制通过将一台Redis服务器(主节点)的数据复制到其他Redis服务器(从节点)来实现数据的冗余备份。这样,即使主节点发生故障,从节点仍然可以提供服务,从而实现高可用性。允许数据在多台服务器之间同步,确保即使一台服务器宕机,其他服务器也能继续提供服务
-
热点数据的定义是什么?
- 热数据:在一定时间内持续被频繁访问的数据
- 热点数据:短期内被频繁的访问的数据
-
什么时候用MySQL,什么时候用Redis
- 在需要快速访问频繁使用的热数据时使用Redis,而在需要持久化存储和处理复杂数据关系时使用MySQL。
-
事物的隔离级别
- 事务的隔离级别指的是数据库中并发事务之间的隔离程度,它决定了一个事务可能受其他并发事务影响的程度
- 读未提交:允许事务读取尚未提交的数据变更
- 读已提交:只允许事务读取已经提交的数据
- 可重复读
- 串行化
-
get、mget指令
-
GET指令从Redis数据库中查找并返回指定key的值
- 发送请求
- 查找
- 如果查到到会存储在输出缓冲区
- 返回给客户端
-
MGET指令则是一次性获取多个key的值
-
相关文章:
腾讯云软件工程师面试问题收集记录-数据库
SQL是什么:结构化查询语言,是一种专门用于管理关系型数据库管理系统的编程语言 MySQL操作命令 数据库操作 登陆数据库:mysql -u 用户面 -p创建数据库:CREATE DATABASE testdb; SQLite操作命令 数据库操作 创建数据库:…...
Sourcetree安装教程及使用
下载链接:源代码树 |适用于 Mac 和 Windows 的免费 Git GUI (sourcetreeapp.com) Sourcetree安装教程及使用_sourcetree 安装使用-CSDN博客...

TryHackMe 第1天 | Introduction to Cyber Security
偶然之间了解到了TryHackMe这个网站,尝试跟着其中的学习路径进行学习,发现还是挺适合入门网络安全这一领域的。但是这个网站包含了很多内容,如果不用一些东西记录下来,那么很容易忘记,所以打算在此记录一下学习过程。 …...
ASP.NET MVC 迅速集成 SignalR
在现代 Web 应用程序中,实时更新数据是一个常见需求。本文将详细介绍如何在 ASP.NET MVC 项目中使用 SignalR 实现定时任务操作数据库并将数据更新到网页。我们将逐步讲解如何配置 SignalR、创建定时任务、操作数据库以及在前端显示实时数据。 目录 项目初始化安装…...

[数据集][目标检测]葡萄成熟度检测数据集VOC+YOLO格式1123张3类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1123 标注数量(xml文件个数):1123 标注数量(txt文件个数):1123 标注…...

【Python 数据分析学习】Matplotlib 的基础和应用
题目 1 Matplotlib 主要特性2 Matplotlib 基础知识2.1 导入模块2.2 图形构成2.2.1 图形(Figure)2.2.2 轴 (Axes)2.2.3 轴线(axis) 2.5 中文设置2.5.1 借助rcParams修改字体实现设置2.5.2 增加一个fontprope…...

HarmonyOS应用开发者基础认证
目录 一、判断二、单选三、多选 一、判断 1、HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力。正确 2、可以通过ohpm uninstall 指令下载指定的三方库。错误 3、支持模块化开发是指一个应用通常会包含多种功能,将不同的功能特性…...
gin基本使用
中文文档:https://gin-gonic.com/zh-cn/docs/ 下载和安装gin模块 go get -u github.com/gin-gonic/gin简单接口demo package mainimport "github.com/gin-gonic/gin"func main() {r := gin.Default() // 创建一个默认的路由引擎r.GET("/pin…...

【VUE】pinia持久化存储
前言:状态持久化存储的意义在于它能够确保用户在与应用程序交互时,其操作状态、用户偏好、应用数据等关键信息在页面刷新、浏览器关闭或重新启动后依然得以保留,从而提供连贯、无缝的用户体验,避免因状态丢失导致的不便和重复操作…...
【Java基础】泛型
文章目录 泛型一、概述二、泛型的使用1、类2、方法3、接口 三、泛型通配符1、<?>2、<? extends T>3、<? super T> 四、泛型的擦除1、泛型的擦除2、泛型边界的擦除3、无法实例化泛型类型 泛型 一、概述 泛型(Generic)是一种机制&a…...

STL-vector练习题
118. 杨辉三角 思路: 杨辉三角有以下性质使我们要用到的: ● 每行数字左右对称,由 1 开始逐渐变大再变小,并最终回到 1。 ● 第 n 行(从 0 开始编号)的数字有 n1 项,前 n 行共有 2n(n1)个数。…...
Leetcode 165. 比较版本号(Medium)
给你两个 版本号字符串 version1 和 version2 ,请你比较它们。版本号由被点 . 分开的修订号组成。修订号的值 是它 转换为整数 并忽略前导零。 比较版本号时,请按 从左到右的顺序 依次比较它们的修订号。如果其中一个版本字符串的修订号较少,…...
Android 12 Launcher3 去掉Hotseat
1.概述 在12.0 产品定制化开发中 由产品需求Launcher3 页面布局的原因,要求Launcher3 需要去掉Hotseat 不显示Hotseat下面几个图标,而做满屏app的显示,从而达到美观的效果,下面就来分析去掉Hotseat从而实现这个功能 2.Launcher3 …...

Nginx实用篇:实现负载均衡、限流与动静分离
Nginx实用篇:实现负载均衡、限流与动静分离 | 原创作者/编辑:凯哥Java | 分类:Nginx学习系列教程 Nginx 作为一款高性能的 HTTP 服务器及反向代理解决方案,在互联网架构中扮演着至关重要的角色。它…...
python | Python中的类多态:方法重写和动态绑定
本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。 原文链接:Python中的类多态:方法重写和动态绑定 多态(Polymorphism)是面向对象编程的核心特性之一,它允许同一接口在…...
Rust编写Windows服务
文章目录 Rust编写Windows服务一:Windows服务程序大致原理二:Rust中编写windows服务三:具体实例 Rust编写Windows服务 编写Windows服务可选语言很多, 其中C#最简单。本着练手Rust语言,尝试用Rust编写一个服务。 一:Win…...

MATLAB 从 R2024B 开始支持树莓派 5
树莓派(Raspberry Pi)系列是一系列基于单板计算机的微型电脑,由英国的树莓派基金会于 2012 年开始发布。它的目标是提供一个低成本、易于学习和玩耍的平台,用于教育和初学者学习计算机科学和编程。 目前市面上,最新最…...

MiniBlogum项目简介
MiniBlogum项目简介 文章目录 MiniBlogum项目简介一、引言二、技术栈与开发环境三、主要功能(一)用户注册与登录(二)查看当前登录用户/作者头像、昵称、Gitee仓库地址(三)查看博客列表(四&#…...

如何用 OBProxy 实现 OceanBase 的最佳路由策略
引言 OBProxy,即OceanBase Database Proxy,也简称为ODP,是 OceanBase数据库的专属服务代理。通过应用OBProxy,由后端OceanBase集群的分布式特性所带来的复杂性得以屏蔽,从而使得访问分布式数据库的体验如同访问单机数…...

new/delete和malloc/free到底有什么区别
new和malloc 文章目录 new和malloc前言一、属性上的区别二、使用上的区别三、内存位置的区别四、返回类型的区别五、分配失败的区别六、扩张内存的区别七、系统调度过程的区别总结 前言 new和malloc的知识点,作为一个嵌入式工程师是必须要了解清楚的。new和malloc的…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...