java常见面试补录
***
外卖系统:(业务讲解)。
前端:用户下单;
后端:管理员; 拦截器。
提示:业务介绍;涉及哪些模块;业务流程(哪些角色做什么事)。
*、Mysql,redis:mysql异步场景时,Mysql无法写入。 (MQ没讲)
*、Redis:缓存;消息队列??;业务解耦??;常见数据结构(string,hash,list,set)
hash使用场景:每天的用户量。
*、登录:短信验证码,有时间限制。(定期删除;惰性删除)。
*、持久化机制,两种。
*、Redis:雪崩(解决方法:集群)、穿透(不存在的对象;缓存不存在的对象)。
*、Mysql:存储引擎有哪些?(innodb,myisam);优化措施(查询:不用*;模糊查询;根据where条件加索引;分页查询)。
单条记录数很大时,常见优化措施:分库分表:水平(通常按时间如年份建立不同的表)和垂直(将一些字段分到其它表)分表。
*、数据库事务:并发所出现的问题,如脏读、提交读、可重复读(查询一条数据)、幻读(查询多条数据,范围查询)、串行读。
*、SpringBoot独有的注解:常见注解和作用:项目级;serice层;dao层;Control层。
*、SpringBoot与Spring的区别:Spring:ioc,aop;springboot:包管理、项目管理、环境切换。
*、表单提交:get,post区别:从http协议的角度讲(行、头、体)。post:表单数据、文件上传。
*、请求转发和重定向区别:从http协议的角度讲。(客户端与服务端)。
*、String,StringBuffer,StringBuilder:可变与否;线程安全与否;
*、String为什么不可变:源码String是用final修辞的。
*、final主要用在什么地方的:用在类中;用在方法中;用在参数中(地址不能变)。
*、hashMap和hashTable区别:hashTable过时原因(ConCurrentMap:线程安全的map);hashMap底层原理(hashcode)。
*、项目中使用到锁:Mysql悲观锁、乐观锁;redis分页式锁。
*、设计模式:单例、工厂、代理、装饰器、观察者。
*、了解哪些数据结构:如:map,list,queue,红黑树.... (补讲)
========================
***
*、最熟悉的系统:请假模块。(前端:未写,用postman测试接口)。
后端:先数据库(基于角色的权限、树型);除了CRUD,业务逻辑。
员工:员工自己的信息;请假。
领导:所有部门信息,请假,审批。
管理员:不受限制。
*、上线测试:api文档;测试后端(postman);fiddler抓包观察请求和响应。
*、 自定义注解,在开发中使用过的:配置反射使用。jdbc模拟mybatis时,字段名与属性名不一致的问题;以及日期格式的问题。
*、SpringBoot特有的注解:SpringApplication、SpringContext、Swagger...
*、项目中用到锁:mysql悲观锁(for update)、乐观锁(version,updatetime);区别。
*、用户注册或支付时,用户多点了几次,后端会收到多次请求,如何处理?(redis缓存)
*、redis和mysql:双写的一致性,如何保证?
*、项目中遇到什么难题,如何解决?(角色权限设计,树型结构查询)
*、权限框架:shior框架;手写(哪些表:基于角色:人员表、角色表、权限表、角色分配表、角色权限表,共5张)。
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。
*、大表优化方法:
*、redis常见数据结构:string,list,hash,set。
*、redis内存淘汰机制(先进先出;最少使用)、持久化机制(区别:效率与可靠性):解决:用集群。
*、redis:缓存雪崩()、穿透(现象及解决;大量的空值也会冗余)、击穿()。
*、Mysql常见的两种存储及区别:inndo,myisam。
*、自动装箱与拆箱(集合场景)
*、序列化与反序列化: 内存对象<---->字符串。
*、对java的理解:java面向对象;相比C,组件化开发方式。 (学了java能知道如何做一个框架,以及让别人使用这个框架来达到更高级别的复用)
*、封装(通过公有方法,访问私有属性)、继承()、多态(将子类对象,当作父类类型,传给某个方法的参数)。
========================
***
*、个人介绍。
*、最熟悉的系统:移动端:在线浏览、下单、购物车;后台管理:分类、菜品、套餐管理。
*、项目遇到什么具体的问题,如何解决的。(开发过程中,遇到什么难点)
*、项目中为什么要用到redis:缓存数据,验证码(过期时间,setNX);定期删除与惰性删除。
*、redis的6种淘汰策略:缓存穿透现象及解决方法(布隆过滤器:原理)
*、SpringBoot 专用注解:配置类、开关类、启动类、组件扫描注解;注解名称及注解。
*、SpringBoot 自动配置的原理(底层:Spring的容器:ioc,aop)。
*、SpringBoot 核心配置:application.yml。
*、mysql:索引(主键索引,唯一索引,复合索引);前缀原则。
*、mysql事务隔离级别:未提交读、提交读、可重复读、串行化。
*、微服务的概念:微服务常见容错处理(限流,超时,降级);负载均衡。
*、自动装箱与拆箱:概念和应用场景(集合)。
*、String,StringBuffer,StringBuilder区别:原理和效率。
*、String:赋了值以后,可以改变这个值吗?(值的本身不可变,但是String变量对应的值会变化)。
*、tcp三次握手:询问,响应,再询问;四次挥手。
*、设计模式:工厂模式。
*、谈谈对java的理解:面向对象(面向过程);从封装、继承、多态三方面回答;回调、框架。
========================
***
*、个人介绍
*、最熟悉的项目:毕设(管理员、学生-完成作业、教师-发布作业)
*、springmvc:运行时找不到servlet:
*、请求本身只能处理1万,但突然来了2万,如何设计?(线程池、消息队列)
*、项目上前线如何进行测试的?
*、有没想过改为微服务?
*、项目中有用过自定义注解吗?使用场景? (字段名和属性名不一致)
*、springboot:自动配置原理。
*、springboot:实现定时任务。
*、项目中用到哪些表(班级表、学生表)。
*、Mysql单表数据量过大,如何处理? (水平或重载分表以后,如何查询呢?)
*、Mysql事务隔离级别:未提交读、提交读、不可重复读、串行化读。分别解决了什么问题。
*、Mysql:可重复读与幻读的区别。
*、常见的设计模式:3种工厂模式、
*、==与equals的区别。
*、object和String中的equals的区别。
========================
***
*、个人介绍
*、项目介绍:业务介绍,个人负责的模块(秒杀)。
密码:加密;token,redis;商品秒杀,防止超卖;秒杀(保证一个用户只秒杀一次)。
*、如何防止一个用户重复下单: (redis缓存)
*、幂等性(接口):。
*、项目:调用第3方接口(微信:支付)。
*、微服务常见容错处理:超时、限流、降级。
*、秒杀时,多出来的请求,办?(通过消息队列)
*、请求量最大是多少?(最高TPS设置为9000,但突然来了2万)。
*、场景:购物车,同步redis,异步mysql时,mysql无法写入时,办?
*、redis和mysql,如何双写时,数据一致性?
*、缓冲雪崩:原因和解决方法。用着用着,突然某部分redis雪崩了,办?(配置哨兵)
*、Spring的作用域,aop,ioc。
*、谈谈对java的理解。(封装、继承、多态、重写、重载);回调、框架。
*、订单如何下单以后,用户不支付,系统是如何处理的?
*、如何保证 redis中都是热点数据?(淘汰策略)。
*、Spring应用上下文。
*、Spring ioc的初始化过程。
*、SpringCloud:五大组件。
*、接口和抽象类区别
*、ArrayList和Linked的区别
*、常见Llinux命令。
本文来自博客园,作者:xiaoyongdata(微信号:xiaoyongdata),转载请注明原文链接:https://www.cnblogs.com/xiaoyongdata/p/16738688.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」