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

【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)]

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)]

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 结构,赢得了大量开发者的青睐。但是,对于初学者来说&#xff…...

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下输入输出错误重定向&#xff1a; 输入重定向&#xff1a;< 一个大于号是进行了覆盖。 两个大于号是追加。 输出重定向可以用于以后日志打印。 错误重定向&#xff1a; 错误重定向是不把信息打印到屏幕上而是打印到指定文件中去&#xff1a; 输出重定向其实是用的1…...

AWVS漏洞扫描使用基础与介绍

漏洞扫描的基本概念和原理 漏洞扫描是指通过使用自动化工具和技术来检测和识别计算机系统和网络中可能存在的安全漏洞&#xff0c;用于帮助网络安全运维人员及时获取网络安全态势。漏洞扫描是网络安全中的重要环节&#xff0c;它可以帮助我们发现和修复网络中的安全漏洞&#x…...

Flink 维表关联

1、实时查询维表 实时查询维表是指用户在 Flink 算子中直接访问外部数据库&#xff0c;比如用 MySQL 来进行关联&#xff0c;这种方式是同步方式&#xff0c;数据保证是最新的。但是&#xff0c;当我们的流计算数据过大&#xff0c;会对外 部系统带来巨大的访问压力&#xff0…...

阳光蟹场小程序的盈利模式与思考深度

随着移动互联网的快速发展&#xff0c;小程序成为了各行各业进行数字化转型的重要工具之一。阳光蟹场小程序作为一款专为蟹场管理和销售提供支持的移动&#xff0c;其盈利模式也备受关注。本文将从阳光蟹场小程序的盈利途径、商业模式和对蟹场管理的影响等方面&#xff0c;深入…...

2-Java进阶知识总结-7-UDP-TCP

文章目录 网络编程概述网络编程三要素--IP地址IP地址--概念&#xff08;IP&#xff1a;Internet Protocol&#xff09;IP地址--分类IP地址--特殊的地址&#xff1a;127.0.0.1IP地址获取--DOS命令IP地址获取--InetAddress类 网络编程三要素--端口端口--概念端口号 网络编程三要素…...

C++数据结构X篇_19_排序基本概念及冒泡排序(重点是核心代码,冒泡是稳定的排序)

文章目录 1. 排序基本概念2. 冒泡排序2.1 核心代码2.2 冒泡排序代码2.3 查看冒泡排序的时间消耗2.4 冒泡排序改进版减小时间消耗 1. 排序基本概念 现实生活中排序很重要&#xff0c;例如:淘宝按条件搜索的结果展示等。 概念 排序是计算机内经常进行的一种操作&#xff0c;其目…...

工作:三菱伺服驱动器连接参数及其电机钢性参数配置与调整

工作&#xff1a;三菱伺服驱动器参数及电机钢性参数配置与调整 一、三菱PLC与伺服驱动器连接参数的设置 1. 伺服配置 单个JET伺服从站链接侧占用点数:Rx/Ry占用64点、RWw/RWr占用32点 图中配置了22个JET伺服从站&#xff0c;占用点数:Rx/Ry占用64222048‬点、RWw/RWr占用322…...

企事业单位/公司电脑文件透明加密保护 | 防泄密软件\系统!

推荐——「天锐绿盾电脑文件防泄密系统」 一款全面的企业/公司数据透明加密防泄密系统&#xff0c;旨在从源头上保障数据的安全和使用安全。 PC访问地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 它具有以下特点&#xff1a…...

[Leetcode] 0101. 对称二叉树

101. 对称二叉树 题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#…...

.NET、VUE利用RSA加密完成登录并且发放JWT令牌设置权限访问

后端生成公钥私钥 使用RSA.ToXmlString(Boolean) 方法生成公钥以及私钥。 RSACryptoServiceProvider rSA new(); string pubKey rSA.ToXmlString(false);//公钥 string priKey rSA.ToXmlString(true);//私钥 后端将生成的公钥发送给前端 创建一个get请求&#xff0c;将…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...