字节一面

发布于 2024-08-30  20 次阅读


  1. 自我介绍
  2. es怎么落库的
  3. 这个项目下单的流程,关联了哪几张表
  4. 支付功能有没有了解过,怎么做的
  5. java的垃圾回收
  6. 通信有哪些方法
  7. 乐观锁,悲观锁
  8. 数据库隔离级别,mvcc
  9. tcp,udp区别
  10. 4次挥手为什么要2msl
  11. java的闭包
  12. 数据库自增id有什么好处
  13. tcp,udp报文格式
  14. redis数据一致性 rdb ads
  15. redolog,binlog
  16. 数据库为什么要用b+树
  17. http和https区别
  18. dns解析过程
        List<Runnable> task = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            task.add(() -> System.out.println(index));
        }

        // 启动线程并执行 Runnable 任务
        for (Runnable runnable : task) {
            Thread t = new Thread(runnable);
            t.start();
        }
       //java的闭包

id a b c
row1 1 2 3 4
row2 2 2 2 3
tx1 开始事务
tx2开始事务
tx2更新row2b=4
tx1查询表 c>=3的数据
tx2commit
tx1查询表 c>=3的数据
查询的结果是什么

算法

给定一个数 n,如 23121;给定一组数字 A 如 {2,4,9},求由 A 中元素组成的、小于 n 的最大数,如小于 23121 的最大数为 22999。

public int findMaxNumberLessThanN(int n, int[] A) {
        char[] nStr = String.valueOf(n).toCharArray();
        Arrays.sort(A);  // 将 A 排序
        StringBuilder result = new StringBuilder();

        for (int i = 0; i < nStr.length; i++) {
            boolean found = false;
            for (int j = A.length - 1; j >= 0; j--) {
                if (A[j] <= nStr[i] - '0') {
                    result.append(A[j]);
                    found = true;
                    break;
                }
            }

            if (!found) {
                // 回退到前一位
                for (int j = result.length() - 1; j >= 0; j--) {
                    for (int k = A.length - 1; k >= 0; k--) {
                        if (A[k] < result.charAt(j) - '0') {
                            result.setCharAt(j, (char) (A[k] + '0'));
                            result.setLength(j + 1);  // truncate the string to the current length
                            for (int l = j + 1; l < nStr.length; l++) {
                                result.append(A[A.length - 1]);
                            }
                            return Integer.parseInt(result.toString());
                        }
                    }
                }
                // 如果回退到第一位仍然无法找到合适的数字,说明无解
                return -1;
            }

            // 如果当前位已经选择了一个小于 nStr[i] 的数字
            if (result.charAt(result.length() - 1) < nStr[i]) {
                for (int j = result.length(); j < nStr.length; j++) {
                    result.append(A[A.length - 1]);
                }
                return Integer.parseInt(result.toString());
            }
        }

        // 检查生成的数字是否小于原数字
        if (Integer.parseInt(result.toString()) >= n) {
            // 回退到前一位
            for (int j = result.length() - 1; j >= 0; j--) {
                for (int k = A.length - 1; k >= 0; k--) {
                    if (A[k] < result.charAt(j) - '0') {
                        result.setCharAt(j, (char) (A[k] + '0'));
                        result.setLength(j + 1);  // truncate the string to the current length
                        for (int l = j + 1; l < nStr.length; l++) {
                            result.append(A[A.length - 1]);
                        }
                        return Integer.parseInt(result.toString());
                    }
                }
            }
            return -1;
        }

        return Integer.parseInt(result.toString());
    }
人生の意味は平凡ですか、それとも素晴らしいですか?
最后更新于 2024-09-05