在群里潜水时看大佬们的发言,被一位大佬的面试经历吸引了。这位大佬面试阿里本地生活的暑期开发实习,前面一二面都过了,却凉在了三面。在为他感到惋惜的同时,也想将他的经历整理下来,希望能让朋友们多加注意。
事情是这样的,一面的时候,当时还没笔试,突然接到一面电话,就和面试官说还没笔试呢,怎么就一面了,都还没准备好,面试官来了一句,不让你准备,现在开始。二面是在电影院视频面试。二面结束很长一段时间一直没有消息,一段时间之后开始三面,项目部分答的不好,系统里已结束。
现在来看一下这位大佬的面试题
一面
1、为什么数据库中用B+树作为索引而不使用hash表
2、如何判断一个链表中是否有环形结构
3、数组和链表的性能分析
4、青蛙跳台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
第四个问题一开始答了一维的动态规划,没想到面试官是想让他答斐波那契数列数列通项。
一面的确就那么短,第一个问题答的不是很好。
贴上几个第四个问题的代码(仅供参考)
public class Fibonacci {
public int fibonacci(int n) {
int[] dp = { 1, 1, 0 };
if (n < 2) {
return 1;
}
for (int i = 2; i <= n; i++) {
//递推公式f(n) = f(n - 1) + f(n -2)
dp[2] = dp[0] + dp[1];
dp[0] = dp[1];
dp[1] = dp[2];
}
return dp[2];
}
public static void main(String[] args) {
Fibonacci fb = new Fibonacci();
for (int i = 0; i < 10; i++) {
System.out.print(fb.fibonacci(i));
System.out.print(" ");
}
}
}
class Solution {
public int numWays(int n) {
//本题目实际就是斐波那契数列数列的变体,使用数组方法
if(n == 0 || n == 1)
return 1;
else {
int[] arr = new int[n + 1];
arr[0] = 1;
arr[1] = 1;
for (int i = 2; i < n + 1; i++) {
arr[i] = (arr[i - 1] + arr[i - 2])%1000000007;
}
return arr[n];
}
}
}
一面之后,进行笔试,笔试答得太差,于是加试一道题(伯乐系统)
加试题:给你一个长度为N的链表。N很大,但你不知道N有多大,你的任务是从这N个元素中随机取出K个元素。你只能遍历整个链表一次,你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现的概率相等)
这里贴一下这位大佬的做法:
import java.util.*;
public class Solution{
public int[] Main(ListNode root,int k)
{
//先接受前k个杨素
int[] samples[]=new int[k];
Node temp=root;
for(int i=0;i<k;i++)
{
samples[i]=temp.val;
temp=temp.next;
}
//记录元素的下标值
int p=k;
//生成随机数
Random random=new Random();
int j;
//开始处理
while(temp!=null)
{
j=random.nextInt(p+1);
//如果得到的随机数小于k,则接受这个数
if(j<k)
{
samples[j]=temp.val;
}
temp=temp.next;
//索引要++
p++;
}
return samples;
}
}
}
二面
1、数据库索引的作用以及优缺点
2、satics关键字的作用,JAVA中satics关键字和private关键字能否被重写
3、方法覆盖和重载的区别
4、抽象类和接口的区别
5、hascode和equals方法的重要性
6、开启线程的方法
7、索引B+树的数据结构
8、concurrentHasMap JDK1.7和JDK1.8的取别还有锁粒度
三面
1、为什么判断链表有环的过程中快指针要取为1,可以取其他值吗?一定会相遇吗?
2、判断一个数是否为质数?为什么遍历的过程的上限是开方
3、项目中发帖的过程
4、项目中对帖子的循环引用回复怎么实现
5、热帖的实现过程
6、如何集中删除某部分热帖(比如针对某个地点)
7、帖子中的表情该怎么实现
小结
还是挺可惜的,一面二面的时候都是突如其来,在毫无准备的情况下进行面试。笔试的成绩也不理想。三面时的项目部分也是扣分。整套流程下来,不如人意的地方很多。也希望各位朋友能够多多注意,以完美的状态去迎接每一次面试。
面试总是突如其来,不仅考察知识储备,也考察临场应对能力。我整理了多家互联网大厂的多年面试试题,多位大佬的面经资料,以及Java学习资料,帮助你在应对面试时,沉着应对。有需要的朋友可以点击进入,暗号:掘金
本文总结的面经资料,大家看完后感觉怎么样,上文中总结的那些面试题是否能够轻松应对。
如果这篇文章对你有帮助。别忘了点赞收藏转发。谢谢各位的观看。