第一题:Comparable和Comparator区别是什么?
回答:
Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。
第二题:http/2相比http/1.1有什么新特性?
回答:
二进制分帧
http1.x是文本格式传输,http2二进制格式传输,并且被切分为多个帧发送,帧可以根据头部流标识重新组装。
单一长连接
同一个域名使用一个TCP连接,能减少握手带来的延时.
多路复用
HTTP/2允许在相同连接中多个请求和回答交错.
头部压缩
用HPACK压缩头部,使用首部表来进行首部字段存储,只有当首部表中的数据变更或为发送过时,才会发送HTTP头部字段.首部表分为静态表和动态表,静态表包含常用字段,动态表包含自定义字段等非常用字段,当新增或改变字段时,会增加或修改动态表中的数据.
服务器推送
客户端请求资源X,服务器判断客户端还需要别的资源,可以主动推送这些资源,客户端需要显示允许服务器启用推送功能.
第三题:A公司和B公司有n个合作的子项目,每个子项目由A公司和B公司各一名员工参与。一名员工可以参与多个子项目。 一个员工如果担任了该项目的项目经理,它需要对所参与的该项目负责。一个员工也可以负责多个项目。 A公司和B公司需要保证所有子项目都能有人负责,问最少需要指定几名项目经理?
回答:
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String left = sc.nextLine();
String right = sc.nextLine();
int n = sc.nextInt();
String[] l = left.split(" ");
String[] r = right.split(" ");
int[] a = new int[l.length];
int[] b = new int[r.length];
HashMap<Integer, Integer> num = new HashMap<Integer, Integer>();
int count = 0;
int length = a.length + b.length;
int[][] map = new int[length][length];
int[] match = new int[length];
Boolean[] used = new Boolean[length];
for (int i = 0; i < length; i++)
{
Arrays.fill(used, false);
Arrays.fill(map[i], -1);
Arrays.fill(match, -1);
}
for (int i = 0; i < a.length; i++)
{
a[i] = Integer.valueOf(l[i]);
num.put(a[i], i);
}
for (int i = 0; i < b.length; i++)
{
b[i] = Integer.valueOf(r[i]);
num.put(b[i], i + a.length);
}
for (int i = 0; i < n; i++)
{
int xx = sc.nextInt(