全栈面试(一)Basic/微服务


文章目录

  • 项目地址
  • 一、Basic InterviewQuestions
        • 1. tell me about yourself?
        • 2. tell me about a time when you had to solve a complex code problem?
        • 3. tell me a situation that you persuade someone at work?
        • 4. tell me a about a confict with a teammate and how you resolved it
        • 5. tell me a about a time where you demonstarted leadership
        • 6. imagine that your teammate was not performing well how would you handle the situation ?
        • 7. what would you manager say about you
        • 8 . why do you want to work here
      • 9. tell me about a time when you above call the of duty
      • 10. what project are you most proud of and why
  • 二、全栈
    • 2.1 微服务
        • 1. 订单搜索功能
      • 2. RabbitMQ
        • 2.1 RabbitMQ的架构或者组成部分
        • 2.2 延迟队列和死信
        • 2.3 如何保证消息发送或者接收
        • 2.4 常用的队列
        • 2.5 如何保消息不被重复消费
        • 2.6 消息队列的优缺点以及场景
      • 3. Kafka
        • 3.1 简述kafka的架构设计
        • 3.1 简述kafka的rebalance机制
      • 4. Redis
        • 4.1 分布式ID的生成方案
        • 4.2 分布式锁的应用场景以及解决方法
        • 4.3 死锁的情况有哪些
        • 4.4 redis持久化RDB 和AOF
        • 4.5 redis如何淘汰过期的key
        • 4.6 缓存回收


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、Basic InterviewQuestions

在这里插入图片描述

1. tell me about yourself?

First of all, thank you very much for give me this opportunity,I am a software engineer, I enjoy sloving complex problems I have experience as a Data enginner for one half year and 2 years building and mantaining Full stactk web app. I enjoy working with all layers of the stack. 在我之前工作中,I’v experienced with include .net for building mvc and web api and as well as experience with different various javascript framworks such as react and vue. So i believe my passion and my experience would make me a great asset for you company

2. tell me about a time when you had to solve a complex code problem?

Use S.T.A.R

3. tell me a situation that you persuade someone at work?

my previous company our team support different web applications and there was really uniformity in terms of what kind of technic or framework we should use. 之前有个项目是需要从一个网站获取接口数据,将数据结合bi系统数据,进行实时的展示,所以刚开始领导决定使用和后端一样的.net 完成功能。我提出了可以使用python完成,因为更加轻量化的定时系统和更快的开发周期。就写了一个小的demo在周会上演示利与弊,最后,小组的成员以及leader同意了我的想法

4. tell me a about a confict with a teammate and how you resolved it

star

5. tell me a about a time where you demonstarted leadership

star

  1. 先说一个leadership应该有啥:可以将项目有条不紊的组织起来,并且善于发掘每个人的特长
  2. 之前有个新来的同事,领导让我带着他熟悉公司的业务,之后一起合作开发
6. imagine that your teammate was not performing well how would you handle the situation ?

不要用star

  1. 如何更好的像teammate传达坏消息,但是不要贬低他,先赞扬,在讲出问题,最后再 赞美和鼓励
7. what would you manager say about you
  1. 有创造力,善于学习,学习的很快
  2. 公开演讲,或者小组开会上,我说话并不是很多,不是一个能活跃气氛的人?
8 . why do you want to work here
  1. 对产品兴奋,对公司的业务感兴趣
  2. 你的技术和公司的技术很匹配

9. tell me about a time when you above call the of duty

star

  1. 新年回去了,但是,我的服务器报警了,我的定时任务报警,原本应该有1000w的吞吐,但是,当日只有10w数据,

10. what project are you most proud of and why

多平台协作+微服务

二、全栈

2.1 微服务

1. 订单搜索功能
  • 数据同步架构图

在这里插入图片描述

执行流程:
1.数据存储,数据到达订单数据库后,会到Canal服务器,Canal服务器通过
同步通讯,到ElasticSearch服务
2. Canal和Els默认使用的时http通讯,使用RabbitMQ进行通讯或kafka
3. 数据回源:解决异步通讯实时延迟问题,出现延迟的数据,直接再订单数据库里进行查询
4. 数据回源并发量大会导致订单数据库性能下降,所以需要添加一个redis缓存服务

技术:
5. 电商微服务系统
6. Elasticsearch
7. Nest
8. Cannal
9. RabbitMQ
10.Redis

具体实现:

  1. 使用Nest提供的ElasticClient

2. RabbitMQ

2.1 RabbitMQ的架构或者组成部分
  1. broker :服务节点
  2. queue:队列,用户存储消息,多个消费者订阅一个队列,这是队列的消息会被轮询 平摊给多个消费者。
  3. exchange: 交换器,生产者发送消息给exchange,然后exchange将消息放入一个或者多个队列中
  4. RoutingKey:当消息到达exchange的时候,会指定一个RoutingKey,用来指定路由规则,必须和bindingKey一起使用才可以生效
  5. Binding:通过绑定,将exchange和queue里的消息绑定,
2.2 延迟队列和死信

在这里插入图片描述

2.3 如何保证消息发送或者接收

发送方:需要发送confirm,当消息到达生产者的时候,使用comfirmCallback回调接口,成功则回调,失败则调用ReturnCallback接口
接收方: 消费者接收的每一条消息后必须确认,只有确认了的消息,才会从队列里删除。但是如果消费者 返回ack之前断开了连接,消息会被从新发给下一个订阅的消费者,这样会产出重复消费,需要进行去重
broker: 同步刷盘,等待slave复制完成才会返沪确认

2.4 常用的队列
  1. 镜像队列:队列会在集群上的多个节点创建副本,主节点处理请求, 子节点负责同步数据,当主节点宕机,子节点接管,保证高可用
  2. 优先队列:处理系统预警
  3. 延迟队列:订单超时(20分钟内,用户未支付,取消订单)
2.5 如何保消息不被重复消费
  • MQ是无法保证消费端是否正常消费的
  • 需要程序员从应用端保证消息不被重复消息,需要保证消息的幂等性:
    1. 如果使用redis,每次都是set, 天然幂等
    2. 生产者发送消息带上全局唯一uuid,消费者拿到消息后,根据id在redis里查询,没消费过就处理,并且写入id到redis里,如果消费过,就不处理
2.6 消息队列的优缺点以及场景

有点: ①异步 ②解耦 ③消弱峰值
缺点: ①复杂度②数据一致性,消费者会失败
场景: ①日志采集 ② 订阅发布 ③多系统调用

3. Kafka

在这里插入图片描述

3.1 简述kafka的架构设计
  1. broker:服务器节点,可以有多个
  2. topic: 一个Topic 以多个partition的方式分布在多个broker上,每个p
  3. Customer group:消费者分组
3.1 简述kafka的rebalance机制

4. Redis

4.1 分布式ID的生成方案
  1. 全局的uuid:优点:降低全局节点压力;缺点:占空间大,不是递增的
  2. 数据库主键自增:优点:数字类型查询效率高于字符;缺点:并发性能不好,分库分表复杂
  3. Redis自增: 优点:并发性能高;缺点:数据丢失,自增
  4. 雪花算法:优点:分布式ID的经典算法; 缺点:时钟回拨
4.2 分布式锁的应用场景以及解决方法

应用场景:

  1. 处理分布式系统集群中的锁,如果都是用独立的锁,锁就没有意义
  2. 操作共享资源:如数据库里唯一用户资源,订单系统,优惠卷系统,财务系统
  3. 同步访问:多个进程同时操作共享资源

解决方案:
4. 使用redis做分布式锁,使用setnx key nx ex 10s(需要给key设置过期时间5-10s)确保不会有死Key;其次,如果锁设置了10s释放 ,但是 执行了15s,另外一个程序已经获取到了锁,会出现数据不一致,需要使用watch dog进行,实际上直接使用框架lock 和unlock
5. 基于zookeeper,临时节点(客户端和zookeeper连接后一直生效,断开后连接失效),顺序节点:1号服务拿锁,执行结束后,再给2号
6. 基于基于数据库,主键或者唯一索引

4.3 死锁的情况有哪些
  1. 加锁,但是没释放锁,需要添加Delete key
  2. 加锁后,程序还没执行释放锁,程序挂了,需要添加key的过期机制
4.4 redis持久化RDB 和AOF

RDB:
1. 数据快照,指定间隔时间内,对数据进行快照存储;
2. 保存某个时间点的数据,如每小时保存过去24小时数据,同时每天保存过去30天的数据;
3. 方便传入到blob里
4. 缺点:①意外停止,会丢失数据;②fork子进程进行数据备份会导致性能降低;

AOF(优先):
1. 每秒的fsync策略,AOF可以将数据丢失降低到1s
2. AOF只是一个日志追加文件,所以即使宕机,也可以恢复到未执行完整的写入命令
3. AOF保存数据库所有执行写入的操作
4. 缺点:体积大

4.5 redis如何淘汰过期的key
  1. 自动:每10s 随机检测20个keys进行过期检测,删除所有的过期keys,如果多于25%就重复1
  2. 手动:设置master执行DEL命令,如果Master不执行,slaver是不会执行的
  3. 扩展:绝对时间点和相对时间点以及时钟轮算法
4.6 缓存回收

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

专题 - STM32

基础 基础知识 STM所有产品线(列举型号): STM产品的3内核架构(列举ARM芯片架构): STM32的3开发方式: STM32的5开发工具和套件: 若要在电脑上直接硬件级调试STM32设备,则…

容器技术全面攻略:Docker的硬核玩法

文章背景 想象一下,一个项目终于要上线了,结果因为环境配置不一致,测试服务器一切正常,生产环境却宕机了。这是开发者噩梦的开始,也是Docker救世主角色的登场!Docker的出现颠覆了传统环境配置的方式&#…

【论文阅读】Workload Dependent Performance Evaluation of the Linux 2.6 I/O Schedulers

文章目录 某些背景知识的科普(依赖GPT)GPT简短总结摘要-Abstract引言-Introduction1 I/O Scheduling and the BIO LayerThe 2.6 Deadline I/O Scheduler2.1 The 2.6 Anticipatory I/O scheduler2.2 The 2.6 CFQ Scheduler2.3 The 2.6 noop I/O scheduler…

LLMBook 中 数据集下载地址整理收集

本文针对《LLMBook》大语言模型 | LLMBook-zh 中的42个数据集进行完整下载地址整理收集。 具体整理部分关于第三章 大型语言模型资源 1、常用预训练24个数据集下载地址整理收集 2、指令微调18个数据集下载地址整理收集 3、人类对齐8个数据集下载地址整理收集 《大语言模型》…

http和https有哪些不同

http和https有哪些不同 1.数据传输的安全性:http非加密,https加密 2.端口号:http默认80端口,https默认443端口 3.性能:http基于tcp三次握手建立连接,https在tcp三次握手后还有TLS协议的四次握手确认加密…

LabVIEW滤波器功能

程序通过LabVIEW生成一个带噪声的正弦波信号,并利用滤波器对其进行信号提取。具体来说,它生成一个正弦波信号,叠加高频噪声后形成带噪信号,再通过低通滤波器滤除噪声,提取原始正弦波信号。整个过程展示了信号生成、噪声…

基于华为atlas的重车(满载)空车(空载)识别

该教程主要是想摸索出华为atlas的基于ACL的推理模式。最终实现通过煤矿磅道上方的摄像头,识别出车辆的重车(满载)、空车(空载)情况。本质上是一个简单的检测问题。 但是整体探索过程比较坎坷,Tianxiaomo的…

pytest+allure 入门

使用allure如何生成自动化测试报​​​​​​告 ?一文详解allure的使用 。_allure测试报告-CSDN博客 例子: import allure import pytest import osallure.epic("闹钟") allure.feature("闹钟增删") class TestSchedule():def setu…

excel VBA 基础教程

这里写目录标题 快捷键选择所有有内容的地方 调试VBA录制宏,打开VBA开发工具录制宏,相当于excel自动写代码(两个表格内容完全一致才可以) 查看宏代码保持含有宏程序的文件xlsm后缀(注意很容易有病毒)宏文件安全设置 使…

Excel数据叠加生成新DataFrame:操作指南与案例

目录 一、准备工作 二、读取Excel文件 三、数据叠加 四、处理重复数据(可选) 五、保存新DataFrame到Excel文件 六、案例演示 七、注意事项 八、总结 在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFra…

Django创建数据表、模型、ORM操作

1、创建项目 django-admin startproject PersonInfosProject 2、创建项目应用,进入PersonInfosProject文件夹,新建index应用,使用命令 cd PersonInfosProject python manage.py startapp 新建完成之后的目录结构 3、新建数据模型&#xf…

ZYNQ初识10(zynq_7010)UART通信实验

基于bi站正点原子讲解视频: 系统框图(基于串口的数据回环)如下: 以下,是串口接收端的波形图,系统时钟和波特率时钟不同,为异步时钟,,需要先延时两拍,将时钟同…

【ORACLE战报】2025.1月OCP | MySQL考试

2025.1月【最新考试成绩出炉】 OCP战报 MySQL 战报 部分学员成绩及证书

力扣经典练习题之198.打家劫舍

今天继续给大家分享一道力扣的做题心得今天这道题目是198.打家劫舍,这是一道非常经典的问题,在动态规划中经常考到这类问题,题目如下: 题目链接:198.打家劫舍 1,题目分析 首先此题就是给我们了一个数组,代表可以偷的房屋中的对应的金额,我们是一个小偷,一次可以偷很多…

【数据库】一、数据库系统概述

文章目录 一、数据库系统概述1 基本概念2 现实世界的信息化过程3 数据库系统内部体系结构4 数据库系统外部体系结构5 数据管理方式 一、数据库系统概述 1 基本概念 数据:描述事物的符号记录 数据库(DB):长期存储在计算机内的、…

Redis有哪些常用应用场景?

大家好,我是锋哥。今天分享关于【Redis有哪些常用应用场景?】面试题。希望对大家有帮助; Redis有哪些常用应用场景? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 是一个高性能的开源键值对(Key-Va…

[uniapp] 实现扫码功能,含APP、h5、小程序

🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养&#x1f9…

《异步编程之美》— 全栈修仙《Java 8 CompletableFuture 对比 ES6 Promise 以及Spring @Async》

哈喽,大家好!在平常开发过程中会遇到许多意想不到的坑,本篇文章就记录在开发过程中遇到一些常见的问题,看了许多博主的异步编程,我只能说一言难尽。本文详细的讲解了异步编程之美,是不可多得的好文&#xf…

day07_Spark SQL

文章目录 day07_Spark SQL课程笔记一、今日课程内容二、Spark SQL函数定义(掌握)1、窗口函数2、自定义函数背景2.1 回顾函数分类标准:SQL最开始是_内置函数&自定义函数_两种 2.2 自定义函数背景 3、Spark原生自定义UDF函数3.1 自定义函数流程&#x…

presto不支持concat_ws

在sparksql/hive中,将一个数据集合已指定的分隔符拼接可以用concat_ws,但是在presto中没有这个函数,不过presto提供了一个集合方法array_join,来达到相同的目的 同样的对数据集去重可以用array_distinct 如果你不需要去重就直接…