猿辅导二面
- 介绍项目
- Redis的基本数据结构,Set怎么实现的,跳表的插入删除查询时间复杂度
- 一致性hash,作用是什么
- 负载均衡算法有哪些
编程题:一个数组前半部分升序后半部分降序,查找最大值。(1、4、7、8、3、2)
public class Main {
public static void main(String[] args) {
int[] nums = {1,4,7,8,3,2};
int i = 0, j = nums.length - 1;
while(i <= j){
int mid = (i + j) / 2;
int left = 0, right = 0;
if(mid - 1 >= 0){
left = nums[mid - 1];
}
if(mid + 1 < nums.length){
right = nums[mid + 1];
}
if(nums[mid] > left && nums[mid] > right){
System.out.println(nums[mid]);
break;
}
if(nums[mid] > left && nums[mid] < right){
i = mid + 1;
}else{
j = mid - 1;
}
}
}
} 编程题:节点取值0/1的二叉树,删除全部为0的叶子节点 private TreeNode solve(TreeNode root) {
if (root == null){
return null;
}
root.left = solve(root.left);
root.right = solve(root.right);
if (root.left == null && root.right == null && root.val == 0){
return null;
}
return root;
} 第二题不太好写,不过面试官给了指导~ 
