前言:
今天小编和大家分享一位以前面试的一位应聘者,工作4年26岁,统招本科。
以下就是他的简历和面试情况。
基本情况:
专业技能:
1、 熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务
2、 熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins
3、 熟悉Nginx、tomcat等的调优
4、 熟悉多线程、并发
5、 熟悉分布式协同框架Zookeeper、RPC服务框架Dubbo
6、 了解分布式消息框架Kafka、RocketMQ
7、 熟悉分布式缓存Redis、memcache
8、 熟悉分布式数据中间件sharding-jdbc做分库分表、读写分离
熟悉分布式搜索引擎ELK
教育经历:
面试过程:
面试题一:HashMap底层实现
面试题二:Spring AOP底层实现
面试题三:分布式Session、Dubbo、Zookeeper问题
总结:
面试过程中,大概聊了20分钟左右,自我介绍和项目聊了大概,8分钟,另外12分钟主要是聊了一些技术问题。这次问的相对来说不会太难,因为工作4年要16k薪资不是很高,最后还是没有给第二面的机会,主要还是觉得对技术深度不够,广度是OK的,今天的面试分享就到这里。
数据库
-
事务四大特性(ACID)?
-
数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别?
-
innodb和myisam存储引擎的区別?
-
MYSQL的两种存储引擎区别(事务、锁级别等等),各自的适用场景?
-
查询语句不同元素(where、jion、limit, group by、having等等)执行先后顺序?
-
数据库的优化(sql语句优化和索引)?
-
索引有B+索引和hash索引,各自的区别?
-
B+索引数据结构,和B树的区別?
-
索引的分类(主键索引、唯一索引),最左前缀原则,哪些情况索引会失效?
-
聚集索引和非聚集索引区别
-
有哪些锁(乐观锁悲观锁),select时怎么加排它锁?
-
关系型数据库和非关系型数据库区别?
-
数据库三范式,根据某个场费设计数据表?
-
数据库的读写分离、主从复制?
-
使用explain优化sql和索引?
-
long_query怎么解决?
-
死锁判定原理和具体场景,死锁怎么解决?
-
varchar和char的使用场景?
-
mysql并发情况下怎么解决(通过事务、隔离级别、锁)?
-
数据库崩溃时事务的恢复机制(REDO日志和UNDO日志) ?
并发编程
-
跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?
-
那么请谈谈 AQS 框架是怎么回事儿?
-
请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。
-
ReentrantLock 是如何实现可重入性的?
-
除了 ReetrantLock,你还接触过 JUC 中的哪些并发工具?
-
请谈谈 ReadWriteLock 和 StampedLock。
-
如何让 Java 的线程彼此同步?你了解过哪些同步器?请分别介绍下。
-
CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?
-
Synchronized 用过吗,其原理是什么?
-
你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?
-
什么是可重入性,为什么说 Synchronized 是可重入锁?
-
JVM 对 Java 的原生锁做了哪些优化?
-
为什么说 Synchronized 是非公平锁?
-
什么是锁消除和锁粗化?
-
为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是
-
乐观锁一定就是好的吗?
-
什么是 Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?
-
请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?
-
请对比下 volatile 对比 Synchronized 的异同。
-
请谈谈 ThreadLocal 是怎么解决并发安全的?
-
很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?
-
Java 中的线程池是如何实现的?
-
创建线程池的几个核心构造参数?
-
线程池中的线程是怎么创建的?
-
如何在 Java 线程池中提交线程?
Spring
-
为什么需要代理模式?
-
讲讲静态代理模式的优点及其瓶颈?
-
对Java 接口代理模式的实现原理的理解?
-
如何使用 Java 反射实现动态代理?
-
Java 接口代理模式的指定增强?
-
谈谈对Cglib 类增强动态代理的实现?
-
point cut,advice,Join point是什么?
-
join point 和 point cut 的区别?
-
怎么理解面向切面编程的切面?
-
谈谈对SpringAOP Weaving(织入)的理解?
-
谈谈SpringAOP Introduction(引入)的理解?
-
讲解OOP与AOP的简单对比?
-
讲解JDK 动态代理和 CGLIB 代理原理以及区别?
-
讲解Spring 框架中基于 Schema 的 AOP 实现原理?
-
讲解Spring 框架中如何基于 AOP 实现的事务管理?
-
谈谈对控制反转的设计思想的理解?
-
怎么理解 Spring IOC 容器?
MyBatis 面试题
-
什么是Mybatis?
-
Mybatis的优点:
-
Mybatis框架的缺点:
-
Mybatis框架适用场合:
-
MyBatis与Hibernate有哪些不同?
-
#{}和${}的区别是什么?
-
当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
-
模糊查询like语句该怎么写?
-
通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理
-
是什么?Dao接口里的方法,参数不同时,方法能重载吗?
-
Mybatis是如何进行分页的?分页插件的原理是什么?
-
Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
-
如何执行批量插入?
-
如何获取自动生成的(主)键值?
-
Mybatis动态sql有什么用?执行原理?有哪些动态sql?
-
Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?
-
Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
-
为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
-
MyBatis实现一对一有几种方式?具体怎么操作的?
-
MyBatis实现一对多有几种方式,怎么操作的?
-
Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
-
Mybatis的一级、二级缓存:
-
什么是MyBatis的接口绑定?有哪些实现方式?
-
使用MyBatis的mapper接口调用时有哪些要求?
-
简述Mybatis的插件运行原理,以及如何编写一个插件。
Redis面试题
随着应用研发技术的不断成熟,Redis 缓存技术已经成为后台研发同学必备的能力之一。在很多公司面试的过程中,都必不可少地考察 Redis 知识点的掌握。
-
使用 Redis 有哪些好处?
-
Redis 是单进程单线程的?
-
Redis 的持久化机制是什么?各自的优缺点?
-
Redis 常见异常问题和解决方案(雪崩,穿透...)
-
redis 过期键的删除策略?
-
为什么 redis 需要把所有数据放到内存中?
-
Redis 集群的主从复制模型是怎样的?
-
Redis key 的过期时间和永久有效分别怎么设置?
MongoDB
-
什么是MongoDB ?
-
MongoDB是由哪种语言写的?
-
MongoDB的优势有哪些?
-
什么是数据库?
-
什么是集合?
-
什么是文档?
-
MongoDB和关系型数据库术语对比图
-
什么是"mongod" ?
-
"mongod"参数有什么?
-
什么是"mongo”?
-
MongoDB哪个命令可以切换数据库?
-
什么是非关系型数据库?
-
非关系型数据库有哪些类型?
-
为什么用MOngoDB ?
-
在哪些场景使用MongoDB ?
-
MongoDB中的命名空间是什么意思?
-
哪些语言支持MongoDB?
-
在MongoDB中如何创建一个新的数据库 ?
-
在MongoDB中如何查看数据库列表?
-
MongoDB中的分片是什么意思?
-
如何查看使用MongoDB的连接?
-
什么是复制?
-
在MongoDB中如何在集合中插入-一个文档?
-
在MongoDB中如何除去-一个数据库?
-
在MongoDB中如何创建一个集合 ?
-
在MongoDB中如何查看一个已经创建的集合 ?
-
在MongoDB中如何删除一-个集合?
-
为什么要在MongoDB中使用分析器?
-
MongoDB支持主键外键关系吗?
-
MongoDB支持哪些数据类型?
-
为什么要在MongoDB中用"Code”数据类型?
-
为什么要在MongoDB中用" Regular Expression"数据类型?
-
为什么在MongoDB中使用"Object ID"数据类型?
-
如何在集合中插入一个文档?
-
"ObjectID"有哪些部分组成?
-
在MongoDb中什么是索引?
-
如何添加索引?
-
MongoDB有哪些可替代产品?
-
如何查询集合中的文档?
-
用什么方法可以格式化输出结果?
-
如何使用" AND"或"OR"条件循环查询集合中的文档?
-
在MongoDB中如何更新数据?
-
如何删除文档?
-
在MongoDB中如何排序?
-
什么是聚合?
-
在MongoDB中什么是副本集?
-
Mongodb存储特性与内部原理?
MySQL 面试题
如今互联网行业用的最多就是 MySQL,然而对于高级 Web 面试者,尤其对于寻找 30k 下工作的求职者,很多 MySQL 相关知识点基本都会涉及,如果面试中,你的相关知识答的模糊和不切要点,基本大多稍好公司的面试官,基本也不会对你有兴趣,毕竟稍微量大的项目,最终都会让你去深入数据库,而且最终的大多瓶颈首先也会出现在数据库。
-
L 相关存储引擎。
-
MySQL 索引实现原理。
-
MySQL 数据库锁。
-
MySQL 的 SQL 调优。
-
MySQL 分表分库全局 ID。
-
Mysql的技术特点是什么?
-
Heap表是什么?
-
Mysql服务器默认端口是什么?
-
如何区分FLOAT和DOUBLE?
-
区分CHAR_LENGTH和LENGTH?
-
请简洁描述Mysql中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
-
在Mysql中ENUM的用法是什么?
-
如何定义REGEXP?
-
CHAR和VARCHAR的区别?
-
Mysql查询是否区分大小写?
-
Mysql中有哪些不同的表格?
-
什么样的对象可以使用CREATE语句创建?
-
什么是通用SQL函数?
-
MYSQL支持事务吗?
-
mysql里记录货币用什么字段类型好
-
Mysql中有哪几种锁?
-
MYSQL数据库服务器性能分析的方法命令有哪些?
Spring源码100集学习视频