阿里云一面
-
自我介绍
-
==与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; } }待续!(希望有后续)