下午的面试,近段时间面试的第一家公司
很长时间没面试了 脑子像进水了 表现特别差 感觉挂定了
大概30分钟问答+20分钟算法题
首先自我介绍,然后问项目,你参与的哪些模块,实现的功能,上来就被问懵了。
接下来是技术问题:
java基础:
- 抽象类和接口的区别
- hashmap底层原理
- cookie和session的区别
数据库:
- 事物的ACID特性
- 事物的隔离级别
- 什么是幻读?哪些隔离级别会出现幻读
- mong数据库的优化
- 悲观锁和乐观锁
- Java中怎么实现悲观锁
Redis:
- redis持久化机制
- redis分布式锁
- redis可以满足事务ACID哪些属性?
- redis的优化?
Spring:
- spring aop是什么?实现方式?哪些应用?
- spring bean的生命周期?依赖的注入方式?
Rabbit MQ:
- 什么是rabbitMQ?
- rabbitMQ分布式
其他:
- 分布式CAP了解
- docker是什么?docker和虚拟机的区别
- 从http://baidu.com开始请求到最后响应的流程?
- git fetch和git merge的区别
- HTTP的三次握手和四次挥手
最后一道算法题:
- leetcode45
我的答案 测试用例过了25/109,复盘发现这道题也没答上来,离进二面就差一个蜀道难。
public int jump(int[] num){
int len = 0;
for (int i = 1; i < num.length; i++) {
// 判断大小 前者比后者大 记录一次
if(num[i] > num[i-1]){
len++;
if(len+num[i] >= num.length){
break;
}
}
}
return len;
}
官方答案:
public static int jump2(int[] nums){
int end = 0;//上次跳跃可达范围右边界
int maxPosition = 0;//边界,当前能够到达的最大下标位置
int steps = 0;//跳跃次数
for (int i = 0; i < nums.length-1; i++) {
maxPosition = Math.max(maxPosition, i + nums[i]);
//到达上次跳跃的右边界
if (i == end){
end = maxPosition;
steps++;
}
}
return steps;
}
总结:
面的一塌糊涂 ,全军覆没吧。如果我是面试官,我自己都不会让我过。
人家接着奏乐接着舞,咱接着投递接着面。