试题一:
我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如: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;}