先说一句:面试官上来强调自己不是学java的,主要探讨为主,可是我发现面试官问的问题一点都不像没学过java~
共面了1小时40分钟
1.java垃圾回收机制
新生代/老年代 其它垃圾回收机制
2.java面向对象特性
继承
封装
多态
3.设计模式
4.单例模式
5.map的底层实现
6.hash函数如何实现
7.哈希冲突的解决方法
再哈希
建立公共缓冲区
8.hashmap查询复杂度/降低复杂度方法
9.hashmap线程不安全
10.juc中的concurrentHashmap如何保证线程安全
11.常用的集合类型
arraylist
linkedlist
12.arrayList和linkedList区别
13.链表中如何使查询速度更快
建索引?
14.知道哪些本地缓存?redis?lru?
15.计算机网络七层模型
16.浏览器每一个标签页都是一次tcp连接吗
17.http和https的比较
18.https加密算法是对称的还是非对称的?
19.TCP三次握手四次挥手
20.伪造第三次握手,如何保证?
21.syn攻击?还是什么攻击?
22.TIME_WAIT作用
23.多路复用、epoll方法的优点 存储连接的是链表吗
select poll epoll
24.进程和线程
25.线程间通信
26.进程间通信
27.共享内存是在A进程中还是B进程?
应该都不是
28.线程间同步
29.sychronized和RetrantLock异同点
30.乐观锁和悲观锁,他们的效率
31.每次请求都是对锁的一个修改,两种策略效率如何
32.排序算法及各自的最好最坏复杂度及稳定性
33.归并排序和快速排序的算法思想
分治
34.快速排序的最坏情况,如何改变
35.相同的子问题可以用分治法,那不同的子问题?
36.最后一题算法题
牛客网本题讨论链接
小Q在进行一场竞技游戏,这场游戏的胜负关键就在于能否争夺一条长度为L的河道,即可以看做是[0,L]的一条数轴。
这款竞技游戏当中有n个可以提供视野的道具--真视守卫,第i个真视守卫能够覆盖[xi,yi]。现在小Q想知道至少用几个真视守卫就可以覆盖整段河道。
输入描述:
输入包括n+1行
第一行包括两个正整数n和L(1<=n<=10^5,1<=L<=10^9)
接下来的n行,每行两个正整数xi,yi(0<=xi<=yi<=10^9),表示第i个真视守卫覆盖的区间
输出描述,一个表示最少需要的真视守卫数量,如果无解,输出-1。
样例:
输入:
4 6
3 6
2 4
0 2
4 7
输出
3
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int L = input.nextInt();
int[][] nums = new int[n][2];
int ce = 0;
while (ce < n) {
nums[ce][0] = input.nextInt();
nums[ce][1] = input.nextInt();
ce++;
}
System.out.println(guidenum(nums, L));
}
public static int guidenum(int[][] nums, int L) {
int count = 0;
Arrays.sort(nums, (a, b) -> a[0] - b[0]);
int start = 0, end = 0;
for (int i = 0; start < L; ) {
for (; i < nums.length && nums[i][0] <= start; i++)
end = Math.max(end, nums[i][1]);
if (start == end) {
return -1;
}
start = end;
count++;
}
return count;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。