lz 还是从 3 月份投递的美团,早就以为人招满了,没抱希望了,没想到昨天下午突然接到了一个山东的电话,当时正在给手机贴膜,吓得我都贴歪了,暴风哭泣.jpg,然后就约了一个半小时后开始面试,这次面试主要是根据简历来发问的,面试体验也挺好的,面试官会说清楚问题的条件之类的,然后根据你的回答来继续发问(真祸从口出),每当我回答完后,面试官总喜欢说了解了解,跟滴滴的面试官有的一拼,仿佛有种被摸透了的感觉(摊手.jpg),下面是我记录的面经,分享一下。
项目
自我介绍
介绍下头条资讯网站的数据库表的设计,这个网站一共有几张表?
image 字段存的是一张图片吗?你这个上传的图片放在另外一个位置?
comment_count 字段是指对文章评论人数的统计是吗?它是放在评论表里面吗?
评论功能是只支持罗列型的评论是吧?比如说用户 A 给某一条新闻评论,然后支持用户 B 能对 A 的评论进行回复吗?
比如说 news 表有建索引吗?或者说项目中有用到索引吗?
简单说一下对索引的理解,或者说为什么数据库要有索引
了解 MySQL 中有哪些常用的索引引擎吗?
了解 Innodb 和 MyISAM 的差别吗?
除开使用 B+ 树实现的索引,还了解其他数据结构实现的索引吗?
详细说一下哈希索引和 B+ 树索引的区别
哈希索引不支持范围查询,对吧?
项目中封装用户信息的目的是什么?
项目中的拦截器是用的 Spring 的一个特性吗?
这里是需要认证用户相关的合法性是吗?
这个拦截器其实是一个 Spring AOP 思想的应用,简单介绍下 Spring AOP
Spring 已经用一些 Controller 支持了业务逻辑,为什么还要有 AOP 的存在?
为什么用 ThreadLocal 类来封装用户信息,不能用一些简单的类来实现你这个功能吗?
项目中有用到多线程吗?
简化了后续开发的成本是指通过拦截器简化了后续开发成本吗?
具体是什么功能需要异步化?
了解其他的消息中间件吗?
简单说下 Redis 的底层数据结构
JVM
简单说下 JVM 的内存模型
说一下 Java 虚拟机的类加载机制
Java jdk 中会有自己实现的一些类,比如 Integer 类,假设自己开发时也想开发一个同名的类,此时在类的加载过程中,JVM 是如何确定你使用的是哪一个类?
JVM 中可以管理对象,对象是有生命周期的,那么JVM 是如何确定一个对象是不是有引用的?
了解 JVM 的垃圾回收算法吗?
了解 JDK 1.8 的垃圾回收机制吗?
其他(从这里开始面试官开始根据简历随机发问了,摊手.jpg)
解释下为什么 TCP 创建连接时只需要 3 次握手,而释放连接时需要 4 次挥手?
了解跟 MyBatis 类似的一些框架吗?
MyBatis 中其实是有数据库连接池的,那么为什么要有数据库连接池?为什么不可以来一个我就创建一个 JDBC 连接?
MyBatis 支持事务吗?
看你简历写阅读过部分 JDK 源码,阅读过哪些源码?
说一下 ArrayList 和 LinkedList 的区别
有看过一些并发的集合吗? 答:ConcurrentHashmap
你刚才说到了锁,为什么要在并发的时候使用锁这个东西呢?
在 ConcurrentHashmap 里面是如何实现锁这个机制的呢?
我们都知道 synchronized 和 cas 都是原生的或者说 jdk 自己支持的锁的机制,那你了解过一些其他实现并发包的机制吗?例如 Lock 框架
刚才提到锁,肯定存在一些异常场景,比如说死锁,那么你了解死锁避免的一些方法吗?
网友评论