中国人寿保险软件开发机试题 java实现

试题一:

我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下:
1、 长度13位;
2、 以86的国家码打头;
3、 手机号码的每一位都是数字。
请实现手机号码合法性判断的函数(注:考生无需关注手机号码的真实性,
也就是说诸如86123123456789这样的手机号码,我们也认为是合法的),要求:
1) 如果手机号码合法,返回0;
2) 如果手机号码长度不合法,返回1
3) 如果手机号码中包含非数字的字符,返回2;
4) 如果手机号码不是以86打头的,返回3; 
 

public static int verifyMsisdn(String tel){

        if (tel == null){
            throw new RuntimeException("手机号不能为空");
        }
        int len = tel.length();
        if (len != 13){
            return 1;
        }
        for (int i = 0; i < len; i++){
            if (!Character.isDigit(tel.charAt(i))){
                return 2;
            }
        }
        if (tel.charAt(0) != '8' || tel.charAt(1) != '6'){
            return 3;
        }
        return 0;
    }

试题二:

操作系统任务调度问题。操作系统任务分为系统任务和用户任务两种。其中, 系统任务的优先级 < 50,用户任务的优先级 >= 50且 <= 255。优先级大于255的为非法任务,应予以剔除。 现有一任务队列task[],长度为n,task中的元素值表示任务的优先级,数值越小,优先级越高。  函数scheduler实现如下功能: 

将task[] 中的任务按照系统任务、用户任务依次存放到 system_task[] 数组和 user_task[] 数组中  (数组中元素的值是任务在task[] 数组中的下标),并且优先级高的任务排在前面,数组元素为-1表示结束。 

例如: 

task[] = {0, 30, 155, 1, 80, 300, 170, 40, 99}     

system_task[] = {0, 3, 1, 7, -1}     

user_task[]  =  {4, 8, 2, 6, -1} 

 public static void scheduler(int[] task, int n, int[] system_task, int[] user_task){

        if(task == null || system_task == null || user_task == null || n < 0){
            throw new RuntimeException("输入参数有误");
        }
        int system_index = 0;
        int user_index = 0;

        for (int i =0; i < n; i++){
            if (task[i] > 255){
                continue;
            }else if (task[i] >= 0 && task[i] < 50){
                system_task[system_index++] = i;
            }else if (task[i] >= 50 && task[i] <= 255){
                user_task[user_index++] = i;
            }
        }

        for (int i = 0; i < system_index - 1; i++){
            for (int j = 0; j < system_index - 1 - i; j++){
                if (task[system_task[j]] >task[system_task[j + 1]]){
                    int temp = system_task[j];
                    system_task[j] = system_task[j + 1];
                    system_task[j + 1] = temp;
                }
            }
        }
        system_task[system_index] = -1;

        for (int i = 0; i < user_index - 1; i++){
            for (int j = 0; j < user_index - 1 - i; j++){
                if (task[user_task[j]] > task[user_task[j + 1]]){
                    int temp = user_task[j];
                    user_task[j] = user_task[j + 1];
                    user_task[j + 1] = temp;
                }
            }
        }
        user_task[user_index] = -1;
    }

 

你可能感兴趣的:(java笔记)