中国人寿保险软件开发机试题 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;
}
更多推荐
所有评论(0)