美团到店复活赛速通--Java后端面经
复活赛流程超级快,化身团孝子!!!
时间线:
3.25投递--3.30第一次笔试--4.6第二次笔试--4.8到家约面--4.11一面--4.15收到感谢信
4.28更新简历--4.28到店约面--5.6一面--面完秒约当晚二面--晚上8点二面-- 5.7上午oc--5.8上午offer
5.6 上午11点 一面
- 自我介绍
- 介绍一个你的项目
- 在项目实际开发中,你有遇到哪些问题,是怎么解决的?
- 讲了jwt登陆验证,后面引入自定义拦截器和threadlocal
- 问了threadlocal的底层实现原理
- 如果有多个线程并发,都需要使用user_id数据,应该如何处理?
- 项目中有哪些难点?
- 讲一下Spring事务是什么,@Transactional注解如何实现
- 为什么使用Redis缓存,为什么快?
- 如何保证Redis和MySql的数据一致性?
- MySQL的innodb的select方法如何加行锁?
- 讲一下IO多路复用有哪些种类?
- 提到了异步IO,同步阻塞IO和同步非阻塞IO
- 答错了,应该回答select、poll和epoll
- 讲一下同步非阻塞IO是什么,底层如何实现?
- 操作系统中的内存管理如何实现?
- 讲了段式、页式、段页式
- 为什么现在使用段页式?段页式能够解决内部内存碎片的问题吗?
- 什么是内存泄漏?内存泄露会导致什么问题?
- 提到了ThreadLocal中的内存泄漏问题
- 如果程序运行完,quit,会释放掉内存吗?
- 什么是CMS垃圾回收器?
- 有哪些新生代的垃圾回收器?
- Linux命令,如何查看某一个进程?如何查看进程的线程?
- ps查看进程状态,可以使用grep筛选进程
- ps -T -p <pid> # 查看进程pid下的所有线程
- 如何使用Linux命令查看jvm线程?
- ps -ef | grep java # 查看java线程ID
- jsatck <pid> # 查看java线程情况
- jinfo -flags <pid> # 查看java线程的JVM参数
- jstat -gc <pid> # 查看Java线程的gc情况
- jstat -gcutil <pid> # 查看java线程的堆内存情况
- jstat -class <pid> # 查看java线程的类加载情况
- 讲一下HashMap?
- 手撕:不考虑数组扩容和红黑树,实现HashMap的put方法
- 为什么HashMap的链表使用头插法会出现死循环问题?
5.6 晚上8点 二面
- 自我介绍
- 手撕:NC255 最长有效的括号字符子序列
- 还有一些简历项目的不常见问题,就不写了