最近面试的常见问题总结:
一.java集合:
1.常见的集合类型有哪些
2.ArrayList,LinkedList HashMap的底层原理
3.jdk 1.8对hashMap的优化,以及如何hash冲突的原理以及是否可以避免hash冲突
二:java虚拟机
1.描述java虚拟机的内存分布情况
2.常见的虚拟机的内存回收机制以及常见的java虚拟机
3.常见的内存异常有哪些以及你自己有使用过哪些Java命令来调试跟踪对应的java内存问题
三:Spring系列
1.如何理解Spring,SpringMVC,SpringBoot,SpringCloud等框架
2.有遇到过循环依赖问题?如何解决循环依赖
3.@Bean是作用于什么属性?作用于方法是如何确定注入的bean的名称。
4.Spring 实现依赖注入有哪几种方式?几种方式有什么区别?
5.BeanFactory和ApplicationContext有什么关系和区别
6.描述下SpringMVC的工作流程
7.说说下常见的SpringBoot的注解
8.SpringCloud的熔断机制说说看,以及如何实现服务注册的高可用等
四:多线程
1.创建一个线程有几种方式,两者有什么不同
2.谈谈volatile的理解和CAS机制。
3. 定义一个线程池,核心线程数量为10,最大的允许的线程数为20,队列大小为100.
外界突然进来了50个任务,问下现在线程池的各种任务分布。
4.有使用过JUC包没,具体说说用到了哪些?
5.业务需求方案:有个搜索需求,需要在多个搜索引擎中搜索,然后汇总多个搜索结果,然后进行汇总返回。
五:数据库方面
1.mysql索引优化有实践经验吗
2.业务场景:有个查询,关联了6-7张表,查询效率比较慢,该如何进行优化
3.有了解Mysql的索引原理吗
4.熟悉ElasticSearch吗?熟悉ES的原理吗?说说你对 倒排索引的理解
5.用过Redis吗?能否说说如何用Redis实现分布式锁。
六:linux
1.创建文件的命令有哪些
2.在linux操作docker的常用命令有哪些
七:消息中间件以及其他的中间件
1.讲讲消息中间件的优势
2.几种常见的消息中间件的协议
3.zookeeper的原理