ToB企服应用市场:ToB评测及商务社交产业平台

标题: 贝壳的面经!怎么好像有点简单? [打印本页]

作者: 北冰洋以北    时间: 2024-8-7 08:31
标题: 贝壳的面经!怎么好像有点简单?
今天禀享粉丝最新投稿的北京贝壳外包面经,我把项目相关的都去掉了,其他的题目整理下来感觉不是很难,你以为呢?换做是你的话你答得出来吗?
面经整理如下
北京贝壳外包

Redis 跟 MySQL 以及 Kafka 之间是什么关系?

Redis 是内存数据布局存储系统,用于快速读写和高并发访问。MySQL 是关系型数据库,用于长期化存储布局化数据。Kafka 是分布式消息队列系统,用于处理大规模消息流和数据分发。
在应用中,MySQL 存主要数据,Redis 加快访问,Kafka 传递消息和解耦组件。例如电商系统中,用户信息在 MySQL,购物车数据在 Redis,订单处理消息通过 Kafka 传递。
Kafka partion的概念

在 Kafka 里,Partion 就是把一个主题的数据分成了好几个部分。  每个 Partion 都是按顺序存消息的,而且这些消息改不了。同一主题的差异 Partion 能放在差异的地方,这样就能让数据处理得更快更平衡。
Partion 有这些用处: 一是存数据,消息按顺序存进去,还给每个消息弄个编号来标明位置。 二是能同时处理,多个 Partion 能让差异的人大概组一起处理,服从高。 三是不容易出错,如果有地方坏了,也就影响那一部分,整个主题的数据不会丢。
Kafka 偏移量

在 Kafka 里边,偏移量就是个数字,专门用来表明消息在分区里处于啥位置。
打个比方,每个消息在分区里都有个独一份的编号,这就是偏移量。消费者读消息的时候,会记住自己读到哪个编号了。下次再读,就知道从哪儿接着来,不会重复读,也不会把消息给漏了。
比如说,偏移量是 5 ,那就说明这是分区里的第 6 条消息(因为偏移量从 0 开始算)。偏移量能保证 Kafka 里消息处理得有顺序,而且不会丢。
比如说有你在线上发现一条慢SQL,你怎么分析它?

使用 explain ,说明:
首先关注“type”这一项。若表现为“ALL”,意味着进行了全表扫描,这通常不是理想情况,需要寻求改进。若表现为“index”或“range”等,则相对较好。
其次留意“possible_keys”和“key”这两项。“possible_keys”表示可能能够使用的索引,而“key”表示现实使用的索引。倘若“key”这一项为空,意味着未使用索引,此时需要探究缘故原由,例如索引创建是否正确。
再者,“rows”这一项也颇为重要,它代表预计扫描的行数。该数值越大,表明需要处理的数据量越多,可能导致查询速度变慢。
另外,“extra”这一项也值得关注。如果出现“Using filesort”大概“Using temporary”等内容,往往意味着存在题目,需要进行优化。
索引的最左前缀原则是什么意思?a > 1 and b = 1 and c = 1, 你看这个能命中这个索引吗?

索引的最左前缀原则就是在创建联合索引时,查询语句用索引的条件得从索引的最左边开始,而且得一连匹配。
对于“a > 1 and b = 1 and c = 1”这个条件,能不能命中索引得看创建的索引是啥样。
要是创建的索引是 (a, b, c) ,那这查询就能命中索引,因为是从最左边的“a”开始匹配的。  可要是创建的索引是 (b, c, a) 大概其他不是以“a”开头的组合,那这查询就不能命中索引。
Redis 常见的数据布局?他们的应用场景?

zset 你一般在什么场景下会用?底层的数据布局是什么?

ZSet(有序集合)通常在以下场景中使用:
Redis中ZSet底层现实有两种数据布局:
一、压缩列表(ziplist)
使用条件(以下两个条件需同时满足) 12:
布局特点:
二、跳跃表(skiplist)
使用条件(只要有一个不满足上述ziplist条件就会切换到跳跃表)12 : 当ZSet存储的元素数目较多,大概元素的字符串长度较长时。
布局特点:
跳跃表通过维护多级索引来实现快速查找和高效的插入、删除、更新元素等操纵2 。它的时间复杂度平均为O(log n) ,性能比力高。
在Redis中ZSet元素的存储和访问等操纵过程中:
JWT 是什么东西?

JWT(JSON Web Token)是一种用于在网络应用情况中进行安全信息传递的开放标准。
它由三部分组成:
头部(Header),通常包含令牌的范例和使用的加密算法;
载荷(Payload),包含声明,比如用户身份信息、权限等;
签名(Signature),用于验证消息的完整性和真实性,防止被篡改。
JWT 的主要优点是无状态,服务器不需要生存会话信息,减轻了服务器的存储负担。它常用于身份验证和授权,比如在单点登录、微服务架构等场景中。用户在登录乐成后获取 JWT 令牌,后续的哀求携带该令牌,服务器通过验证令牌的有效性来确认用户身份和权限。
协程了解吗?和线程对比

协程和线程是在编程中常见的概念,它们有一些明显的区别。
线程是操纵系统层面的概念,由操纵系统进行调理和管理。多个线程可以在同一进程中并发执行,它们共享进程的资源。线程的切换通常由操纵系统控制,开销相对较大。  协程则是在用户态实现的轻量级线程。协程的切换由步伐自身控制,不需要操纵系统的干预,因此协程切换的开销通常比线程小得多。协程更适用于协作式的任务调理,多个协程可以在同一个线程中运行,通过自动让出控制权来实现任务的切换。
在资源消耗方面,线程由于需要操纵系统进行管理和调理,会占用较多的系统资源,如内存等。而协程相对来说资源消耗较少。
在编程模子上,线程的并发模子相对较为复杂,需要处理线程安全、同步等题目。协程的编程模子通常更简单直观,更容易明确和实现复杂的逻辑控制。
一道算法题

找到具有最大和的一连子数组,并返回该子数组
编程题

用两个协程、两个channel循环打印1, 2
[code]package mainimport (   "fmt"   "sync")func Print1(ch1 chan bool, ch2 chan bool, wg *sync.WaitGroup) {   defer wg.Done()   for {




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4