【2024秋招】小米中间件后端开发一面2023-9-13-base武汉

news2024/10/6 12:22:38

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 您这个部门做的中间件给谁提供服务的呢

答:整个小米集团

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1127022.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode—323.无向图中连通分量的数目【中等】Plus

2023每日刷题(七) Leetcode—323.无向图中连通分量的数目 并查集思路实现代码 static int father[2010] {0};int Find(int x) {if(x ! father[x]) {father[x] Find(father[x]);}return father[x]; }void Union(int x, int y) {int a Find(x);int b …

使用R和curl库编写一段爬虫代码

以下是一个使用R和curl库的下载器程序&#xff0c;用于下载企鹅网站的内容。此程序使用了duoip.cn/get_proxy的代码。 # 引入必要的库 library(curl) library(jsonlite)# 获取爬虫ip proxy_url <- "https://www.duoip.cn/get_proxy" proxy_response <- curl_fe…

Fortify-设置中文语言

文章目录 运行scapostinstall.cmd设置Options 运行scapostinstall.cmd 设置Options 击Update Secutiry Content-zh_CN等待更新成中文即可 重启fortify

【Docker】Dockerfile常用指令

参考官方文档&#xff1a;https://docs.docker.com/engine/reference/builder/ Dockerfile常用指令 指令说明from基础镜像&#xff0c;当前镜像基于&#xff08;依赖&#xff09;哪个镜像maintainer镜像的维护者和邮箱run镜像构建时需要执行的命令workdir镜像的工作目录expos…

leetcode:292. Nim 游戏(数学推理)

一、题目 函数原型&#xff1a;bool canWinNim(int n) 二、思路 通过数学推理&#xff0c;列举找规律&#xff0c;发现当石头数为4的倍数时&#xff0c;我会输掉游戏&#xff1b;而其他情况&#xff0c;我都会赢得游戏。 三、代码 bool canWinNim(int n){if(n%40)return false;…

DC电源模块的模拟电源有什么优势?

BOSHIDA DC电源模块的模拟电源有什么优势&#xff1f; DC电源模块是电子系统中必不可少的部件之一。它们提供了可靠的直流电源&#xff0c;以驱动多种类型的电子设备。随着技术的进步&#xff0c;市场上出现了各种不同类型的DC电源模块&#xff0c;包括模拟电源和数字电源等。…

SM4国密4在jdk1.7版本和jdk1.8版本中的工具类使用

&#xff08;一&#xff09;首先&#xff0c;直接可用的工具类如下&#xff1a; 1、JDK1.8版本&#xff0c;使用hutool工具类实现SM4对称加密&#xff0c;pom依赖如下&#xff1a; <!-- Hutool 工具包 --><dependency><groupId>cn.hutool</groupId><…

kubeadm初始化的k8s集群证书续期—— 筑梦之路

脚本自动化方式 这个是一个开源的项目&#xff1a;https://gitee.com/ximy/update-kube-cert 该项目可以自动化更新k8s集群的证书&#xff0c;使用也很简单。 该脚本可将 kubeadm 生成的证书有效期更新为 10 年。 git clone https://github.com/yuyicai/update-kube-cert.g…

使用logger.error(“自定义错误信息描述“,e)将错误信息输出到日志文件上

之前一直用e.getMessage()来获取错误信息 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class ClassF…

css步骤条

html 代码以及样式 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>css步骤条</title><style>.steps {display: flex;justify-content: space-between;padding: 0;margin: 20px 10px;l…

【2021研电赛】基于动态无线充电技术的自动驾驶小车

本作品介绍参与极术社区的有奖征集|分享研电赛作品扩大影响力&#xff0c;更有重磅电子产品免费领取! 参赛单位&#xff1a;北京交通大学 作品简介 近年来&#xff0c;电动汽车的发展得到了很多国家和车企的大力支持&#xff0c;但其仍然存在充电时间长、充电设施不齐全等问…

酷开科技 | 酷开系统沉浸式大屏游戏更解压!

随着家庭娱乐需求日益旺盛&#xff0c;越来越多的家庭消费者和游戏玩家开始追求大屏游戏带来的沉浸感。玩家在玩游戏的时候用大屏能获得更广阔的视野和更出色的视觉包围感&#xff0c;因此用大屏玩游戏已经成为了一种潮流。用酷开系统玩大屏游戏&#xff0c;过瘾又刺激&#xf…

迷你洗衣机哪个牌子好又实惠?小型洗衣机全自动

现在洗内衣内裤也是一件较麻烦的事情了&#xff0c;在清洗过程中还要用热水杀菌&#xff0c;还要确保洗衣液是否有冲洗干净&#xff0c;还要防止细菌的滋生等等&#xff0c;所以入手一款小型的烘洗全套的内衣洗衣机是非常有必要的&#xff0c;专门的内衣洗衣机可以最大程度减少…

【HarmonyOS】元服务卡片router实现跳转到指定页面并传动态参数

【关键字】 元服务卡片、router跳转不同页面、传递动态参数 【写在前面】 本篇文章主要介绍开发元服务卡片时&#xff0c;如何实现从卡片中点击事件跳转到指定的应用内页面&#xff0c;并传递参数接受参数功能。此处以JS UI开发服务卡片为例&#xff0c;JS卡片支持组件设置ac…

洗车小程序源码:10个必备功能,提升洗车体验

作为洗车行业的专家&#xff0c;我们深知在如今数字化时代&#xff0c;拥有一款功能强大的洗车小程序是提升用户体验和业务发展的关键。本文将向您介绍洗车小程序源码中的10个必备功能&#xff0c;让您的洗车业务达到新的高度。 在线预约系统 通过洗车小程序源码&#xff0c;…

【Docker】Docker数据的存储

默认情况下&#xff0c;在运行中的容器里创建的文件&#xff0c;被保存在一个可写的容器层里&#xff0c;如果容器被删除了&#xff0c;则对应的数据也随之删除了。 这个可写的容器层是和特定的容器绑定的&#xff0c;也就是这些数据无法方便的和其它容器共享。 Docker主要提…

Mybatis-Plus CRUD

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Mybatis-Plus CRUD 通用 Service CRUD 封装 IService 接口&#xff0c;进一步封装 CRUD 采用 get 查询、remove 删除 、list 查询集合、page 分页的前缀命名方式区分 …

【Flutter 问题系列第 79 篇】在 Flutter 中使用 ReorderableListView 实现拖拽排序列表组件的功能

这是【Flutter 问题系列第 79 篇】&#xff0c;如果觉得有用的话&#xff0c;欢迎关注专栏。 当前开发环境 Flutter 版本&#xff1a;3.10.5&#xff0c;Dart 版本&#xff1a;3.0.5&#xff0c;操作系统&#xff1a;macOS 文章目录 一&#xff1a;效果演示二&#xff1a;Reor…

RK3568驱动指南|第七期-设备树-第59章 实例分析:CPU

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…