当前位置: 首页 > 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输出的准确性和专业度。掌握提示词的编写技…...

定时任务XXL-Job

目录为什么是XXL-Job&#xff1f;SpringBoot 整合XXL-Job1&#xff09;环境准备2&#xff09;SpringBoot 项目依赖3&#xff09;application.yml 配置4&#xff09;XXL-Job 配置类5&#xff09;定时任务业务类&#xff08;核心代码&#xff09;6&#xff09;调度中心Web可视化界…...

基于九轴传感器 + K-means 聚类的振动异常检测实战教程

&#xff08;嵌入式 / 工业监测场景&#xff1a;设备振动、电机故障、结构松动、碰撞异常实时检测&#xff09;一、前言&#xff08;你能学到什么&#xff09;这篇文章不讲虚的&#xff0c;直接带你做一个工业级轻量异常检测系统&#xff1a;用 LSM6DS3TR-C&#xff08;6 轴&am…...

ollama部署本地大模型|embeddinggemma-300m跨境电商评论情感迁移学习实践

ollama部署本地大模型&#xff5c;embeddinggemma-300m跨境电商评论情感迁移学习实践 1. 环境准备与快速部署 想要在本地运行强大的文本嵌入模型吗&#xff1f;今天我来手把手教你用ollama部署embeddinggemma-300m&#xff0c;这是一个只有3亿参数但效果惊人的小模型&#xf…...

最好用的服务器文件传输工具:SSHFerry(下载见结尾)

为了 AutoDL 传文件更快更省心&#xff0c;我自己做了个 SSH 工作区&#xff1a;SSHFerry&#xff08;下载见结尾&#xff09; 之前我写过一篇和 AutoDL 上传有关的文章&#xff0c;没想到后面慢慢有了 1 万多阅读。 但那篇文章现在回头看&#xff0c;我觉得还是有点不够负责。…...

安卓音频问题解决记录(一)

本文记录在安卓framework开发过程中遇到的一些音频问题的解决办法。 1.支持多应用同时录音(安卓10以上) 通过日志分析,发现当另一个应用打开录音的时候会被静音,日志如下: APM_AudioPolicyManager: setAppState(portId:43, state:2) APM_AudioPolicyManager: set…...

第四天(实习无忧)

##文件结束的判定&#xff0c;编译与链接##1.文件结束的判定&#xff1a;fgetc(pf)读取结束返回EOF&#xff0c;fgets(arr,100,pf)读取结束返回NULL&#xff0c;fread(arr,sizeof(int),n,pf)读取结束返回对应的n。而成功读取到文件尾结束可以用feof(pf)判断&#xff0c;若中途因…...

市场推广需要哪些数据分析能力?渠道评估、归因和转化怎么分析

市场推广数据分析能力框架市场推广的核心在于数据驱动决策&#xff0c;掌握以下能力可显著提升推广效果。CDA数据分析师证书持证者通常在这些领域具备系统化知识。能力维度关键技能应用场景数据采集能力熟悉Google Analytics、Adobe Analytics等工具&#xff0c;掌握UTM参数设置…...

5MB轻量级中文字体:WenQuanYi Micro Hei完全指南

5MB轻量级中文字体&#xff1a;WenQuanYi Micro Hei完全指南 【免费下载链接】fonts-wqy-microhei Debian package for WenQuanYi Micro Hei (mirror of https://anonscm.debian.org/git/pkg-fonts/fonts-wqy-microhei.git) 项目地址: https://gitcode.com/gh_mirrors/fo/fon…...

为什么很多实时图表方案会失败?

在监控系统、IoT设备平台、金融行情等场景中&#xff0c;“实时数据可视化”已经成为前端的核心能力之一。很多开发者在 React 项目中尝试实现实时图表时&#xff0c;往往会遇到卡顿、延迟甚至内存增长的问题。在 React 中实现实时图表&#xff0c;推荐使用 Highcharts&#xf…...

Notepad-- 终极中文编辑器:从零开始打造你的专属高效文本工作流

Notepad-- 终极中文编辑器&#xff1a;从零开始打造你的专属高效文本工作流 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器&#xff0c;目标是做中国人自己的编辑器&#xff0c;来自中国。 项目地址: https://gitcode.com/GitHub_Trending/no/notepad-- …...