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

字节跳动的微服务独家面经

在之前的文章中也介绍了相关微服务的项目开发知识,那么在本文中我将分享一份来自字节跳动相关岗位的面试经历,在其中我们一起来看看面试问题的详细内容,如果有对微服务的感兴趣的朋友们也可以联系我了解我们的微服务项目,也希望该面经能助力求职者在求职道路上顺利前行。

💼岗位职责:

1、负责开发者平台、小游戏 SDK、小游戏中心等业务相关建设;

2、参与海量小游戏及相关开发者生态的稳定性建设;

3、负责多样化业务带来的技术中台化及字节生态下多端的复杂业务抽象;

4、关注技术创新,驱动新业务探索。

📋任职要求:

1、本科及以上学历,计算机、通信等相关专业;

2、有扎实的编程能力,有优秀的设计和代码品位;

3、深刻理解计算机原理, 有良好的数据结构和算法基础;

4、熟悉微服务架构,熟悉 Nginx、Mysql、Redis、消息队列等常用组件,并有能力定制化改进;

5、有高并发服务设计和实现经验优先,有较好的产品意识优先,有游戏行业经验优先;

6、积极乐观,责任心强,工作认真细致,具有良好的团队沟通与协作能力;

7、热爱编程,有较强的学习能力,有强烈的求知欲、好奇心和进取心,能及时关注和学习业界最新技术。

✨面试问题回顾:

1. 自我介绍

2. 说一下项目的系统架构

我们项目采用分层架构,从下往上依次是数据接入层负责数据的收集与导入;业务层进行主要业务逻辑的处理;消息推送层负责消息的推送相关工作;跨领域层处理一些跨越不同领域的事务,同时还有 log 等相关模块用于记录系统运行信息等相关操作。

3. 为什么微服务可以提高 30%的资源利用率

微服务可以提高资源利用率主要原因有以下几点。

  • 首先,微服务可以根据不同业务的需求进行独立的资源分配,避免了传统单体架构中资源过度分配或分配不足的情况。
  • 其次,每个微服务可以独立地进行扩展和收缩,在业务量小的时候减少资源占用,业务量大的时候灵活增加资源。这样能更精准地利用资源,从而提高资源利用率。

4. 微服务拆分,拆分的方法是什么

微服务拆分可以从业务功能角度出发,将具有明确边界的业务功能拆分为独立的微服务,比如将订单管理、用户管理等拆分开。也可以根据数据的关联性进行拆分,如果某些数据在业务上相对独立且与其他数据关联较少,可将相关业务拆分为微服务。还可以从可扩展性方面考虑,把可能需要频繁变动或者独立扩展的部分拆分成单独的微服务。

5. 使用微服务架构其不足之处在哪

微服务架构的不足之处主要在于服务治理的复杂性增加。由于微服务数量众多,服务之间的调用关系复杂,容易出现服务发现、服务注册等方面的问题。另外,数据一致性较难保证,因为数据分布在不同的微服务中,事务管理变得复杂。而且部署和运维成本较高,需要管理多个微服务的部署、监控等工作。

6. 是如何解决这块不足之处的

对于服务治理的复杂性,我们可以采用成熟的服务治理框架,比如 Gozero 等,来简化服务的注册、发现和调用等过程。

在数据一致性方面,可以采用最终一致性的策略,结合分布式事务解决方案,如基于消息队列的事务等。

对于部署和运维成本高的问题,可以通过自动化部署工具和容器化技术,如 DockerKubernetes 等,提高部署效率和管理便利性。

7. 直播间 200 w 人,抢 2000 张优惠券,说下怎么设计

我们可以将用户分组,把 200 万用户分成 20 组,每组大概 10 万人。同时将 2000 张优惠券也平均分为 20 组,每组 100 张。这样可以在一定程度上减少并发压力,提高系统的稳定性和响应速度。

8. 如果客户端发请求超时了,但是实际上已经抢到了,怎么处理

我们利用 Redis 来保存用户是否抢到优惠券的状态。当客户端请求超时但实际上已抢到时,系统直接从 Redis 中获取状态并返回抢到了的信息。不过这是异步处理,详细信息可能还需要进一步的处理才能展示给用户。

9. 如果有一个项目,你是项目负责人来主导,应该如何推进

  • 首先,明确项目目标和需求,制定详细的项目计划,包括各个阶段的里程碑和交付物。
  • 然后,组建合适的项目团队,根据成员的技能和特长分配任务。在项目执行过程中,建立有效的沟通机制,定期召开项目会议,监控项目进度和质量。
  • 最后,及时处理项目中出现的问题和风险,根据实际情况调整项目计划。在项目完成后进行总结和复盘,为后续项目积累经验。

10. 其他的测试不认同你的方案,应该怎么办

会与测试人员进行充分的沟通,了解他们不认同的具体原因和关注点。然后,从他们的角度重新审视方案,分析方案中可能存在的问题。如果是误解导致的不认同,我会详细解释方案的设计思路和原理。如果确实存在不足,我会与团队成员一起探讨改进的方法,综合考虑各方意见,对方案进行优化。

按自己的经验回答

11. 编程题

题目: 小于 n 的最大数

题目描述:

给定一个数 n,如 23121;给定一组数字 A 如 {2,4,9},求由 A 中元素组成的、小于 n 的最大数,如小于 23121 的最大数为 22999。

思路:

从高位到低位遍历给定的数 n,对于每一位数字,在给定的数字集合 A 中找到小于该位数字的最大数字进行替换。如果找不到小于该位数字的数字,则保持该位数字不变。从左到右依次进行替换,直到构建出小于 n 的最大数。例如对于 23121 和 {2,4,9},从高位开始,第一位 2 保持不变,第二位 3 可替换为 2,后面尽量用大数字 9 填充,得到 22999。

12. 反问

公司业务是什么?

欢迎关注 ❤

我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。

没准能让你能刷到自己意向公司的最新面试题呢。

感兴趣的朋友们可以私信我。

相关文章:

字节跳动的微服务独家面经

在之前的文章中也介绍了相关微服务的项目开发知识,那么在本文中我将分享一份来自字节跳动相关岗位的面试经历,在其中我们一起来看看面试问题的详细内容,如果有对微服务的感兴趣的朋友们也可以联系我了解我们的微服务项目,也希望该…...

嵌套函数的例子(TypeScript)

在 TypeScript 中,嵌套函数是指在一个函数内部定义另一个函数。嵌套函数可以访问外部函数的变量(闭包),并且可以在内部进行调用。下面是一个简单的例子来说明嵌套函数的使用: function outerFunction(outerVariable: …...

0915,SOCKET网络编程部分,三种I/O多路复用模型(select ,poll,epoll)

目录 nc 127.0.0.1 port 01_socket_client.cc 01_socket_server.cc 02_select_client.cc 02_select_server.cc 03_poll_server.cc 04_epoll_server.cc 01_socket_client.cc #include <stdlib.h> #include <string.h> #include <sys/stat.h> #inclu…...

HarmonyOS 应用获取公钥和 MD5 指纹签名信息

鸿蒙版本获取 MD5 指纹和公钥可参考如下方式; 首先,通过 AGC 官网 将所需证书下载至本地; 其次,通过记事本或者文本编译器的方式将其正式打开,将其内容中前两项 BEGIN CERTIFICATE 和 END CERTIFICATE 的段落删除,仅保留最后一段中的内容(包括 BEGIN CERTIFICATE 和 END CERTI…...

封装一个录音声音振动效果的组件

目标&#xff1a;根据声音的大小实现声音振动特效 实现步骤&#xff1a; 通过 getAudioCapturerMaxAmplitude 观察音频区间封装振动组件&#xff0c;通过声音振幅数据实现振动效果 落地代码&#xff1a; 1&#xff09;获取振幅数据&#xff0c;出入振动组件 AudioPage.ets …...

Java、JS与Go的扩展操作符,揭秘它们的‘魔法’!

在这个快节奏的互联网时代&#xff0c;程序员们总是希望能够用更简洁、更高效的方式来编写代码。扩展操作符&#xff08;Spread Operator&#xff09;是 JavaScript ES6 引入的重要特性&#xff0c;而 Java 和 Go 也有各自的方式来实现类似的功能。今天&#xff0c;我们就来深入…...

ROS学习笔记13——rosbag功能包的简单使用

rosbag是用于录制和回放 ROS 主题的一个工具集&#xff0c;实现了数据的复用&#xff0c;方便调试和测试。rosbag本质也是ros的节点&#xff0c;当录制时&#xff0c;rosbag是一个订阅节点&#xff0c;可以订阅话题消息并将订阅到的数据写入磁盘文件&#xff1b;当重放时&#…...

Python Flask网页开发基本框架

注&#xff1a;Flask详细学习请见Flask学习合集。 直接上代码: app.py from flask import Flaskapp Flask(__name__)app.route("/") def hello():return "Hello, World!"if __name__ "__init__":app.run(host "127.0.0.1", port…...

Mybatis-plus进阶篇(五)

文章目录 条件构造器补充知识TypeHandlerWrappers示例&#xff1a; 线程安全性示例&#xff1a; 使用 Wrapper 自定义 SQL示例&#xff1a;使用方法 使用注解查询使用XML配置查询链式调用与Lambda式调用 条件构造器补充知识 TypeHandler 在 wrapper 中使用 typeHandler 需要特…...

交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面

一、介绍 交通标志识别系统。本系统使用Python作为主要编程语言&#xff0c;在交通标志图像识别功能实现中&#xff0c;基于TensorFlow搭建卷积神经网络算法模型&#xff0c;通过对收集到的58种常见的交通标志图像作为数据集&#xff0c;进行迭代训练最后得到一个识别精度较高…...

【QT】定时器使用

文章目录 关于 Qt 定时器使用的注意细节总结实例-检查工具使用周期时间是否合理UI设计头文件 remind.h源文件 remind.cpp实现效果 关于 Qt 定时器使用的注意细节总结 一、创建与初始化 使用 QTimer 类来创建定时器。可以在构造函数中指定父对象&#xff0c;确保定时器在正确的…...

虚拟机:3、(待更)WSL2安装Ubuntu系统+实现GPU直通

WSL2实现linux子系统GPU直通 安装WSL2和Ubuntu 见https://blog.csdn.net/bule_shake/article/details/135992375 问题&#xff1a;wsl --update进度卡住 如果命令wsl --update进度一直为0&#xff0c;可以先运行wsl --shutdown&#xff0c;然后再次升级。 微软商店打不开、…...

CSP-J2024年全真模拟题 阅读程序篇2

因为明天考试&#xff0c;这回给大家准备了超详细的解析~ 22.程序中 n 和 m 只有输入正整数&#xff0c;程序的输出值才可能是 YES A.对B.错 23.程序中用到了递归函数 bool fun&#xff08;int n&#xff09; A.对B.错 24.若输入 n 和 m 都是素数&#xff0c;程序的输出值…...

几种手段mfc140u.dll丢失的解决方法,了解mfc140u.dll

在使用Windows操作系统时&#xff0c;许多用户可能会遇到“找不到mfc140u.dll”或“mfc140u.dll未找到”的错误提示。这个错误通常是由于该文件丢失或损坏所致。本文将详细介绍mfc140u.dll文件的作用、丢失的原因及其解决方法&#xff0c;帮助您快速恢复系统的正常运行。 一、m…...

Scrapy爬虫框架 Spider Middleware 爬虫页中间件

在当今的互联网时代,数据的收集和分析变得越来越重要,爬虫技术作为数据获取的重要手段,受到广泛关注。Scrapy 是一个广受欢迎的 Python 爬虫框架,它以其高效、灵活和易于扩展的特点,成为了开发者的首选工具之一。Scrapy 框架中的中间件(Spider Middlewares)是扩展和定制…...

localectl 命令:系统语言、键盘布局和区域设置

一、命令简介 ​localectl​ 是 Linux 系统中用于查询和配置系统语言、键盘布局和区域设置的命令。它属于 systemd​ 系统和服务管理器的一部分&#xff0c;允许用户通过简单的命令行接口更改与本地化相关的配置。 ‍ 相关命令&#xff1a; 如果是时间相关的设置&#xff0…...

《微信小程序实战(3) · 推广海报制作》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…...

SS-MUSIC

SS-MUSIC 相干信号源带来的缺秩问题什么是中心对称阵列什么是前后向平均技术什么是 SS-MUSIC 算法SS-MUSIC 能解相干的原因SS-MUSIC 改进算法总结参考文献 本文讨论针对一维均匀线阵&#xff08;ULA&#xff0c;Uniform Linear Array&#xff09;的空间平滑 MUSIC&#xff08;S…...

Spring Cloud Gateway组件

Spring Cloud Gateway是Spring Cloud生态系统中的一个关键组件&#xff0c;它基于Spring Framework 5、Spring Boot 2和Project Reactor等技 术构建&#xff0c;为微服务架构提供了强大且灵活的网关服务。以下是对Spring Cloud Gateway的详细介绍&#xff1a;一、概述 Spring …...

激发AI创造力:掌握Prompt提示词的高效提问方法

AI内容创作的核心&#xff1a;提示词Prompt 在AI内容创作中&#xff0c;提示词&#xff08;Prompt&#xff09;是关键因素&#xff0c;能有效引导AI生成高质量、符合预期的内容。通过合理组织提示词&#xff0c;创作者可以大幅提升AI输出的准确性和专业度。掌握提示词的编写技…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...