5.11 上午10点到12点
①题量不大 20道选择题+3道编程题
选择题考察范围很大,基本上覆盖了计算机专业基础知识408(数据结构+计算机网络+操作系统+计算机组成原理)+编译原理
编程题会前两道,第三道涉及到图论,搜索之类的。
②选择题考察点:
差分曼彻斯特编码
os安全性检测算法(类似于哲学家进餐问题)
Java异常处理设计模式
后缀表达式
子网掩码
TCP三次握手
平衡二叉树
上下文无关文法(编译原理)
③编程题第一题:
④实现代码
package ceshi1;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int N;
Scanner in = new Scanner(System.in);
N = in.nextInt();
//字典序,先存储,用集合/字典/
HashMap<String, Integer> mapA = new HashMap<>();
HashMap<String, Integer> mapB = new HashMap<>();
HashMap<String, Integer> mapC = new HashMap<>();
//账户集合
HashSet<String> set = new HashSet<>();
//账户数组
ArrayList<String> list = new ArrayList<>();
while(N-->0) {
String info = in.next();
// System.out.println(info);
char[] s = info.toCharArray();
int i=0;
for(;s[i]!=',';i++) {}//切割字符串
String name = new String(s,0,i);//账户
char category = s[i+1];//货物种类
//不存在创造key,value
if(!list.contains(name)) {
list.add(name);
mapA.put(name, 0);//置零
mapB.put(name, 0);//置零
mapC.put(name, 0);//置零
}
//按种类递增
if(category =='a') {
mapA.replace(name, mapA.get(name)+1);
}
if(category =='b') {
mapB.replace(name, mapB.get(name)+1);
}
if(category =='c') {
mapC.replace(name, mapC.get(name)+1);
}
}
Collections.sort(list);//排序
// for(String s : list)
// System.out.println(s);
// 遍历集合,判断每一个账户的情况
for(String name : list) {
int a = mapA.get(name);
int b = mapB.get(name);
int c = mapC.get(name);
// System.out.print(name+" "+a+" "+b+" "+c);
if(a==0)
System.out.println(name+",valid");
else if(a==1&&b<=5&&c<=5)
System.out.println(name+",000");
else if(a>1||b>5||c>5)//有一个超过就填
System.out.println(name+","+String.valueOf(a-1>0?a-1:0)+String.valueOf(b-5>0?b-5:0)+String.valueOf(c-5>0?c-5:0));
}
}
}
#美团##实习##互联网##测试##java#