23年12月字节一面面试回顾

一、12月15日一面

1.自我介绍

(1)介绍自己过往的工作经历, balabla...

(2)面试官询问了我目前的工作状态以及在上家公司的级别,离职的原因等等

2.项目介绍以及项目相关问题

面试官让我随机从简历上写的项目挑一个来介绍,介绍完成后基于项目的情况挑选了一些问题。

(1)问题1: 你们项目用的存储DB是什么?为什么用选择这种DB?

(2)问题2: 既然你们项目采用了读写分离的微服务架构,请问你们的数据接入服务是如何保证数据写入接口调用的幂等性,

你们的request_id生成规则是怎样的?

(3)问题3: 你们项目的整个技术框架是怎样的?包含了哪几层,每一层是怎样交互的?

(4)问题4: 听你提到你们项目使用了spring-cloud gateway这个开源框架作为项目对外网关的基础框架,为什么选择了这个组件来搭建网关,而不是zuul?

(5)问题5: 请你说一说spring-cloud gateway的大概实现流程是怎样的,调用网关的请求会经过哪些处理流程?

(6)问题6: 如果让你对你们这个项目优化,你觉得这个项目的查询适合用图数据库存储还是关系型数据库存储?

(7)问题7: 看你简历上写了使用过ClickHouse, ClickHouse为啥可以查询那么快,底层的实现是怎样的?ClickHouse跟Mysql有什么不同?

3. 算法题

(1)简单逻辑题

问题描述:有36辆赛车和6条跑道,没有计时器的前提下,最少用几次比赛可以筛选出最快的3辆赛车?

(2) 算法编码题

问题描述

给你一个大小为 m x n 的二进制矩阵 grid。

岛屿 是由一些相邻的 0 (代表土地) 构成的组合,这里的「相邻」要求0 必须在 水平或者竖直、对角线的八个方向上 相邻。你可以假设 grid 的四个边缘都被 1或2(代表水)包围着。

岛屿的面积是岛上值为 0的单元格的数目。

计算并返回 grid 中各个岛屿面积的列表。要求各岛屿的面积按照升序排序

public class Main {
    boolean[][] visited = new boolean[4][4];
    int[][] directions = new int[][] {
            {1, 0}, {-1, 0}, {0, 1}, {0, -1}, {1, 1}, {-1, -1}, {1, -1}, {-1, 1}
    };

    public static void main(String[] args) {
        int[][] grid = new int[][]{{0, 2, 1, 0}, {0, 1, 0, 1}, {1, 1, 0, 1}, {0, 1, 0, 1}};
        Main main = new Main();
        final List<Integer> res = main.findPoolSizes(grid);
        for (int item : res) {
            System.out.println(item);
        }
    }

    public List<Integer> findPoolSizes(int[][] grid) {
        if (grid == null || grid.length == 0) {
            return Collections.EMPTY_LIST;
        }

        int m = grid.length;
        int n = grid[0].length;

        List<Integer> res = new ArrayList<>();

        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (grid[i][j] == 0 && !visited[i][j]) {
                    res.add(dfs(grid, m, n, i, j));
                }
            }
        }
        Collections.sort(res);
        return res;
    }

    private boolean judge(int m, int n, int row, int col) {
        if (row < 0 || row >= m || col < 0 || col >= n) {
            return false;
        }

        if (visited[row][col]) {
            return false;
        }

        return true;
    }

    private int dfs(int[][] grid, int m, int n, int row, int col) {
        if (!judge(m, n, row, col)) {
            return 0;
        }


        if (grid[row][col] != 0) {
            return 0;
        }

        visited[row][col] = true;

        int poolSize = 1;
        for (int i = 0; i < directions.length; i++) {
                final int nextRow = row + directions[i][0];
                final int nextCol = col + directions[i][1];
                poolSize += dfs(grid, m, n, nextRow, nextCol);
        }

        return poolSize;
    }
}

#字节面试题##面试流程问题#
全部评论

相关推荐

震撼沃玛一整年:查看图片
点赞 评论 收藏
分享
评论
1
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务