当前位置: 首页 > 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. 反问

公司业务是什么?

欢迎关注 ❤

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

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 52 文本预处理_by《李沐:动手学深度学习v2》pytorch版
  • docker面经
  • 【ASE】第三课_山丘颜色梯度效果
  • C++——输入三个整数,按照由小到大的顺序输出。用指针方法处理。
  • HTTP(超文本传输协议)基础
  • 【洛谷】P4588 [TJOI2018] 数学计算 的题解 + 线段树板子代码
  • 示例:WPF中Grid显示网格线的几种方式
  • 常见服务端口号和中文大全
  • 2409js,学习js1
  • 【安当产品应用案例100集】017-助力软件服务商高效集成多因素认证
  • 深入探讨 Flask、Gunicorn、Gevent 与 RecursionError:事件循环与 Monkey Patching 的正确使用
  • 常见区块链数据模型介绍
  • 深圳前海壹方汇的免费停车点探寻
  • linux之进程信号
  • ETCD学习使用
  • 2017-08-04 前端日报
  • 77. Combinations
  • Flex布局到底解决了什么问题
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • interface和setter,getter
  • Phpstorm怎样批量删除空行?
  • php中curl和soap方式请求服务超时问题
  • Redis 中的布隆过滤器
  • vue-cli3搭建项目
  • vue中实现单选
  • 初识 beanstalkd
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 工程优化暨babel升级小记
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 详解NodeJs流之一
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • Java总结 - String - 这篇请使劲喷我
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #define,static,const,三种常量的区别
  • #前后端分离# 头条发布系统
  • (30)数组元素和与数字和的绝对差
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (六)vue-router+UI组件库
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)程序员疫苗:代码注入
  • (轉貼) UML中文FAQ (OO) (UML)
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .net下的富文本编辑器FCKeditor的配置方法
  • @JoinTable会自动删除关联表的数据
  • [ C++ ] STL---仿函数与priority_queue
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [BZOJ4566][HAOI2016]找相同字符(SAM)