美团一二面(凉经)

一面:1个小时

加上**表示没答上或者说了基本概念

1、对于hash表的实现?(HashMap、TreeMap、HashTable、LinkedHashMap、ConcurrentHashMap)
2、HashMap与HashTable的区别?(引申出ConcurrentHashMap、CAS(ABA问题)、Synchronized(锁膨胀))
3、HashMap的链表、红黑树、扩容(**如果发生扩容、同时进行put会阻塞嘛)
4、Synchronized(偏向锁、轻量级锁、重量级锁)
5、伪共享(MEDI协议、CPU Cache)
6、如何避免伪共享(**Cache占64个字节、七个long类型+对象头或者使用注解@sun.misc.Contended)
7、进程、线程、协程(引申出虚拟内存(内存分段、内存分页)、协程(java第三方包kilim))
8、TCP与UDP的区别
**9、微信群聊天和发弹幕用到的是TCP、UDP
10、TCP传输一个1、2KB的文件的主要传输过程(说了网络层、数据链路层、物理层并不满意)
**11、TCP会分包、如何知道传输了多少个包?(说的重传机制,说的不对)
12、快排达到最坏的时间复杂度(有序、数据量小的时候(使用插入代替)、数据大量重复)
**13、自己构造一个参数,实现最坏的快排时间(为啥不是全部有序)不会,补充说了快排如何实现稳定排序
*14、数据排序有三类[正数、负数、零](说了思路使用二分法)写出了两类的、三类的没写出来;后来引导者明白了。

二面、1个小时

1、考了一面的算法
**2、判断链表有没有环、快指针一次跳跃3,4,5个行不行(说的不好)
**3、spring解决循环依赖的算法,(可能是拓补排序
4、TCP的三次握手(状态变化、二次、四次为啥不行)
**5、接雨水(没刷过+没写上挂了)

总结

主要是算法给我挂的,一面算法写的不好,二面问了我三道算法还是不行。。。
突然感觉剑指offer白刷了,也不考我,好难


#美团暑期实习##面经##实习##美团#
hshuo的面试之路 文章被收录于专栏

作者目标是找到一份Java后端方向的工作 此专栏用来记录从Bilibili、书本、其他优质博客上面学习的内容 用于巩固、总结内容 主要包含Docker、Dubbo、Java基础、JUC、Maven、MySQL、Redis、SpringBoot、SpringCloud、数据结构、杂文、算法、计算机网络、操作系统、设计模式等相关内容

全部评论
请问一面后多久通知二面的呢?
1 回复 分享
发布于 2022-04-03 13:14
二面多久后给挂的呀,二面后就没消息了
点赞 回复 分享
发布于 2022-04-06 21:17
好难,伪共享我听都没听过
点赞 回复 分享
发布于 2022-04-03 09:18
哪个部门啊
点赞 回复 分享
发布于 2022-04-03 08:24

相关推荐

08-11 15:46
门头沟学院 C++
叶舒华的一条鱼:我记得malloc底层是两种系统调用,第一种就是brk,然后移动堆顶向高地址移动,另外一种就是mmap,在虚拟内存空间中的共享文件映射段分配一块虚拟内存,然后他想问的应该就是第二种吧
点赞 评论 收藏
分享
算法题感觉都挺简单的啊
投递哔哩哔哩等公司10个岗位
点赞 评论 收藏
分享
08-17 18:24
门头沟学院 Java
可运行版本 import java.util.HashMap;import java.util.Map;class LRUCache {class DLinkedList{int key;int val;DLinkedList next;DLinkedList prev;long timeStamp;public DLinkedList(){this.timeStamp = System.currentTimeMillis();}public DLinkedList(int key,int val){this.key = key;this.val = val;this.timeStamp = System.currentTimeMillis();}}int capacity;int size;DLinkedList head;DLinkedList tail;Map<Integer,DLinkedList> map;long ttl;public LRUCache(int capacity,long ttl){this.capacity = capacity;size = 0;head = new DLinkedList();tail = new DLinkedList();head.next=tail;tail.prev = head;map = new HashMap<>();this.ttl = ttl;}public void addToHead(DLinkedList node){node.next = head.next;head.next.prev = node;node.prev = head;head.next = node;}public void removeOne(DLinkedList node){node.next.prev = node.prev;node.prev.next = node.next;}public boolean isExpired(DLinkedList node){long now = System.currentTimeMillis();long diff = now-node.timeStamp;if(diff>ttl){return true;//true是过期了的意思 false才是没过期!!!}return false;}public int get(int key){if(!map.containsKey(key)){return -1;}else{DLinkedList node = map.get(key);if(isExpired(node)){removeOne(node);map.remove(key);size--;return -1;}node.timeStamp = System.currentTimeMillis();removeOne(node);addToHead(node);return node.val;}}public void put(int key,int val){if(!map.containsKey(key)){DLinkedList newNode = new DLinkedList(key,val);addToHead(newNode);map.put(key,newNode);size++;if(size>capacity){DLinkedList oldNode = tail.prev;removeOne(oldNode);map.remove(oldNode.key);size--;}}else {DLinkedList newNode = new DLinkedList(key,val);DLinkedList oldNode = map.get(key);removeOne(oldNode);addToHead(newNode);map.put(key,newNode);}}}class Main{public static void main(String[] args) {LRUCache cache = new LRUCache(2, 1000); // 1秒TTLcache.put(1, 1);cache.put(2, 2);System.out.println(cache.get(1)); // 返回 1try {Thread.sleep(1500); // 等待1.5秒让数据过期} catch (InterruptedException e) {e.printStackTrace();}System.out.println(cache.get(1)); // 返回 -1(已过期)System.out.println(cache.get(2)); // 返回 -1(已过期)}}
点赞 评论 收藏
分享
评论
4
49
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务