阿里云一面
-
自我介绍
-
==与equals的差别
-
重写equals和hashcode有什么要求
-
Java集合有哪些接口,和具体的实现类
-
聊一聊hashset
-
线程有什么状态,调用什么方***使转态变换
-
线程池创建有哪些参数
-
核心线程数和最大线程数应该怎么设定(根据并发、CPU数、i/o密集型和计算密集型等等)
-
spring框架的ioc和aop
-
aop的底层实现(动态代理:jar和cglib)
-
jar动态代理和cglib有什么限制条件
-
数据库设计题:设计一个选课系统的表设计(学生、老师、课程、老师与课程的联系表、选课表)
-
问上面设计表的一个查询:选出选修体育课的女生并且成绩不及格的课程名、老师名、学生名、成绩(缺考成绩为null)。考察内连接、外连接、左外连接、右外连接。
-
聊聊我的竞赛经历
- 算法题:
//评测题目: 一颗多叉树,每个节点一个整数值。求树的最长子序列的长度。子序列指子节点的值比父节点的值大1.
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
private static int ans = 0;
public static void main(String[] args) {
ArrayList<TreeNode> list1 = new ArrayList<>();
for(int i=1;i<10;++i){
list1.add(new TreeNode(i, null));
}
TreeNode root = new TreeNode(0, list1);
ArrayList<TreeNode> list2 = new ArrayList<>();
for(int i=1;i<10;++i){
list2.add(new TreeNode(i, null));
}
list1.get(0).setChildNode(list2);
// System.out.println(root);
System.out.println(solution(root));
}
public static int solution(TreeNode treeNode) {
ans = 0;
dfs(treeNode, Integer.MAX_VALUE, 0);
return ans;
}
public static void dfs(TreeNode treeNode, int fa, int len) {
if(treeNode == null) return ;
ans = Math.max(ans, len);
if(treeNode.getChildNode() == null) return ;
if(treeNode.getVal()-1 == fa) {
for (TreeNode node : treeNode.getChildNode()) {
dfs(node, treeNode.getVal(), len+1);
}
}else {
for (TreeNode node : treeNode.getChildNode()) {
dfs(node, treeNode.getVal(), 1);
}
}
}
}
class TreeNode {
private int val;
private List<TreeNode> childNode;
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
public List<TreeNode> getChildNode() {
return childNode;
}
public void setChildNode(List<TreeNode> childNode) {
this.childNode = childNode;
}
public TreeNode() {
}
public TreeNode(int val, List<TreeNode> childNode) {
this.val = val;
this.childNode = childNode;
}
} 待续!(希望有后续)
查看6道真题和解析

