北京-字节跳动-生活服务-一面-技术面

  1. 自我介绍(个人+学校+实习收获)
  2. 是否存在其他offer,或者存在流程中
  3. 实习拷打实习问题
  4. 京东结算页进行数据预热的时机是什么?
  5. 主站商品,点击购买弹起的结算页?
  6. 预热的时机是什么?
  7. 怎么理解结算页前台,和结算页中台?用户是否感知?
  8. 提供的预热接口都做了哪些事情呢?
  9. 结算页中台,缓存,预热流程还没有结束,我们应该怎么做?
  10. 缓存维度是什么?每次点开结算页是否在请求一次呢?
  11. 京东这边是否还在实习,没有考虑在京东转正吗?是否有提转正申请?
  12. 主导收单迁移说一下
  13. 基础知识
  14. 数据库知识:
  15. 联合索引,举例子 建立了(a,b,c) 联合索引,范围查询的时候 只用到了 a,c,索引的使用情况,并分析其原因;
  16. 联合索引底层数据结构是什么样子的?非叶子节点是什么的
  17. 实际问题:使用手机号作为主键的优缺点手机号是否有序?
  18. Java 语言基础
  19. Java 中继承和多态的概念
  20. Java 中访问限定修饰符的概念
  21. 算法题:比较版本最大值,版本号示例为:"1.2.1", "1.2",1.2.1 > 1.2
import java.util.Arrays;

public class MaxVersionFinder {
    public static void main(String[] args) {
        // 示例版本号数组
        String[] versions = {"1.1", "1.2", "1.2.1"};
        
        // 找出最大版本号
        String maxVersion = findMaxVersion(versions);
        
        // 输出结果
        System.out.println("版本号列表: " + Arrays.toString(versions));
        System.out.println("最大版本号: " + maxVersion);
    }
    
    /**
     * 找出版本号数组中的最大版本号
     */
    public static String findMaxVersion(String[] versions) {
        if (versions == null || versions.length == 0) {
            return null;
        }
        
        String maxVersion = versions[0];
        for (String version : versions) {
            if (compareVersions(version, maxVersion) > 0) {
                maxVersion = version;
            }
        }
        return maxVersion;
    }
    
    /**
     * 比较两个版本号的大小
     * @return 正数表示version1 > version2,负数表示version1 < version2,0表示相等
     */
    public static int compareVersions(String version1, String version2) {
        // 将版本号按"."分割成数字数组
        String[] parts1 = version1.split("\\.");
        String[] parts2 = version2.split("\\.");
        
        // 取两个版本号中较长的长度作为比较的轮次
        int maxLength = Math.max(parts1.length, parts2.length);
        
        for (int i = 0; i < maxLength; i++) {
            // 对于较短的版本号,超出部分视为0
            int num1 = i < parts1.length ? Integer.parseInt(parts1[i]) : 0;
            int num2 = i < parts2.length ? Integer.parseInt(parts2[i]) : 0;
            
            if (num1 > num2) {
                return 1;
            } else if (num1 < num2) {
                return -1;
            }
            // 如果相等则继续比较下一部分
        }
        
        // 所有部分都相等
        return 0;
    }
}

#发面经攒人品#

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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