- 分析最差最好时间复杂度
10.8 17:30 二面
=============
实习:
-
实习做了什么
-
介绍实习的项目
项目:
-
介绍项目
-
怎么实现 IOC 的
-
怎么管理 Bean 的
-
一个请求进入,是怎么运作的
-
Shiro 怎么集成的
-
怎么解决循环依赖的情况
-
做了这个
项目的收获
Redis:
-
Redis 的数据结构有哪些?使用场景?(尬住了,只知道 sorted set 的场景)
-
场景题:记录活跃用户
Spring Cloud:
- 核心组件有哪些以及对应的功能
Netty:
- Netty 的线程模型
算法:
LC 515 在每个树行中找最大值
在上面题目基础上,修改条件(奇数最大,偶数最小)(也是尴尬现场,定义了 flag 变量,忘记更新了)
public List largestValues(TreeNode root){
List res = new ArrayList<>();
Queue queue = new linkedList<>();
if (root != null){
queue.offer(root);
}
boolean flag = false;
while (!queue.isEmpty()){
int cur = 0;
if (flag){
int cur_size = queue.size();
cur = Integer.MIN_VALUE;
for (int i = 0;i < cur_size;i++){
TreeNode x = queue.poll();
cur = Math.max(cur,x.value);
if (x.left != null){
queue.offer(x.left);
}
if (x.right!= null){
queue.offer(x.right);
}
}
}else {
int cur_size = queue.size();
cur = Integer.MAX_VALUE;
for (int i = 0;i < cur_size;i++){
TreeNode x = queue.poll();
cur = Math.min(cur,x.value);
if (x.left != null){
queue.offer(x.left);
}
if (x.right!= null){
queue.offer(x.right);
}
}
}
res.add(cur);
flag = !flag;
}
return res;
}
10.20 17:30 三面
==============
实习:
-
介绍实习的项目
-
实习做了什么
-
实习遇到的困难,怎么解决的
-
实习的收获
算法:
剑指42 连续子数组最大和
-
动态规划
-
二分递归
在上面题目基础上,修改条件(输出子数组,不单单是最大值)
public static void main(String[] args) {
int[] nums = {0,2,3,4,-2,-3,9,
【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】 浏览器打开:qq.cn.hn/FTf 免费领取
11};
System.out.println(maxSubArr(nums));
}
public static List maxSubArr(int[] nums){
if (nums == null || nums.length == 0){
return new ArrayList<>();
}
int[][] dp = new int[nums.length][2];
for (int i = 0;i < nums.length;i++){
dp[i][1] = i;
}
dp[0][0] = nums[0];
int max = dp[0][0];
int start = 0;
int end = 0;
for (int i = 1;i < dp.length;i++){
if (dp[i - 1][0] > 0){
dp[i][0] = dp[i - 1][0] + nums[i];
dp[i][1] = dp[i - 1][1];
}else {
dp[i][0] = nums[i];
dp[i][1] = i;
}
max = Math.max(dp[i][0],max);
if (max == dp[i][0]){
start = dp[i][1];
end = i;
}
}
List res = new ArrayList<>();
for (int i = start;i <= end;i++){
res.add(nums[i]);
}
return res;
}



