*** 外卖系统:(业务讲解)。 前端:用户下单; 后端:管理员; 拦截器。 提示:业务介绍;涉及哪些模块;业务流程(哪些角色做什么事)。 *、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命令。
标签:java,String,Mysql,redis,面试,mysql,补录,注解 From: https://www.cnblogs.com/xiaoyongdata/p/16738688.html