答出多少面试题能吃上饭?

一、基础
    1、Java都有哪些数据类型?基本数据类型有哪些?分别占多少字节?多少位?引用数据类型又有哪些?
        基本数据类型:byte(1)、short(2)、int(4)、long(8)、float(4)、double(8)、char(2)、boolean(1)
        引用数据类型:数组、接口、对象
    2、Java语言的几大特性是什么?分别怎么理解?(封装、继承、多态的好处)    
    3、Java的权限修饰符有哪些?都能加在哪些地方?分别代表什么意义?
    4、什么是重写?什么是重载?
    5、final关键字能加在哪些地方?分别代表什么?
    6、static关键字能加在哪些地方?分别代表什么?
    7、接口中可以有哪些成员?抽象类呢?接口和抽象类又有什么区别?(注意JDK1.8接口中是可以出现非抽象方法的:default方法、静态方法)
    8、Java异常体系是什么?(编译)异常有什么区别?常见的运行时异常有哪些?
    9、== 和 equals的异同?
    10、&与&&、|与||的区别?
    11、String可以修改本身吗?为什么?
    12、StringBuffer和StringBuilder的区别是什么?
    13、valueOf和toString的区别?
    14、大量字符串用 "+" 号进行拼接效率高吗?为什么?应该用什么替代?为什么?
    15、创建一个类的实例都有哪些办法?
    16、Java集合的体系是什么样的?
    17、Set和List分别有哪些特点?Set去重的原理?
    18、ArrayList底层原理是什么?扩容原理?
    19、LinkedList底层原理是什么?和ArrayList的区别是什么?
    20、HashMap的底层原理是什么?map添加数据put的过程?扩容原理?
    21、concurrentHashMap原理是什么?
    22、JDK8对于HashMap做了哪些优化?
    23、什么是socket?什么是IO/NIO/BIO/AIO?区别是什么?
    24、什么是反射?可以用来干嘛?列举一下反射应用场景?什么是暴力反射?
    25、算法了解过吗?冒泡排序、选择排序、快排原理?
    26、JDK1.8的新特性有哪些?(lamda表达式、stream流、函数式接口、接口中默认方法、方法引用等等)
    27、IO流体系
    28、如何实现分布式主键自增?
    29、http底层,和https的区别?
    30、Java是引用传递还是值传递?为什么?

二、JVM
    1、JDK和JRE的区别是什么?
    2、JVM的内存模型描述下?
    3、JVM双亲委派加载机制,为什么JVM这么做?有违反双亲委派的例子吗?
    4、类的加载流程是什么样的,每个阶段解释一下
    5、JVM的GC的主要区域以及各自的GC机制是什么样的?
    6、JVM的GC算法都有哪些?
    
三、Spring & SpringBoot
    1、说下对SpringIOC的理解,怎么理解控制反转? 
    2、Spring如何解决IOC中的循环依赖问题?
    3、说下对SpringAOP的理解、有哪些通知?使用场景有哪些?(底层原理:两种动态代理)
    4、说下SpringMvc的流程(从访问一个URL到得到页面结果的具体流程:DispatcherServlet的职责流程)
    5、对Spring声明式事务的理解?Spring的事务隔离级别?Spring事务传播行为?
        声明式事务:通过打注解的方式去声明一下即可:@Transactional
        编程式事务:开启事务、提交、回滚都是需要自己编写代码的
    6、什么情况下会让spring事务失效
    7、Spring有哪些核心注解?分别的作用?
    8、Spring和SpringBoot的关系?
    9、SpringBoot的自动装配原理是什么?
    10、SpringBoot的核心注解是哪个?详细说下
    11、SpringBoot项目的启动加载流程大概说下
    12、SpringBoot项目读取配置文件的方式有几种?
    13、如何自定义SpringBoot starter?
    14、BeanFactory和FactoryBean的区别?
    15、Spring Bean的生命周期是什么?
    
四、Mysql & Mybatis?
    1、什么是索引?
    2、Mysql的数据结构是什么(mysql索引的数据结构)?为什么用这种结构?(如何提高磁盘IO效率)
    3、Mysql的数据IO查找流程是什么样的?
    4、B+tree和Btree由什么组成?他们的异同?
    5、Mysql两种存储引擎(InnoDB和Mysiam)的区别?这两种引擎B+tree的叶子结点和非叶子结点分别存储的什么?
    6、Mysql索引有哪些类型?什么场景使用哪种索引?
    7、如何进行Mysql优化?(sql优化层面和服务器优化层面)
    8、Sql调优你会从何入手(措施)?
    9、Mysql中如何合理使用索引?有哪些会使索引失效的情况?
    10、Mysql如何排查慢查询(哪个关键字)?分别会列出来哪些信息项?
    11、事务的特性是什么?Mysql事务隔离级别有哪几种?分别会产生什么问题?Mysql默认隔离级别是什么?Oracle呢?
    12、Mysql的行锁、表锁,悲观锁、乐观锁?
    13、Mysql的vachar和char的区别?
    14、什么是内连接(inner join)、外连接(left join)?
    15、平时Mysql的sql练习要练到位!!
    16、Mybatis底层的原理?一级缓存和二级缓存是什么?
    17、mybatis #{}和${}的区别?
    18、Mysql存储过程、存储函数、触发器、视图(View)分别用来干嘛的?创建语法是什么?
    19、union和unionAll有什么区别?
    20、创建表、删除表、更新表字段语句?
    21、mysql左外连接语句的写法?
    22、听过InnoDB的Mvcc技术吗?说下是什么?
    23、Java实现动态代理有哪些方式?区别是什么?
    
    
五、多线程
    1、创建线程的方式有哪些?相比继承Thread类,实现Runable接口的好处是什么?
    2、线程的状态有哪些?
    3、run()和start()方法有哪些区别?
    4、实现线程间通讯的方法有哪些?
    5、wait、notify、notifyAll分别的作用是什么?可以用在同步代码块之外吗?为什么?
    6、Sleep和Wait的区别?
    7、什么是线程安全问题?什么情况下会产生?如何解决?
    8、什么是死锁?如何防止产生死锁?
    9、Synchronized关键字的底层原理是什么?
    10、Synchronized可以用在哪些地方?分别的锁对象是什么?
    11、Synchronized和JUC下Lock锁的异同?
    13、Synchronized在JDK1.6做了什么优化?
    12、Synchronized是公平锁还是非公平锁?获取不到锁时会阻塞吗?
    13、同步代码块中执行完wait/notify/notifyAll后会立马释放锁吗?
    14、Lock锁有哪些实现?分别的特点是什么?
    15、JUC下Lock的监视器对象是哪个类?与Synchronized的监视器有什么异同?
    16、什么是线程可重入?Synchronized具备吗?Lock呢?
    17、什么是AQS?
    18、什么是CAS?什么是CAS的ABA问题?如何解决?
    19、你了解JUC下的哪些工具类,分别有什么作用?(CountdownLatch、Cyclicbarrier、Simephore)
    20、说下volatile关键字,有什么作用?原理是什么?
    21、说下ThreadLocal,有什么作用?有哪些主要方法,实现原理是什么?为什么会有内存泄漏问题?如何解决?
    22、说下线程池的几大核心参数?分别有什么作用?有几种默认的线程池?他们的7个核心参数为什么要那么设置?
    23、单例模式写法有哪几种?(懒汉和饿汉式)那么懒汉式中保证线程安全的写法是什么?为什么要用双重检查模式?
        
    
六、Redis & 多级缓存
    1、Redis是一个什么样的数据库?读写速度怎么样?
    2、Redis有哪些数据类型,分别的特点?在你们项目中常见的应用场景有哪些?请列举
    3、Redis的持久化机制是什么样的?
        1)、什么是RDB?RDB的持久化机制(Save、bgSave)?
        2)、触发RDB的时间点是什么?
        3)、RDB的优缺点分别有哪些?
        4)、什么是AOF?分为几个阶段?
        5)、AOF命令同步至日志文件分为哪几种?
        6)、AOF文件重写时间点?重写做了什么?
        7)、AOF的优缺点分别有哪些?
        8)、AOF和RDB同时开启会优先使用哪种进行数据恢复?
        9)、RDB-AOF混合模式是什么?优点有哪些?
    4、Redis主从结构能解决什么问题?
    5、Redis主从同步具体流程是什么?   
        1)、建立连接
        2)、数据同步(全量同步、增量同步)【runid运行ID、offset偏移量、复制积压缓冲区】
            1、全量同步具体场景有哪些?流程?如何避免全量同步次数(全量同步非常耗时)
            2、增量同步具体场景有哪些?流程?
        3)、命令传播
    6、如何优化主从同步效率?
        1)、从尽量避免全量同步的方面入手(安全重启使runid不发生变化、调大复制积压缓冲区)
        2)、避免slave从结点太多造成复制风暴(使用树状拓补结构)
    7、Redis的故障恢复依靠什么机制?哨兵机制的主要工作范围、工作流程和作用?
    8、什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
    9、Redis是单线程的,为什么读写效率还那么高?
    10、Redis的线程模型是什么样的?(典型的NIO,非阻塞式IO)
    11、Redis过期数据的删除策略是什么?有哪些?
    12、Redis的数据淘汰策略是什么?有哪些?
    13、Redis的慢查询如何排查?
    14、如何正确使用Redis的分布式事务锁?(Zookeeper也可以实现分布式锁)
    15、Redis的双写一致性如何保证?
    16、项目搭建多级缓存的好处是什么?实现多级缓存的流程是什么?(加分项)
    17、Redis的hash槽一共有多少个?数据是如何进行入槽的?如果实现动态扩容?
                                        消费者    
    生产者 -> 【exchange -> queue】  -> 消费者(开启多个线程)
                                        消费者
    
七、Rabbitmq
    1、Rabbitmq消息模式有哪些?你们用的哪种?(5种)
    2、Rabbitmq如何保证mq消息可靠性?(3大方面)
        1、如何保证生产者不丢
        2、如何保证消息到达MQ了之后不丢
        3、如何保证消费者不丢
    3、Rabbitmq如何实现延时消息?(2种)
    4、什么是死信队列?什么样的消息会进入死信队列?
    5、Rabbitmq如何解决消息堆积问题?(3种思路)
    6、如何保证消息的幂等性?(从业务层面进行判断)        
    7、如何保证消息顺序消费
        1)、让同一组消息有序的存入同一个队列  
        2)、同一个队列只能有一个消费者进行消费
        3)、引出的问题:如何保证消息消费的速度
            1)、可以起多个队列去存放这一类消息
            2)、消费者中消费消息的代码可以开启多个线程,一个线程消费一个List
    
八、微服务
    1、概念问题
        1)、什么是微服务?解决微服务各种问题都用了哪些组件?
        2)、什么是单体架构、什么是分布式架构、什么是微服务架构?
        3)、微服务有哪些特点?

    2、远程调用
        1)、什么是Feign,用来做什么的?Feign底层调用是怎么实现的?底层协议是什么?优势是什么?
        2)、服务间调用,其中一个服务宕机了,这个时候怎么做呢?
        3)、Ribbon是什么?负载均衡策略有哪些?底层原理是什么?默认是哪种?
        4)、Ribbon是如何实现轮询的?如果让你自己实现轮询,如何实现?    
        5)、Feign和Ribbon的关系是什么?
        6)、你们项目中如何使用Feign的(Feign的最佳实践)
        7)、Feign远程调用时的日志级别有哪些?
        8)、如何优化Feign的调用性能?
        7)、Feign的默认超时时间是多久?重试次数是几次?
        8)、Dubbo服务注册与发现的原理?(官方原理图)
        9)、Dubbo负载均衡策略有哪些?默认是哪种?
        10)、Dubbo支持哪些通信协议?默认是哪种?一般用哪种协议?有什么好处?
        11)、注册中心挂了影响服务调用吗?为什么?
        12)、Dubbo启动检查如何设置?多版本支持如何设置?
        13)、Dubbo的默认超时时间是多久?重试次数是几次?
        14)、Dubbo进行服务注册和发现的核心注解是哪个?
        15)、Dubbo服务如何进行监控和管理?
        
    2、注册中心
        1)、Eureka
            1、eureka是属于什么体系的技术(Spring Cloud)
            2、eureka技术体系有哪些角色?(服务端用作注册中心,客户端用作微服务)
            3、eureka的自我保护机制是什么?什么时候开启?为什么开启?开启了会发生什么?
            4、eureka作为注册中心的原理是什么?心跳检测某个服务是否健康的原理详细说下?
            5、eureka集群是属于AP还是CP?(AP)
            
        2)、Nacos
            1、nacos是属于什么体系的技术(Spring Cloud Alibaba)
            2、nacos作为注册中心的原理是什么?
            3、nacos如何确定唯一的一个服务?(通过namespace、group、service、集群唯一确定一个服务)
            4、nacos中namespace、group分别的作用是什么?
            5、nacos和eureka的异同有哪些?
            6、nacos的临时节点和非临时节点有什么区别?
            7、nacos集群是属于AP还是CP?(AP或CP)
            
        3)、Zookeeper
            1、Zookeeper的内部结构是什么?
            2、使用Zookeeper作为分布式事务锁的原理是什么?
            3、Zookeeper集群属于AP还是CP?(CP)
        

    public void beginInsert(){
        synchronized(this){
            (MyService)(AOPContext.curenttProxy()).insert();
        }
    }
    
    @Transation    
    public void insert(){
        User user = query("张三");
        if(user == null){
            insert(user);
        }
    }
    
    3、配置中心
        1)、实现配置中心都可以使用哪些技术?
        2)、使用nacos作为配置中心,如何实现热更新?
        3)、nacos作为配置中心,为什么需要用到bootstrap文件?
        4)、远程配置文件和本地配置文件属性加载优先级是什么样的?
        5)、使用配置中心的好处是什么?能解决什么问题?
    
    4、服务保护
        1)、Hystrix
            1、hystrix是属于什么体系的技术?(SpringCloud)
            2、hystrix可以用来干嘛?(服务熔断降级)
            3、hystrix默认的触发熔断策略是什么?(5分钟之内服务调用异常比例达到一半或者失败次数超过20次)
            4、hystrix的隔离是基于什么?(线程池隔离【低扇出】)
        2)、Sentinel
            1、sentinel可以用来干嘛?(限流、隔离、熔断、降级)
            2、什么是微服务雪崩现象?如何解决微服务雪崩问题?
            3、sentinel的限流模式有哪些?分别的运用场景是什么?
            4、sentinel的限流效果有哪些?分别的运用场景是什么?
            5、sentinel支持对热点参数进行限流吗?
            6、实现微服务调用隔离有两种方式(信号量隔离和线程池隔离),区别是什么?sentinel是使用的哪种?
            7、什么是熔断?熔断的原理是什么?什么时候会触发sentinel的熔断?断路器的三种状态是哪些?是怎样进行切换的?
            8、什么是降级?如何实现降级?
            9、sentinel授权规则是用来干什么的?
            10、sentinel的规则持久化方式有哪些?一般使用哪种?
            
    
    5、网关
        1)、网关有什么作用?在你们项目中用网关来干嘛了?
        2)、网关的核心技术点有哪些?
        3)、网关的路由是用来干嘛的?分为哪几种?
        4)、网关的过滤器是用来干嘛的?分为哪几种?
        5)、网关局部过滤器和全局过滤器的区别有哪些?
        6)、网关中局部过滤器、默认过滤器、全局过滤器的执行顺序是什么?
        7)、加入网关后,访问一个链接,你们项目的执行流程是什么?
        8)、定义全局过滤器需要实现哪几个接口?

    
    6、分布式事务
        1)、什么是本地事务?什么是分布式事务?
        2)、什么是CAP定理?为什么必须保证P?为什么在保证P的前提下只能保证C或者A其中一个?
        3)、什么是BASE理论?
        4)、seata解决分布式事务的三个角色以及分别的作用什么?
        5)、seata解决分布式事务的四种模式
        6)、XA模式特点、原理以及应用场景?优缺点有哪些?
        7)、AT模式特点、原理以及应用场景?优缺点有哪些?有可能会出现什么问题?如何解决?
        8)、重点:TCC模式特点、原理以及应用场景?优缺点有哪些?有可能会出现什么问题?什么是空回滚和业务悬挂,如何解决?
        9)、SAGA模式特点、原理以及应用场景?优缺点有哪些?
    

九、Docker
    1、什么是Docker?优点是什么?有哪些核心概念?
    2、镜像操作命令有哪些?
        拉取、推送、查看、查看所有、删除、删除所有、制作镜像、导出镜像、加载镜像
    3、容器操作命令有哪些?
        查看所有、查看正在运行的容器、删除、强制删除、创建容器、创建并运行、
        启动容器、停止容器、重启容器、暂停容器、恢复容器、进入容器
    4、数据卷操作命令有哪些?
        创建数据卷、查看单个数据卷详情、查看数据卷列表、删除数据卷、删除未使用的数据卷、创建容器时挂载数据卷
    5、docker如何自定义镜像?docker file的语法是什么样的?
    6、docker compose是干嘛的?语法是什么样的?
    
    
十、ElasticSearch
    1、什么是ES?由什么语言编写?和Lunce的关系?什么是ELK?
    2、ES的核心概念有哪些?什么是索引?什么是文档?文档格式是什么?什么是映射?什么是DSL?
    3、什么是倒排索引?倒排索引建立过程?
    4、ES有哪些数据类型?keyword和text有什么区别?
    5、重要:说说用户输入框输入查询条件 进行ES搜索的底层原理过程
    6、ES分词器适合在什么字段上使用?分词器在ES中的使用场景有哪些?(建立倒排索引时对文档分词和用户搜索时对搜索条件分词)
    7、你们分词器用的哪种?为什么要自定义拼音分词器?为什么搜索时不能用拼音分词器?
    8、ES有哪些查询类型,分别用在什么场景?如何实现复合查询?要给指定的数据进行加分如何实现?
    9、ES能对搜索结果进行哪些处理?如何实现高亮?
    10、ES有哪些聚合查询?
    11、ES如何实现自动补全查询
    12、如何自定义分词器?
    13、如何实现es与mysql的数据同步?
    14、es集群节点有哪些类型?分别的职责是什么?
    15、什么是es脑裂问题?
    
    
十一、压测、高并发性能优化
    1、jemiter压测工具使用
    2、多级缓存(nginx共享字典、redis缓存、tomcat进程缓存)
    3、数据库主从读写分离(mycat)
    4、发布:
        开发环境、测试环境用的shell脚本自动发布(包括从git上拉取代码、打包编译、启动)
        预上线、线上环境用的jenkins持续集成    
    5、提交代码之前需要做什么?git pull
    
 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值