前言
之前我一直都是在传统行业里工作,项目中一直用的是写了好多年的老项目,一直在维护之前的代码,不会有大改动,加班也很少,一直呆在舒适区里,导致自己很难保持学习的状态,有的时候真的需要逼自己一把,强迫自己从舒适区中跳出来,认真踏实提升自己。
刚开始面试确实挺难,尤其今年,但是即使一直没有收到offer,但是还是需要给自己信心,静下心来,总结失败经验,补足自己的知识短板,相信自己一定可以的。
受到疫情的影响,得到了很多的学习时间,前段时间一直在跟着马老师学习,最后终于拿到了阿里的offer,有的时候不逼自己一下,你永远不知道你能做到什么程度
下面是跳出舒适区时遇到的面试题
Jdk
有些面试官会直接问讲一下java的集合类
一般都会问到ArrayList,LinkedList的区别,主要答存储结构,增删改查效率
Set会问到hashSet,treeSet,以及Set和map的区别,list和set的区别
Map会问到HashMap,TreeMap,HashTable的区别
HashMap会问到底层数据结构,以及解决hash碰撞的方法
Hashmap底层涉及到红黑树,有些面试官会让解释一下红黑树
集合类怎么解决高并发问题
队列的使用问题
也有问到Exception的类型的,有的面试官会问到自定义异常的问题
Object类中的方法
我们用的是jdk1.8,有的面试官会问到1.8的新特性
笔试题会问到通过一段程序,写出打印语句
Spring
很多面试官会问到spring的底层代码,一般会问到bean的生命周期,有些会问到循环引用问题,以及spring中用到的设计模式
解释一下spring,springMVC,springBoot
说一下spring和springBoot的区别
spring的AOP
spring的事务是如何回滚的
Jvm
jvm内存模型,以及这些空间都存放什么东西
堆内存划分的空间,如何回收这些内存对象,有哪些回收算法
jvm调优,如何解决线上gc问题
class初始化过程
内存溢出的原因,如何排查线上问题
jvm有哪些垃圾回收器,少部分公司会让解释一下某个垃圾回收器,一般都是cms往后的
类加载模型
Mybatis
和hibernate的区别
mybatis的缓存,都缓存些什么,session缓存存在哪
mybatis的执行流程,需要了解源码
mybatis防止sql注入,jdbc防止sql注入
多线程
多线程之间是如何通信的
synchronized底层实现,和lock的区别
synchronized关键字加在静态方法和实例方法的区别,有的面试官会出一些题,让判断是否会发生争夺锁问题
稍大点的厂会出面试题,涉及到countdownlatch的用法
线程池的用法,Executor提供了几种线程池,大厂会问到线程池的参数,参数说明,拒绝策略有哪几种也需要说一下,任务放置的顺序过程,任务结束后会不会回收线程,未使用的线程池中的线程放在哪里,线程池线程存在哪,cache线程池会不会销毁核心线程等问题。
MySql
Mysql的索引类型,底层索引数据结构,用这个的好处,叶子节点存储的是什么,索引失效的原因
如何优化sql,查询计划的结果中看哪些些关键数据
innodb和myisam的区别
mysql默认隔离级别,
mysql的乐观锁和悲观锁,锁的种类
如何用sql实现乐观锁和悲观锁
mysql如何分库分表
Redis
几乎所有公司都用到redis,redis的问题还是比较多
redis的数据结构类型,一般都用在什么场景下
sortedSet的底层数据结构
利用redis实现分布式锁
redis使用单线程的好处
redis中如何控制多线程并发
redis删除key的策略
redis的主动缓存,被动缓存
如何保证数据一致性问题
集群环境下如何处理,解释一下一致性哈希
解释一下缓存击穿,缓存穿透,缓存雪崩,如何解决这些问题
MQ
mq的结构图,交换机的种类,如何保证消费者是否消费,ack返回的种类
请求过程服务宕机如何处理,钱已经转出,消费端服务处理不了
一般公司都会用到kafka
分布式事务
如何实现
SpringCloud
SpringCloud和dubbo的区别
项目中用到了哪些组件
eureka的原理,如何保证高可用性,和Zookeeper有什么区别
feign如何调用的
处理生产环境上配置生效问题
hystrix的降级策略有哪些
Dubbo
底层如何实现,画一下dubbo的架构图
可能我项目中没用到dubbo,问的相关问题比较少
设计模式
问的比较多的是单例模式,需要了解每种写法
项目中用到哪些设计模式,讲一下为什么要用,怎么用的?
其他一些少部分公司会问到的
多数据源问题
Tomcat启动原理
http协议
zookeeper 如何保证可用性
接口加密问题
epoll模型
方法缓存是什么
数据库路由
自己实现(dubbo)如何调用远程服务的接口
阿里面试题
数据库
使用mysq1索引都有哪些原则?
索引什么数据结构?
B+tree和Btree什么区别?
mysq有哪些存储引擎啊?都有啥区别?要详细!!
设计高并发系统数据库层面该怎么设计?
数据库锁有哪些类型?如何实现呀?
数据库事务有哪些??
分库分表
如何设计可以动态扩容缩容的分库分表方案???
用过哪些分库分表中间件,有啥优点和缺点,
讲一下你了解的分库分表中间件的底层实现原理?
我现在有一个未分库分表的系统,以后系统需分库分表,如何设计,
让未分库分表的系统动态切换到分库分表的系统上???
分布式事务知道吗?你们怎么解决的?TCC?那若出现网络原因,网络连不通怎么办啊
为什么要分库分表啊???
分布式寻址方式都有哪些算法?知道一致性hash吗?
手写一下java实现代码??你若userId取摸分片,那我要查段连续时间里的数据怎么办??
如何解决分库分表主键问题?有什么实现方案??
分布式缓存
redis和memcheched什么区别?为什么单线程的redis比多线程的memched效率要高啊?
redis有什么数据类型?都在哪些场景下使用啊?
reids的主从复制是怎么实现的?redis的集群模式是如何实现的呢?redis的key是如何寻址的啊?
使用redis如何设计分布式锁?使用zk可以吗?如何实现啊?这两种哪个效率更高啊??
知道redis的持久化吗?都有什么缺点优点啊??具体底层实现呢?
redis过期策略都有哪些?LRU?写--下java版本的代码吧??
分布式服务框架
说一下dubbo的实现过程?注册中心挂了可以继续通信吗??
zk原理知道吗?zk都可以干什么?Paxos算法知道吗?说一下原理和实现??
dubbo支持哪些序列化协议?hessian?说一Fhessian的数据结构?PB知道吗?为啥PB效率是最高的啊??
知道netty吗?netty可以干嘛呀NIO,BIO,AIO都是什么啊?有什么区别啊?
dubbo复制均衡策略和高可用策略都有哪些啊?动态代理策略呢?
为什么要进行系统拆分啊?拆分不用dubbo可以吗?dubbo和thrift什么区别啊?
分布式消息队列
为什么使用消息队列啊?消息队列有什么优点和缺点啊?
如何保证消息队列的高可用啊?如何保证消息不被重复消费啊?
kafka,activemq,rabbitmq,rocketmq都有什么优点,缺点啊???
如果让你写一个消息队列,该如何进行架构设计啊?说-下你的思路
分布式搜索引擎
es的工作过程实现是如何的?如何实现分布式的啊
es在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
es的查询是个怎么的工作过程?底层的lucence介绍一下呗?倒排索引知道吗?
es和mongdb什么区别啊?都在什么场景下使用啊?
高并发高可用架构设计
如何设计一个高并发高可用系统?
如何限流?工程中怎么做的,说一下具体实现?
缓存如何使用的?缓存使用不当会造成什么后果?
如何熔断啊?熔断框架都有哪些?具体实现原理知道吗?
如何降级?如何进行系统拆分,如何数据库拆分????
JVM
请介绍一下JVM内存模型??用过什么垃圾回收器?都说说呗?
线上发送频繁ful1gc如何处理??CPU使用率过高怎么办?
如何定位问题?如何解决?说下解决思路和处理方法.
知道字节码吗?字节码都有哪些?
IntegerX5,inty=5,比较x=y都经过哪些步骤?
讲讲类加载机制呗?都有哪些类加载器,这些类加载器都加载哪些文件?
手写一下类加载Demo
知道osgi吗?他是如何实现的???
请问你做过哪些JVM优化?使用什么方法?达到什么效果???
class.forName("java.langString")和String.class.getClassLoader().LoadClass("java.lang.String")什么区别啊??
Spring
spring都有哪些机制啊?AOP底层如何实现的啊?I0C呢??
cglib知道吗?他和jdk动态代理什么区别?手写个jdk动态代理呗?
通信协议
说一下TCP/IP四层?
http的工作流程???http1.0http1.1http2.0具体哪些区别啊?
TCP三次握手,四层分手的工作流程?画一下流程图?为什么不是四次五次或者二次啊?
画一下https的工作流程?具体如何实现啊?如何防止被抓包啊??
算法
比较简单,我一个文件,有45亿个阿拉伯数字,如何进行去重啊?如何找出最大的那个数啊?
数据结构
二叉树和红黑树等.
文中的面试题我都整理好了,感兴趣的朋友可以帮忙转发文章后,关注私信回复【学习】来免费获取
网友评论