【2024秋招】小米中间件后端开发一面2023-9-13-base武汉
1 自我介绍
2 快手实习
2.1 讲讲你写的curd启动器,做了哪些工作呢
答:
2.2 网上也有一些开源的curd代码生成器,你为什么需要自研呢(重要)
答:
(1)这个必须得自研,因为这个里面涉及到一些将快手的自定义环境变量放入到这个启动器中,同时网上的启动器都只涉及到单表的生成,但是我们自己还支持联表的查询;网上的启动器具有一定的通用性,但是并不能完全兼容我们组的实际的环境。
(2)网上的一些curd启动器,比如mp,涉及到的只是dao层的封装方法的编写,但是面对controller层的代码的编写,这是省略不了的,假如说我们在dao层使用了mp,那么我们确实不需要编写所有的普通的单表的查询mapper方法,但是我们在controller类中还是得编写api来处理单表查询的请求,假如现在有10个简单的curd请求,其中前面的select到where的字符串都相同,但是查询的条件分别是10个不同的字段的等值查询,这种查询在DAO层不需要写任何代码,因为MP有这个能力,但是我们的controller层得在这一个类中写上这10个api方法,这样的话,相当于
2.3 你们是如何做联表的呢?
答:
(1)前端会携带一个type字段,如果type为detail,则说明需要联表查询
(2)联表的sql语句需要在DAO层写好,后端的接口会根据前端的detail字段自动去进行联表查询,一般这里的联表sql语句需要在DAO层写好,可以定义为getJoinDataOnXXX,但同时的也需要在查询时指定联表的字段,后端会根据这个联表的字段去调用对应的DAO层方法,一般联表的方法只适用于主表,字段也来自于这个表,这样的话可以天然借助这个字段去DAO层主映射出具体的联表方法,然后在查询条件时,我们一般也会进行过滤,过滤的时候会带上这些条件,后端会解析成对应的queryWrapper,当然我们还需要设置额外的queryWrapper类,一次性全部接收指定的字段。
![[外链图片转存中...(img-zZdQYXsd-1698109623019)]](https://img-blog.csdnimg.cn/5535067a9070493bb0f96666049548ff.png)
2.4 架构实例反向同步到架构定义
答: 流量激增的时候,数据中心需要扩容
2.5 多个表的架构实例和流量激增是什么关系呢
答:流量激增->机器实例、接线变化->变更前做快照
2.6 做这个快照有什么用呢?
答:运维人员在对机器变更之前,当前的网络架构拓扑图做一个备份,放入到定义表当中,方便回退
2.7 怎么实现这个备份呢,你的架构是怎么和数据表关联起来呢
答:架构就相当于这一张张表吧
2.8 代码量由3000缩减到1000行,是怎么做到的呢
答:策略模式
3 分布式kv键值对数据库
3.1 这个代码是你自己实现的吗
答:我自己
3.2 你这个raft是怎么实现一致性的
答:leader选举,日志复制和持久化实现的
3.3 持久化讲讲
答:
(1)持久化哪些字段
(2)持久化的时机
3.4 一定要持久化嘛,一致性和持久化有必然关联嘛?
答:因为如果大多数节点中的数据丢失了,必须得先从磁盘中恢复数据,不然的话数据会丢失,造成数据不一致,如果这里的大多数是节点是大多数日志进度跟leader节点匹配的,那么数据会丢失,造成数据不一致。
3.4.1 如果没有持久化日志,会造成哪方面不一致?
如果这里的大多数是节点是大多数日志进度跟leader节点匹配的,并且刚好数据丢失,其他的从节点的日志有缺陷,造成数据不一致。
3.4.2 如果没有持久化votedFor投票字段,会造成哪方面的不一致呢
答:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQbCQpWU-1686574650549)(images/img_3.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQbCQpWU-1686574650549)(images/img_3.png)]](https://img-blog.csdnimg.cn/aaa7b11d844a45d7918799270776566a.png)
3.5 日志同步是怎么实现的呢
答:leader节点的上层状态机收到了写操作时不会立即执行它,而是将其封装到日志中,下放给raft集群,直至集群中大多数节点都收到了这个日志才会开始执行这条日志。
3.6 复制的过程中包含哪些内容呢?
答:相当于一个OP对象,包括了操作的类型,是get还是put还是putAppend,然后就是key和value了,这三个相当于包括了具体的操作命令,还有一个ClientId和SeqId,这两个id主要用于各个节点的上层状态机保证操作的幂等性
3.7 假如说这是个OP对象,这个同步的量特别大的话,怎么保证日志复制速度这么快呢,怎么保证各个节点之间的日志快速一致呢
答:因为它可以通过快照操作,截断一部分日志,快照会被持久化,如果从节点宕机,会首先读取本地的快照进行快速恢复,然后leader节点只需要传递给快照后面的日志给从节点,从节点执行的日志量很少
4 反问
4.1 是不是两轮技术面和一轮hr
答:对
4.2 面试结果什么时候出来
答:三天之内,反正通没通过会发邮件,大概三天左右吧
4.3 我表现如何呢
答:我觉得还行,但是我们还得再看一下
4.4 二轮是您的上司面嘛?
答:对
4.5 现在得批量面一下,做一个排序对吧
答:对
4.6 小米武汉的hc够吗
答:刚开始面
4.7 除了您刚才讲,还有其他的业务嘛?
答:主要是中间件,微服务相关的,可能是nacos,dubbo之类的,具体做什么不确定。
4.8 您这个部门做的中间件给谁提供服务的呢
答:整个小米集团
相关文章:
【2024秋招】小米中间件后端开发一面2023-9-13-base武汉
1 自我介绍 2 快手实习 2.1 讲讲你写的curd启动器,做了哪些工作呢 答: 2.2 网上也有一些开源的curd代码生成器,你为什么需要自研呢(重要) 答: (1)这个必须得自研,因…...
SpringMVC Day 01:入门案例
前言 在我们的日常工作和学习中,Web 开发是一个无法回避的重要环节。而在 Java Web 开发领域,SpringMVC 无疑是一个重量级选手。它以其灵活性、强大功能和清晰的 MVC 结构,赢得了大量开发者的青睐。但是,对于初学者来说ÿ…...
docker、docker-compose安装教程,很详细
docker、docker-compose安装教程,很详细 一、卸载旧版1、查看有没有安装过旧版2、停止docker3、删除安装过docker的相关包4、删除docker相关的镜像和容器 二、docker安装1、设置阿里云镜像2、查看所有docker3、安装最新版本4、安装指定版本 三、使用前准备1、启动do…...
源代码转换:Tangible Software Solutions 23.10 Crack
Tangible Software Solutions The Most Accurate and Reliable Source Code Converters Convert between C#, Java, C, Python, & VB, while saving countless hours of painstaking work and valuable time.源代码转换 Key Benefits Saves valuable time Accurate and com…...
SAD notes
ESKF 总结 prediction 更新误差先验 F F F通过3.42来算 得到 这里有点绕的一点是: 误差状态的 F F F牵涉到名义状态, 而名义状态又需要在时间上推进更新 其中, F中的名义状态的推进通过公式3.41得到, (名义状态不考虑误差, 这一点从3.41d, 3.41e可以看出, 误差状态只考虑…...
[SQL开发笔记]BETWEEN操作符:选取介于两个值之间的数据范围内的值
一、功能描述: BETWEEN操作符:选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。 二、BETWEEN操作符语法详解: BETWEEN操作符语法: SELECT column1, column2,…FROM table_nameWHERE column BETWEEN val…...
Babylonjs学习笔记(三)——创建天空盒
书接上回,这里讨论创建天空盒!!! // 天空盒const envTex CubeTexture.CreateFromPrefilteredData(./env/environmentSpecular.env,scene)scene.environmentTexture envTex;scene.createDefaultSkybox(envTex,true)scene.environ…...
【计算机网络】文件传输协议FTP和SFTP
1. 介绍 SFTP(SSH文件传输协议)和FTP(文件传输协议)都是用于在计算机之间传输文件的网络协议。FTP和SFTP都位于OSI模型中的应用层。这两种协议用于文件传输和管理,是应用层协议,因此它们工作在OSI模型的最…...
Python 编程语言的介绍
Python 是一种高级、动态类型的解释型语言。由 Guido van Rossum 于1989年底发明,并在1991年首次发布。Python 的设计哲学强调代码的可读性和简洁的语法,特别是使用缩进来表示代码块,这使得开发者能够用更少的代码表达想法。 基础概念: 语法…...
centos服务器搭建安装Gitlab教程使用教程
1、更新服务器: sudo yum update -y && sudo yum upgrade -y 2、下载Gitlab的RPM包 https://packages.gitlab.com/gitlab/gitlab-cece表示开源el表示centos 选64位el8对应CentOS8 本教程以centos8为例,在服务器中,下载centos8的…...
linux复习笔记02(小滴课堂)
linux下输入输出错误重定向: 输入重定向:< 一个大于号是进行了覆盖。 两个大于号是追加。 输出重定向可以用于以后日志打印。 错误重定向: 错误重定向是不把信息打印到屏幕上而是打印到指定文件中去: 输出重定向其实是用的1…...
AWVS漏洞扫描使用基础与介绍
漏洞扫描的基本概念和原理 漏洞扫描是指通过使用自动化工具和技术来检测和识别计算机系统和网络中可能存在的安全漏洞,用于帮助网络安全运维人员及时获取网络安全态势。漏洞扫描是网络安全中的重要环节,它可以帮助我们发现和修复网络中的安全漏洞&#x…...
Flink 维表关联
1、实时查询维表 实时查询维表是指用户在 Flink 算子中直接访问外部数据库,比如用 MySQL 来进行关联,这种方式是同步方式,数据保证是最新的。但是,当我们的流计算数据过大,会对外 部系统带来巨大的访问压力࿰…...
阳光蟹场小程序的盈利模式与思考深度
随着移动互联网的快速发展,小程序成为了各行各业进行数字化转型的重要工具之一。阳光蟹场小程序作为一款专为蟹场管理和销售提供支持的移动,其盈利模式也备受关注。本文将从阳光蟹场小程序的盈利途径、商业模式和对蟹场管理的影响等方面,深入…...
2-Java进阶知识总结-7-UDP-TCP
文章目录 网络编程概述网络编程三要素--IP地址IP地址--概念(IP:Internet Protocol)IP地址--分类IP地址--特殊的地址:127.0.0.1IP地址获取--DOS命令IP地址获取--InetAddress类 网络编程三要素--端口端口--概念端口号 网络编程三要素…...
C++数据结构X篇_19_排序基本概念及冒泡排序(重点是核心代码,冒泡是稳定的排序)
文章目录 1. 排序基本概念2. 冒泡排序2.1 核心代码2.2 冒泡排序代码2.3 查看冒泡排序的时间消耗2.4 冒泡排序改进版减小时间消耗 1. 排序基本概念 现实生活中排序很重要,例如:淘宝按条件搜索的结果展示等。 概念 排序是计算机内经常进行的一种操作,其目…...
工作:三菱伺服驱动器连接参数及其电机钢性参数配置与调整
工作:三菱伺服驱动器参数及电机钢性参数配置与调整 一、三菱PLC与伺服驱动器连接参数的设置 1. 伺服配置 单个JET伺服从站链接侧占用点数:Rx/Ry占用64点、RWw/RWr占用32点 图中配置了22个JET伺服从站,占用点数:Rx/Ry占用64222048点、RWw/RWr占用322…...
企事业单位/公司电脑文件透明加密保护 | 防泄密软件\系统!
推荐——「天锐绿盾电脑文件防泄密系统」 一款全面的企业/公司数据透明加密防泄密系统,旨在从源头上保障数据的安全和使用安全。 PC访问地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 它具有以下特点:…...
[Leetcode] 0101. 对称二叉树
101. 对称二叉树 题目描述 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false提示&#…...
.NET、VUE利用RSA加密完成登录并且发放JWT令牌设置权限访问
后端生成公钥私钥 使用RSA.ToXmlString(Boolean) 方法生成公钥以及私钥。 RSACryptoServiceProvider rSA new(); string pubKey rSA.ToXmlString(false);//公钥 string priKey rSA.ToXmlString(true);//私钥 后端将生成的公钥发送给前端 创建一个get请求,将…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
