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

1.自我介绍

因为看了你的简历,大概了解了你的情况,今天就不自我介绍了。面试开始之前先了解下你现在的情况?

问1:面试官问了为啥 选择放弃现在的工作,选择面字节?

答1:在日常工作中,发现自己很享受写代码,解决问题的过程,所以打算继续从事互联网的工作。

问2:我们岗位的base在深圳,你确定是没有问题的吗?你现在不在深圳吧?

答2: 没问题,我的目标base地就是深圳。

2.算法题

2.1 热身题

问题描述:我有一个整型数字,比如:1234567, 请你写一个算法能把这个数字进行翻转,变成:7654321。要求:翻转过程中不能把数字转成字符串或者字符进行处理。

我的疑问:

(1)这个数字可能会是负数吗?如果是负数,负号‘-’保持不变,翻转其他数字?

(2)这个数字翻转后如果超过整数的最大值: Integer.MAX_VALUE, 我可以直接返回Integer.MAX_VALUE吗?

2.2 中等难度的算法题:凑零钱问题

问题描述:我有[1, 2, 5, 10, 20, 50, 100, 200, 500] 这样的一堆硬币,如果我需要凑出525这样的一个零钱总数,最少需要多少个硬币?每个硬币可以重复使用多次。如果不能凑出这个零钱总数,则返回-1

代码:

import java.util.Arrays;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int n = reader.nextInt();
        int aim = reader.nextInt();
        int[] arr = new int[n + 1];
        for (int i = 1; i <= n; i++) {
            arr[i] = reader.nextInt();
        }
        int[] dp = new int[aim + 1];
        // 完全背包
        Arrays.fill(dp, Integer.MAX_VALUE);
        dp[0] = 0;
        for (int i = 1; i <= aim; i++) {
            for (int j = 1; j <= n; j++) {
                if (i >= arr[j]) {
                    dp[i] = Math.min(dp[i - arr[j]] + 1, dp[i]);
                }
            }
        }
        if (dp[aim] == Integer.MAX_VALUE)
            System.out.println(-1);
        else
            System.out.println(dp[aim]);
    }
}

全部评论
请问lz是面的字节深圳什么部门呀
点赞 回复 分享
发布于 06-10 21:38 北京

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务