美团服务器后台开发一面+二面
一面
- 自我介绍
- 介绍一个项目
- redis主从复制
- redis宕机后怎么办
- RDB和AOF优缺点,分别什么场景下用对应持久化技术
- 进程线程区别
- 有了进程,为什么要用线程,优点体现在哪
- voliate理解及其作用
- 悲观锁与乐观锁理解,线程争用比较激烈的情况用悲观锁还是乐观锁?
- Java基本类型有哪些
- ArrayList和LinkList区别,数组和链表区别,TreeMap、HashMap、LinkListMap区别及底层数据结构
- TreeMap、HashMap、LinkListMap遍历分别都是有序的吗
- UDP和TCP区别
- TCP三次握手和四次握手原因,四次握手客户端为什么要等待 2Time_WAIT
- HTTP请求头有哪些东西
- Mysql索引类型
- Mysql为什么用B+树索引不用B树索引
- Mysql Hash索引用 name like '刘%',走索引吗,为什么(不走)
- equals() 和 hashcode()方法区别,重写equals()一定要重写hashcode()吗
- 自己实现一个容器,不重写hashcode()会有什么问题?
- B+树索引比如(name, age), name like '刘%' and age = 12走不走索引(走,后面的age不再走索引),为什么用字符串表达式不走索引,底层原因是什么
- Mysql事务级别,间歇锁,可重读级别能解决幻读吗,不能的话为什么
- MQ消息队列
- 手撕代码(要求O(logn)时间复杂度,leetcode原题,之前没做过,现场手撕出来的,如下图所示)
- 补充:(中间好像还问了两三个问题,有点记不清了,但是也不难)
- 反问
二面
- 自我介绍
- 介绍以往一个项目
- 登录权限验证怎么设计的,如果用SpringScqurity怎么实现
- JWT的token保存在哪里,前端怎么携带过来
- HTTP请求头中都有哪些信息
- HTTPS过程,混合加密方式解释
- Mysql中幻读问题解释,怎么解决幻读,除了可串行化级别还有什么方法
- JAVA中有哪些锁,sychnorized和lock区别,偏向锁与轻量级锁区别,轻量级锁与重量级锁区别
- JVM有哪些垃圾回收算法以及各自的优缺点
- 为什么新生代使用 “标记-复制” 算法
- CMS收集过程,有什么问题
- 网络的分层架构解释,以及每一层主要负责任务是什么
- TCP和UDP区别
- 流量控制和拥塞控制细节描述(包括慢开始,拥塞避免,快开始,快重传)
- 怎么检测网络出现拥塞
- Spring的IOC和AOP原理,IOC和AOP分别通过什么实现
- 静态代理和动态代理区别
- Spring怎么解决循环依赖的问题
- ThreadLocal内存泄漏问题,弱引用能否解决这个问题(不能)
- 为什么弱引用不能解决ThreadLocal问题
- 手撕代码1:给一个数组,数组长度为N,内部元素为1-N,要求实现排序(不能从1-N重新赋值),要求时间复杂度为O(n),空间复杂度O(1)
- 手撕代码2:给一个链表,删除重复元素,比如1->1->2->3->4,删除后就应该是2->3->4
- 反问(面试官反应前面回答还不错,基础掌握很不错,但是算法有待加强(两个手撕代码必须要在线编辑并可运行,我细路写的没问题,但是可能边界值哪里没处理好,运行一直有误))