昨天刚参加美团Java后台一面,面试难度8分,面经分享给大家。
面试题
本文不提供答案,哈哈哈
- 自我介绍
- 用什么技术栈
- 在线编程2道 01.环形链表求相交节点 02.镜像二叉树
- ThreadLocal使用场景和原理
- juc相关的类用过哪些? ConCurrentHashMap底层原理以及和HashMap的区别?
- synchronzied使用场景和原理?锁升级过程?volatile的使用场景和原理
- spring的ioc和aop原理?Spring如何解决循环依赖的问题?
- 多路复用器介绍一下?select poll epoll? BIO NIO AIO介绍一下?
- mysql 的mvvc了解吗?介绍一下
- 用过消息系统吗?介绍一下和rocketmq的区别,介绍一下rocketMq的架构?rocketMq为什么这么快?
- 如何解决redis缓存和数据库中值不一致的问题?
- 如何设计秒杀系统?
- 为什么要离职? 期望的职级
- 有什么问题要问我的的?
面试自我评价
面试自评6.5分。好的点: 算法做出来了,大部分面试题都答的差不多。不好的点: 问题回答过于具体(面试官反馈),导致面试时间过长(1h40min)。面试结果未知,即便过了,定级也不高。
大厂的面试,在面试之前,面试官都会准备一系列题目,一般会问完,所以尽可能精简,不然面试时间会拖的很长。答问题,回答关键的点,深层次的点一下,如果面试官感兴趣的话,他会深入问~
面试复盘和建议
- 算法篇: 必须要刷,中等难度100道。热点算法要背,哪些算法是热点算法?
- 链表常见算法(不超过10道)
- 二叉树常见算法 (不超过10道)
- 排序常见算法(6道),小厂到快排,大厂到堆排
- 字符串常见算法,回文串,KMP,…
- 其它(只做最经典的几道),快慢指针,滑动窗口,回溯法,动态规划。
- 设计题: LRU(考了无数次)
- 基础篇: 面试前肯定会准备,常见题一定要深入到原理和源码(这部分问题可能每次面试都会问到,一定要能回答的斩钉截铁),最好要有使用场景,还要有原理,还要有梳理可能会遇到的问题。另外平时要针对面试题锻炼如何精简描述回答?从哪开始讲,到哪里收,重点是什么,会遇到什么问题,怎么解决。下面列一下热点面试题**[顶流]**(大厂)
- 1.网络:同步阻塞(IO)、同步非阻塞(NIO)、多路复用(select|poll|epoll)、异步IO;TCP(报文结构|握手|挥手|流控|拥塞);Https和http区别;
- 2.Java基础:集合类(List|Map)、多线程(实现|线程安全|通信)、线程池(类型|参数|拒绝策略)、Spring原理(IOC|AOP|SpringMvc|SpringBoot|生命周期)、web技术(过滤器|拦截器)、ORM(mybatis)、JVM(类加载|内存模型|垃圾回收)、微服务框架(Dubbo|SpringCloud|服务发现和治理|CAP|一致性算法)
- 3.数据库技术:Mysql(事物|引擎|索引|锁技术)、分库分表、容灾备份;
- 4.分布式技术:缓存[Redis(三大问题|一致性|数据结构|集群|事物|分布式锁)]、消息系统(作用|区别|选型|架构|顺序消息)、分布式事务、服务限流和降级
- 设计题篇: 常见的架构设计题,要自己先捋一捋,准备好体系的回答。例如秒杀系统的设计,反正我已经被问两次了(oppo、美团)
最后
- 现在的面试太卷了,平时拧螺丝,面试造火箭
- 但是没办法,这是现状。我们需要做的是,利用有限的准备时间,做好充分的准备(一定要分好优先级)
- 另外有的题目真的是每个面试官都会问比如synchronzied和volatile原理和使用,请一定吃透