【面试题2021】高频问点总结

说明

三四月份跳槽找工作的人真多啊,Java程序员面试的群体也很多。最近几天,自己也开启了面试模式,总结一下自己被频繁问到的知识点,按照技术栈路线梳理一下,同时在括号后面写出大致的答题思路,作为一种参考,查缺补漏吧。

1、MySQL/Oracle

【偏基础】

  1. “金额”字段在数据库中怎么设计?与之对应的JavaBean是什么类型?该类型的除法运算怎么用的?【decimal;BigDecimal;a.divide(b, scale).doubleValue()】
  2. mysql的主键和Oracle主键都怎么进行自增的?【auto_increment ;序列】
  3. mysql分页方式,Oracle分页方式?【①.原生语句——limit,rownum;②.mysql有分页插件——可能会问你插件原理,慎答!】
  4. mysql存储引擎有哪些?区别是什么?【InnoDB,MyISAM,Memory等;区别xxx…】
  5. mysql索引有哪些?引起索引实效的原因有哪些?平时都怎么优化索引的?【按结构/按常规分;实效原因很多 ——如 like,or,in,!=,is null等操作符操作,又如使用了函数,字段运算等;优化…】
  6. mysql的分区类型及使用场景?【range,list,hash等】
  7. Oracle怎么解决死锁问题?【造成的原因——sql一直处于执行状态,可能是多用户操作同一张表未提交事务而导致;解决思路——查询哪些对象存在死锁,杀死进程】
  8. 项目中让你设计数据库,说下设计思路。
  9. 场景:有订单模块,支付模块,库存模块,商场首页等模块组成的系统,你怎么设计数据库的表?具体有哪些表?【同第8题】

【偏原理】

  1. mysql索引底层结构,及特点?【分存储引擎,若InnoDB默认B+Tree,还有hash;B+Tree特点 —— 叶子结点冗余非叶子节点数据,且叶子结点从左往右相邻节点存在引用关系,适合范围和模糊查询,而hash是k-v结构,适合等值查询!】
  2. mysql如何实现加锁的,及如何实现乐观锁?【这要了解mysql锁机制,MVCC,表锁和行锁等才能回答上来…】
  3. mysql如何排查慢SQL语句问题?【mysql提供了慢日志查询,具体的也可以展开说…】
  4. 描述下一条sql在mysql中执行的过程?【需要知道mysql四层架构中的核心服务层,该服务层有哪些组件构成及作用…】

2、Redis

【偏基础】

  1. Redis数据类型?
  2. Redis持久化方式及区别?
  3. 缓存异常场景:雪崩,击穿,穿透,双写一致性等原因分析,及怎么解决?【很重要,几乎都会问的…】
  4. 用Redis实现过其他功能吗?【最好回答有,如分布式锁,session会话保存,接口调用次数限制,与其他组件的配合使用等】

【偏原理】

  1. Redis分布式锁怎么实现的?分布式系统中还有其他方式吗?【其他方式:zk】
  2. 项目中Redis是如何规划使用的?【比如是否高可用,缓存异常问题有哪些应对策略,过期键设置原则等】

3、多线程

【偏基础】

  1. 线程创建有哪些方式?【四种】
  2. 线程池的参数有哪些?怎么创建线程池,怎么提交,提交方式的区别,线程池拒绝策略有哪些?【一问到底的那种类型…】
  3. 怎么让一组线程处于等待执行?【貌似问countDownLatch的使用情况…】
  4. sychronized 与 lock区别?
  5. 死锁及原因?
  6. 保证线程隔离性措施有哪些?【加sychronized/lock,或原子类相关的,或ThreadLocal】

【偏原理】

  1. ThreadLocal原理?ThreadLocal应用场景有哪些?为什么会出现内存泄露?怎么避免或解决ThreadLocal的内存泄露问题?Java中还有其他内存泄露的场景吗,及平时怎么去排查这类问题?【一问到底的那种类型…,排查会涉及到GC原理,GC日志,使用的工具等】
  2. lock的实现类是什么?底层默认是什么锁?【回答可重入锁或者非公平锁,解释含义…】
  3. 线程安全的集合有哪些?concurrentHashMap为什么能保证线程安全呢?描述concurrentHashMap底层原理。【最后说一下jdk升级前后concurrentHashMap的差异】

4、SSM框架

【Spring】

  1. 过滤器和拦截器的区别?有哪些使用场景?
  2. SpringIOC原理【ioc容器创建对象,及维护对象间依赖关系】
  3. Spring的循环依赖,及解决方法?【多个对象相互引用导致的,怎么解决去百度吧…,三级缓存…】
  4. SpringAOP底层原理?两种代理模式的区别?【描述两种动态代理区别,及如何实现横切逻辑的】
  5. Spring事务声明方式?事务如何配置使用的?事务传播机制?事务隔离级别有哪些及存在的问题?不可重复读和幻读区别?
  6. 场景:一个非事务方法调用另一个事务方法时,异常是怎样的?一个事务方法调用了其他方法,异常又会怎样?【与事务传播机制有关…,前者会抛异常,与传播机制无关,后者属于嵌套异常,与传播机制有关】

【SpringBoot】

  1. 简述SpringBoot的启动原理?
  2. 简述SpringBoot自动化配置原理?
  3. SpringBoot优势有哪些?
  4. 数据库连接池都配置过哪些?怎么切换不同的数据源?

【mybatis】

  1. 什么是sql注入,mybatis怎么解决sql注入问题的?没有mybatis框架,你该如何处理sql注入问题?
  2. mybatis一级缓存和二级缓存的区别?
  3. mybatis执行SQL的流程?
  4. 为什么Dao层接口能映射到XML文件?

5、Java虚拟机

  1. JVM内存模型,有哪些内存数据区域?各自特点?【对栈或方法区会仔细问,比如方法区放的是哪些东西?JVM栈呢?—— 栈桢】
  2. 描述类加载过程
  3. GC的原理,GC算法有哪些,垃圾回收器有哪些?
  4. Young GC 与Full GC区别?
  5. JVM参数有哪些,平时怎么调优的?
  6. GC日志了解吗?常用的工具都有哪些?
  7. 场景:假如项目部署上线后过段时间总无法访问,什么原因?怎么排查?用哪些工具?怎么解决cpu100%问题?

6、Java基础

  1. 重写和重载区别?
  2. 什么是序列化?怎么禁止JavaBean属性的序列化?
  3. Java异常体系,项目怎么处理异常的?
  4. new一个字符串,与直接赋值一个常量,二者区别?
  5. List集合遍历方式有哪些?遍历删除时要注意什么东西?【最好结合源码,说一下并发修改异常的问题】
  6. hashmap的底层结构,怎么解决哈希冲突?
  7. Java8有哪些新特性?
  8. 项目中怎么排除jar包冲突问题?
  9. 怎么做前后端分离?【nginx+tomcat,前端ajax请求后台restful api接口,并使用json格式进行数据交互】

7、其他

  1. ES怎么使用的?ES索引是什么?
  2. RabbitMQ怎么使用的?应用场景有哪些?怎么确保消息不重复消费?死信队列了解吗?怎么处理队列的死信?
  3. 自我介绍【基本信息 + 工作经历 + 最近学习 + 个人规划,当然也可以只说 基本信息 + 工作经历】
  4. 选择最近的或你熟悉的项目介绍下【项目背景 + 架构和技术栈 + 自己角色 + 项目成果】

【不积硅步无以至千里,共同学习进步吧~】

猜你喜欢

转载自blog.csdn.net/qq_29119581/article/details/115038100