拆解面试-携程Java研发
本文约 1000 字,读完需要 5 分钟,速读仅需 3 分钟
1. 前言
这是日更面试经验以来,跟大家拆解的第 25 篇面经,今天分享北京交通大学2022届硕士学生的面试经验,同学面试获得携程的Java后台开发岗 ,有想去携程java研发岗的小伙伴千万不要错过这篇新鲜热乎的面经。本次面经分享包含后端和算法以及项目相关知识,对大家入职研发岗位有比较大的帮助。
2. 求职者的面经自述
通过10天的面试煎熬,终于在29号收到了OC。
我面的是携程的Java研发工程师岗位,携程的面试流程是2轮技术面+1轮HR面。
一面:
先八股后算法
八股:
1. 了解的设计模式
2. 介绍B+树,平衡二叉树和红黑树的区别
算法:
3. 单例
4. 青蛙跳台阶(3种方法)
二面:
1. 项目说了很多
2. 遇到的问题,如何解决的,学到了什么
3. 单例模式里volatile的作用
4. 线程进程
5. 内核态和用户态
6. 事务隔离级别
7. 锁
8. 没有算法题
Hr面:(已oc)
通信专业为什么要自学Java,怎么学习Java的。
二面面试官记录你底层掌握的一般,以后怎么学习。
又讲了一遍项目
3. 面经的复盘和建议
题目很基础,难度也相对适中,想要答好这些问题,大家在日常背八股文的时候,可以了解使用下费曼学习法,找到自己学习的方向,回顾、简化和传授是掌握知识的有效手段,建议大家多总结多写文章,提高自己结构化思考能力。
4. 涉及的高频问题以及答案
部分面试题答案引用自网络
青蛙跳台阶(3种方法)
一共有三种方法来求解该问题
①使用动态规划,先确定前两次的次数存入数组,用循环迭代出数组的各个位置的次数
②使用记忆化递归,就是将每次递归的结果存入返回值这样递归可以避免不必要的递归发生
③暴力法递归将参数和阶数都存入递归将符合结果的截取出来,不符合结果超出范围的直接返回
public class Jumpfloor {
public static void main(String[] args) {
System.out.println(jumpFloor2(3,0));
}
public static int jumpFloor(int n) {
if(n == 1 || n == 0) {
return 1;
}else {
return jumpFloor(n - 1) + jumpFloor(n - 2);
}
}
public static int jumpFloor1(int n) {
int[] array = new int[n + 1];
array[0] = 1;
array[1] = 1;
for(int i = 2;i < n + 1;i++) {
array[i] = array[i - 1] + array[i - 2];
}
return array[n];
}
public static int jumpFloor2(int n,int index) {
if(index == n || index == n - 1) {
return 1;
}else {
return jumpFloor2(n,index + 1) + jumpFloor2(n,index + 2);
}
}
}
5. 总结
各位未来的大佬,今天给各位汇报的面经拆解就到此结束了,还是那句话:点赞加分享是对笔者最大的认可,能给笔者带来不断更新的无穷动力。
祝各位早进大厂,拿高薪,娶富美!