3月13号晚上8点,蚂蚁金服的面试官打电话给我,进行一场面试。电话交流四十多分钟,通过邮件发送两道算法题目做,时间一个小时。
面试过程:
现实自我介绍,我第一个项目还没有说完,被面试官打断,问题了一些项目问题。自己的项目要非常清楚,我答得不好,对于项目的性能提升问题答不上来。
问用过哪些锁?答互斥锁、读写锁、自旋锁。
这些锁有什么区别?应用场景是什么?欸,对自旋锁了解不多。
top命令sys、user、idle是什么意思?load是什么意思?怎么计算的?
a表示1,b表示11,n个1,使用a、b表示有多少种表示方法?
为什么要离职?(我猜不想跟我聊了)
平时看些什么书?
对分布式应用了解多少?
两道算法题目。
一)给出 n 个节点,标号分别从 0 到 n - 1 并且给出一个 无向边的列表 (给出每条边的两个顶点), 写一个函数去判断这张无向图是否是一棵树
a) 假设我们不会给出重复的边在边的列表当中. 无向边 [0, 1] 和 [1, 0] 是同一条边, 因此他们不会同时出现在我们给你的边的列表当中。
样例
1) 给出n = 5 并且 edges = [0, 1], [0, 2], [0, 3], [1, 4], 返回 true.
2) 给出n = 5 并且 edges = [0, 1], [1, 2], [2, 3], [1, 3], [1, 4], 返回 false.
二)一个有序数组,实现一个查找函数,找出指定元素在数组中第一次出现的位置,要求:时间复杂度最优
a) 假设我们不会给出重复的边在边的列表当中. 无向边 [0, 1] 和 [1, 0] 是同一条边, 因此他们不会同时出现在我们给你的边的列表当中。
样例
1) 给出n = 5 并且 edges = [0, 1], [0, 2], [0, 3], [1, 4], 返回 true.
2) 给出n = 5 并且 edges = [0, 1], [1, 2], [2, 3], [1, 3], [1, 4], 返回 false.
二)一个有序数组,实现一个查找函数,找出指定元素在数组中第一次出现的位置,要求:时间复杂度最优