MiniMax - 服务端研发 - 一面(春招第二面)

全程问的比较基础,简单聊了聊项目,到处问点基础八股,最后一个场景题和一个算法题,整体难度不大。自己好久没刷算法题了,只会一种堆解法,硬让我写快排,也是吭吃瘪肚。整体面试过程比较愉快,体验极好,最后反问工作时间,早 10,晚上不确定,一周大部分都是六天,一个月有一周可以双休,给我吓坏了。

技术面经

Intern:

  • jiyun-ns 项目你做了哪些优化
  • dag-engine 为什么需要使用 Redis 分布式锁

Webserver:

  • poll 和 Epoll 有什么区别
  • 水平触发和边沿触发有什么不同

MySQL:

  • 如何优化一条 SQL 语句
  • 事务隔离级别有哪些
  • 可重复读会造成什么问题
  • 如何解决幻读
  • 为什么 InnoDB 底层使用 B+ 树

Redis:

  • 基础数据类型有哪些
  • ZSet 底层实现、为什么更高性能
  • ZSet 底层为什么不使用树结构
  • Redis 如何实现高可用
  • Redis Cluster 如何实现数据分片
  • Redis Cluster 中谁负责切换机器

Scene Problem:

  • 现在有一个爬虫程序已经爬取了几亿条网页信息,如何保证在下一次爬取,可以跳过已经爬取过的网页,如果网页量达到千亿级别怎么办?

LeetCode:

  • 输出数组中第 K 大的数(提示:借用快速排序思想)
#include <iostream>
#include <vector>

using namespace std;

void quick_sort(std::vector<int>& nums, int start, int end, int k) {
    if (start >= end) {
        return;
    }

    int pivot = nums[start];
    int i = start, j = end;
    while (i < j) {
        while (i < j && nums[j] >= pivot) {
            j--;
        }
        swap(nums[i], nums[j]);
        while (i < j && nums[i] <= pivot) {
            i++;
        }
        swap(nums[i], nums[j]);
    }
  
  	// 在快速排序基础上增加了对于 pivot 右侧数组元素个数的判断 (其余与快排相同)
    if (nums.size() - i < k) {
        quick_sort(nums, start, i - 1, k);
    }
    quick_sort(nums, i + 1, end, k);
}

int main() {
    std::vector<int> nums = {1, 5, 9, 2, 3, 1, 4};
    int k = 3;

    int n = nums.size();
    quick_sort(nums, 0, n - 1, k);

    std::cout << nums[n - k] << std::endl;  // 4

    return 0;
}

#春招##软件开发2024笔面经#
全部评论
就会 Redis 一到场景题就是 Redis 硬解 笑嘻了
3 回复
分享
发布于 04-12 17:20 辽宁
初创好像都很卷吧😥
2 回复
分享
发布于 04-13 21:51 安徽
滴滴
校招火热招聘中
官网直投
找第k大用快排的思路是on的,用堆是带log的
1 回复
分享
发布于 04-12 20:08 辽宁
上来就是千亿级别😅
1 回复
分享
发布于 04-15 18:15 上海
佬是准备又冲互联网了吗?
点赞 回复
分享
发布于 04-13 21:09 北京
佬不是已经签了吗
点赞 回复
分享
发布于 04-13 21:19 上海
他家不是用go吗
点赞 回复
分享
发布于 04-15 12:08 安徽
minimax有后续吗佬
点赞 回复
分享
发布于 04-23 22:45 山西

相关推荐

头像
点赞 评论 收藏
转发
3 4 评论
分享
牛客网
牛客企业服务