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

腾讯云软件工程师面试问题收集记录-数据库

  • 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、无法实例化泛型类型 泛型 一、概述 泛型&#xff08;Generic&#xff09;是一种机制&a…...

STL-vector练习题

118. 杨辉三角 思路&#xff1a; 杨辉三角有以下性质使我们要用到的&#xff1a; ● 每行数字左右对称&#xff0c;由 1 开始逐渐变大再变小&#xff0c;并最终回到 1。 ● 第 n 行&#xff08;从 0 开始编号&#xff09;的数字有 n1 项&#xff0c;前 n 行共有 2n(n1)个数。…...

Leetcode 165. 比较版本号(Medium)

给你两个 版本号字符串 version1 和 version2 &#xff0c;请你比较它们。版本号由被点 . 分开的修订号组成。修订号的值 是它 转换为整数 并忽略前导零。 比较版本号时&#xff0c;请按 从左到右的顺序 依次比较它们的修订号。如果其中一个版本字符串的修订号较少&#xff0c…...

Android 12 Launcher3 去掉Hotseat

1.概述 在12.0 产品定制化开发中 由产品需求Launcher3 页面布局的原因&#xff0c;要求Launcher3 需要去掉Hotseat 不显示Hotseat下面几个图标&#xff0c;而做满屏app的显示&#xff0c;从而达到美观的效果&#xff0c;下面就来分析去掉Hotseat从而实现这个功能 2.Launcher3 …...

Nginx实用篇:实现负载均衡、限流与动静分离

Nginx实用篇&#xff1a;实现负载均衡、限流与动静分离 | 原创作者/编辑&#xff1a;凯哥Java | 分类&#xff1a;Nginx学习系列教程 Nginx 作为一款高性能的 HTTP 服务器及反向代理解决方案&#xff0c;在互联网架构中扮演着至关重要的角色。它…...

python | Python中的类多态:方法重写和动态绑定

本文来源公众号“python”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;Python中的类多态&#xff1a;方法重写和动态绑定 多态&#xff08;Polymorphism&#xff09;是面向对象编程的核心特性之一&#xff0c;它允许同一接口在…...

Rust编写Windows服务

文章目录 Rust编写Windows服务一&#xff1a;Windows服务程序大致原理二&#xff1a;Rust中编写windows服务三&#xff1a;具体实例 Rust编写Windows服务 编写Windows服务可选语言很多, 其中C#最简单。本着练手Rust语言&#xff0c;尝试用Rust编写一个服务。 一&#xff1a;Win…...

MATLAB 从 R2024B 开始支持树莓派 5

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

MiniBlogum项目简介

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

如何用 OBProxy 实现 OceanBase 的最佳路由策略

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

new/delete和malloc/free到底有什么区别

new和malloc 文章目录 new和malloc前言一、属性上的区别二、使用上的区别三、内存位置的区别四、返回类型的区别五、分配失败的区别六、扩张内存的区别七、系统调度过程的区别总结 前言 new和malloc的知识点&#xff0c;作为一个嵌入式工程师是必须要了解清楚的。new和malloc的…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...