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

news2024/9/20 5:40:37

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

💼岗位职责:

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. 反问

公司业务是什么?

欢迎关注 ❤

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

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

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

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

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

相关文章

使用 MobaXterm 远程连接 Linux 虚拟机并实现文件传输

文章目录 前言一、什么是 MobaXterm二 、MobaXterm 安装三、使用 MobaXterm 远程连接 Linux 虚拟机1. 准备工作2. 创建 SSH 连接3. 登录虚拟机 四、使用 MobaXterm 进行文件传输总结 前言 在日常开发和运维中,Windows 用户经常需要通过远程连接到 Linux 服务器进行…

链式栈讲解

文章目录 🍊自我介绍🍊链式栈入栈和出栈linkstack.hlinkstack.c 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连)哦~ 🍊自我介绍 Hello,大家好,我是小珑也要…

UBUNTU20.04安装CH384串口卡驱动

继续上文:统信UOS安装CH384串口卡驱动-CSDN博客 统信UOS系统成功安装CH384串口驱动后,继续在ubuntu20.04下安装驱动,发现一直报错,原因是内核驱动不一致。 解决办法: 1. 下载最新的驱动。CH35XCH384驱动源文件资源-C…

【WPF】02 按钮控件圆角配置及状态切换

按钮圆角 先从工具箱里拖进来一个Button控件&#xff0c;然后对这个按钮进行美化。 首先在 xaml 里按钮控件部分 添加如下代码&#xff1a; <Button x:Name"btnLogin" Content"登录" HorizontalAlignment"Center" Margin"0,399,0,0&q…

报错合计-1

向开发描述&#xff1a;先勾选一个病灶后复制&#xff0c;控制台报错 报错类型查询后为前端DOM节点相关报错&#xff0c;提给前端开发 报错解释&#xff1a; TypeError: Failed to execute selectNode on Range: parameter 1 is not of type Node 这个错误表明你尝试使用 Range…

【机器学习】:深潜智能的底层逻辑、前沿探索与未来展望】

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 在科技的浩瀚星空中&#xff0c;机器学习犹如一颗璀璨的新星&#xff0c;以其独特的魅力和无限潜力&#xff0c;引领着我们向智能的深处探索。今天&#xff0c;我们将一同踏上这场深度之旅&#xff0c;不仅解析…

AI时代,服务器厂商能否打破薄利的命运?

文&#xff5c;刘俊宏 编&#xff5c;王一粟 AI大模型正在引发新一轮的“算力焦渴”。 近日&#xff0c;OpenAI刚发布的o1大模型再次刷新了大模型能力的上限。对比上一次迭代的版本&#xff0c;o1的推理能力全方位“吊打”了GPT-4o。更优秀的能力&#xff0c;来自与o1将思维…

Flink官方文档

Flink官方文档&#xff08;全面、详细&#xff09;&#xff1a;https://nightlies.apache.org/flink/flink-docs-master/zh/

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL24

边沿检测 有一个缓慢变化的1bit信号a&#xff0c;编写一个程序检测a信号的上升沿给出指示信号rise&#xff0c;当a信号出现下降沿时给出指示信号down。 注&#xff1a;rise,down应为单脉冲信号&#xff0c;在相应边沿出现时的下一个时钟为高&#xff0c;之后恢复到0&#xff0…

116页PPT麦肯锡方法详解-用简单的方法做复杂的事

读者朋友大家好&#xff0c;最近有会员朋友咨询晓雯&#xff0c;需要《116页PPT麦肯锡方法详解-用简单的方法做复杂的事》资料&#xff0c;欢迎大家文末扫码下载学习。 以下是在实际工作中应用麦肯锡问题解决法的具体方式&#xff1a; 一、项目管理与流程优化领域 界定问题 …

再看Java-笔试

放在前面的话 最近确实有些空闲&#xff0c;分配的功能从一开始的两眼一黑到现在的一上午就能完成&#xff0c;这何尝不是一种进步呢。 该说不说&#xff0c;海康的API问题相比较其他第三方的API还是蛮多的&#xff0c;而且10月份人工客服还会停运&#xff0c;不过到那个时候…

LeetCode54. 螺旋矩阵(2024秋季每日一题 21)

给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a; 输入&#xff1a;matrix [[1,…

由于安全风险,安全领导者考虑禁止人工智能编码

安全团队与开发团队之间的紧张关系 83% 的安全领导者表示&#xff0c;他们的开发人员目前使用人工智能来生成代码&#xff0c;57% 的人表示这已成为一种常见做法。 然而&#xff0c;72% 的人认为他们别无选择&#xff0c;只能允许开发人员使用人工智能来保持竞争力&#xff0…

【Unity】对象池 - 未更新完

自定义泛型对象池 文章目录 自定义泛型对象池封装泛型类例子 使用Unity自带对象池 封装泛型类 public abstract class MyPool<T> : MonoBehaviour where T :Component {[SerializeField] protected T prefab; // 生成的预制体[SerializeField] protected int defaultNum…

Delphi5利用DLL实现窗体的重用

文章目录 效果图参考利用DLL实现窗体的重用步骤1 设计出理想窗体步骤2 编写一个用户输出的函数或过程&#xff0c;在其中对窗体进行创建使它实例化步骤3 对工程文件进行相应的修改以适应DLL格式的需要步骤4 编译工程文件生成DLL文件步骤5 在需要该窗体的其他应用程序中重用该窗…

8.sklearn-模型保存

文章目录 环境配置&#xff08;必看&#xff09;头文件引用1.保存模型代码工程运行结果生成文件 2.加载模型代码工程运行结果 环境配置&#xff08;必看&#xff09; Anaconda-创建虚拟环境的手把手教程相关环境配置看此篇文章&#xff0c;本专栏深度学习相关的版本和配置&…

HTML基础和常用标签

“合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;1. HTML的基本结构解释&#xff1a; 2. 常见标签的介绍2.1 标题和文本2.2 链接和图片2.3 列表2.4 …

云安全 | AWS S3存储桶安全设计缺陷分析

什么是AWS S3&#xff1f; 默认情况下&#xff0c;Amazon S3 是安全的。创建后&#xff0c;只有资源所有者才能访问他们创建的 Amazon S3 资源。 Amazon S3 支持用户身份验证来控制对数据的访问。您可以使用存储桶策略和访问控制列表 (ACL)等访问控制机制来有选择地向用户和用…

solidwork直线画圆弧的操作

效果如下&#xff1a; 踩过好多坑了。 首先选择直线 先点一下这个点拉出来再回到这个点&#xff08;这个过程点一次就可以了&#xff09;&#xff0c;注意注意一定要这么做&#xff01;否则没有圆弧

prime1靶机渗透 (信息收集 内核提权)

靶机信息 vulnhub靶机 prime1 主机发现 -sn 是scan and no port hack 只用于主机发现 ┌──(kali㉿kali)-[~] └─$ sudo nmap -sn 192.168.50.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-09 02:25 EDT Nmap scan report for 192.168.50.1 Host is up …