美团到店实习面经(后端)
今天下午刚刚二面完,我来写一下面经(根据回忆)
3.19笔试(2.45/5)
3.21上午约面
3.24上午10:30一面 1h
高冷男神面试官,问的大多是基础
1,Java异常体系
2,static关键字的作用
3,静态方法可以被重载吗
4,JVM运行时内存区域
5,垃圾回收机制
6,synchronized关键字底层原理
7,乐观锁(CAS)悲观锁以及使用场景
8,二叉平衡搜索树,b+树
9,为什么要用索引
10,threadlocal关键字
11,分布式锁及实现原理
12,单点登录及实现原理
13,常见的状态码
14,算法,反转链表(秒撕)
15,以后会改用其他语言吗,意向地点是哪儿(当然是成都啦)
当天晚上携程笔试刚结束收到二面邀请
只有周五18:00的了,不然就要到下一周。。。
3.25下午18:00二面 1h
二面会问一些场景题,比如那个当前读和快照读整的我一脸懵逼
1,问了我搞忘修改的简历(因为我有一份pdf文件,所以官网上的简历搞忘修改)那个项目我已经废弃了。。。
2,死锁原理,如何避免死锁,银行家算法
3,数据库四大隔离级别
4,mysql场景题,可重复读,一条语句会不会更新,执行是否有效。怎么实现可重复读
5,线程池的七大参数以及任务提交机制
6,代码题:用快排做第k个最大数
???我平时刷这道题的时候都是用优先队列做的啊。。。快排那个题解太复杂就没有看,结果考了。。
在面试官的提示下最后勉强写了一段代码,不过没有ac(面试官也不知道哪里出了问题emmm)
这是我当时现写的代码 import java.util.*; public class Solution { int k; public int findKth(int[] a, int n, int K) { // write code here quickSort(a,0,a.length-1); k=K; return a[a.length-K]; } public void quickSort(int[] nums,int left,int right){ if(left>=right){ return; } int p=partition(nums,left,right); if(p==nums.length-k){ return; }else if(p>nums.length-k){ quickSort(nums,left,p); return; }else{ quickSort(nums,p+1,right); return; } } public int partition(int[] nums,int left,int right){ int lt=left; int pivot=nums[left]; for(int i=left+1;i<nums.length;i++){ if(nums[i]<pivot){ lt++; swap(nums,lt,i); } } swap(nums,lt,left); return lt; } public void swap(int[] nums,int a,int b){ int tmp=nums[a]; nums[a]=nums[b]; nums[b]=tmp; } }
7,什么时候能够来实习,能实习多久?
许愿oc