【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类,一次性全部接收指定的字段。
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投票字段,会造成哪方面的不一致呢
答:
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请求,将…...

go实现文件的读写
读文件 1.ioutil.ReadFile package mainimport ("fmt""io/ioutil" )func main() {filePath : "example.txt"data, err : ioutil.ReadFile(filePath)if err ! nil {fmt.Printf("无法读取文件:%v\n", err)return}fmt.Print…...

基于 nodejs+vue购物网站设计系统mysql
目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…...

Mysql数据库 4.SQL语言 DQL数据操纵语言 查询
DQL数据查询语言 从数据表中提取满足特定条件的记录 1.单表查询 2.多表查询 查询基础语法 select 关键字后指定要查询到的记录的哪些列 语法:select 列名(字段名)/某几列/全部列 from 表名 [具体条件]; select colnumName…...

threejs(3)-详解材质与纹理
一、Matcap(MeshMatcapMaterial)材质原理与应用 Matcap是一张含有光照信息的贴图,通常是直接截取材质球截图来使用。因此Matcap可以很好的模拟静止光源下的光照效果。 最直接的方式就是直接使用在View空间下的模型法向量的xy分量去采样Matcap。 另外还有一种常见…...

10月最新H5自适应樱花导航网站源码SEO增强版
10月最新H5自适应樱花导航网源码SEO增强版。非常强大的导航网站亮点就是对SEO优化比较好。 开发时PHP版本:7.3开发时MySQL版本:5.7.26 懂前端和PHP技术想更改前端页面的可以看:网站的前端页面不好看,你可以查看index目录&#x…...

探索SOCKS5与SK5代理在现代网络环境中的应用
随着互联网技术的飞速发展,网络安全成为了不容忽视的重要议题。其中,网络代理技术作为一种重要的网络安全手段,以其独特的功能和优势在网络安全领域占据了重要的位置。本文将探讨两种常见的代理技术:SOCKS5代理和SK5代理ÿ…...

有六家机器视觉公司今年11月份初放假到明年春节后,除夕不放假看住企业不跑路,不倒闭,明年大家日子会越来越甜
不幸的消息一个接着一个,请大家注意下面的消息 我已经收到已经有6家机器视觉公司今年11月份初放假到明年春节后,他们真的没有订单了,其中4家宣布员工可以自行寻找工作,今年除夕不放假是经济下行经济考量吗?看住企业不…...

【Linux】MAC帧协议 + ARP协议
文章目录 📖 前言1. 数据链路层2. MAC帧格式3. 再谈局域网4. ARP协议4.1 路由器的转发过程:4.2 ARP协议格式: 5. 如何获得目的MAC地址 📖 前言 在学完网络层IP协议之后,本章我们将继续向下沉一层,进入到数…...

深入理解指针:【探索指针的高级概念和应用一】
目录 前言: 1. 字符指针 2. 指针数组 3.数组指针 3.1数组指针的定义 3.2 &数组名VS数组名 3.3数组指针的使用 前言: 🍂在了解今天的内容之前我们先复习一下指针的基本概念: 1,内存单元是有编号的ÿ…...

Leetcode周赛365补题(3 / 3)
目录 1、2、有序三元组的最大值 - 预处理前后最大值 遍历 (1)预处理前后值遍历(枚举j) (2)枚举k 2、无限数组的最短子数组 - 前缀和 滑动窗口 1、2、有序三元组的最大值 - 预处理前后最大值 遍历 …...