问的很细,我又是第一次面试,非常紧张,答得非常不好,应该凉凉。不过体验蛮好的,面试官会主动解释帮帮。
介绍完,问项目:项目有什么亮点,系统为什么这么设计,为什么用UDP
在一个数组中找是否有子数组的和==给定值,基础给出true或false就行,进阶要给出具体的子集。 当时太紧张,问了面试官一下思路,想到要用回溯,结果太久没看回溯写不出来了,只能写了个二叉树的。根节点是0,左节点是不取数组上的数,右节点是取,直到二叉树节点值==target。 考完想了想,写了一下
LinkedList<Integer> path = new LinkedList<>();
int sum = 0;
List<List<Integer>> ans=new ArrayList<>();
public List<List<Integer>> find(int[] nums, int M) {
backTracking(nums, M, 0);
return ans;
}
private void backTracking(int[] nums, int M, int index) {
if (sum > M) return;
if (sum == M) {
ans.add(new ArrayList<>(path));
return;
}
for (int i = index; i < nums.length; i++) {
path.add(nums[i]);
sum += nums[i];
backTracking(nums, M, i + 1);
path.removeLast();
sum -= nums[i];
}
}
ArrayList的底层,哈希表的底层实现,扩容机制(我把哈希和列表的扩容记反了,汗),哈希表的位置怎么确定。
长连接,心跳机制(问我浏览器作客户端能不能搞心跳,给我整蒙了),HTTP,HTTPS加密机制,SSL协议哪个层(这个有没有大佬说说,有说表示层,有说传输层和网络层)。
Synchronized是不是可重入锁,锁升级机制
高情商评价:代码写的还可以(汗),java基础需要增强
#快手面经#