二、参考
1、框架
1、XML配置和注解配置各自优缺点
2、MVC了解吗?(*2)
3、Spring是什么,主要IOC等等
- 追问1:Spring 核心是 IoC 容器,你能说说IoC(控制反转)吗?
- 追问2:Spring AOP(Aspect-oriented programming)是什么?
- 追问3:Spring中的动态代理模式?
……
- 追问4:注册Bean有几种?分别什么特点?
- 追问5:Spring中涉及的一些设计模式?
……
- 追问6:项目中怎么用Spring的?
……
4、Spring Boot的缺陷是什么?
- 追问1:Spring、Spring Boot和Spring Cloud区别?
5、手撕反射私有变量,反射泛型方法
……
2、个人
1、决策树是什么?
一、内容
1、XML配置和注解配置各自优缺点
属性 | 优点 | 缺点 |
---|---|---|
XML | 松耦合,分离代码和配置 | 增加xml文件,修改麻烦,条件不确定(ifelse判断),容易出错,特殊转义字符比如大于小于 |
注解 | 紧解偶,灵活 | 复杂sql不好用,搜集sql不方便,管理不方便,修改需重新编译 |
2、MVC了解吗?(*2)
开发模式 | 内容 | 优点 | 缺点 |
---|---|---|---|
Model1 | JSP+Servlet | 逻辑和显示功能分离 | 视图层和控制层没分离,均由JSP页面实现 |
MVC | Model+View+Controller | 简单项目迭代上线快 | JSP效率低、分工不明、不利于项目演进 |
前后端分离 | 前端:View+前端Controller;后端:Controller+Service+DAO | 前后端解耦,性能提升,业务扩展性好、开发部署压力小 | 前端要求高、沟通成本大 |
补充:
1、JSP & Servlet容器
JSP(Java Server Pages):一种动态网页开发技术。使用JSP标签在网页中插入Java代码来获取用户输入数据、访问数据库和动态创建网页。
Servlet容器/JavaWeb应用容器/JSP容器:为JavaWeb应用提供运行时环境,主要负责管理Servlet、JSP的生命周期以及它们的共享数据。
2、MVC介绍
Model层:使用JavaBean编写,接受视图层请求并返回处理结果,最核心。JavaBean实现代码重用和扩展维护。
View层: 代表和用户交互界面,负责数据采集和展示,通常由JSP实现。
Controller层:从用户端接收请求,然后传递给模型层,协调View和Model层工作,一般交由Servlet实现。
常规组合:Spring + Structs/Spring MVC + Hibernate/Mybatis
3、前后端分离(RESTful API通信)
前端:前端控制层、视图层
后端:控制层、服务层、数据访问层。
3、Spring是什么,主要IOC等等
Spring 是开源的轻量级 Java SE/EE 开发应用框架,能帮助管理对象依赖与数据库事务,提供像通用日志记录、安全控制、异常处理等面向切面能力,还能与MyBatis、Spring MVC等第三方框架集成。
追问1:Spring 核心是 IoC 容器,你能说说IoC(控制反转)吗?
Ioc,Inversion of Control,即“控制反转”。它不是什么技术,而是一种设计思想。
-
1)控制什么,反转什么:正转 — 传统是程序主动去创建与控制依赖对象;反转 — 由容器帮忙创建及注入依赖对象,进行外部资源(对象 & 文件等)获取。
-
2)对比:传统类内部创建依赖对象会导致类与类间高耦合,难测试;而现在让容器创建和控制(查找、注入、控制)依赖对象,所以对象间是松耦合,方便测试,利于功能复用,程序体系结构灵活。
追问2:Spring AOP(Aspect-oriented programming)是什么?
面向切面编程是面向对象编程的一种补充,简单地说就是一个拦截器(interceptor)拦截一些处理过程。
例如Spring AOP 能劫持正运行 method,在执行前或后加入一些额外的功能。有4种类型通知:
1)Before advice - method 执行前通知。
2)After returning advice - method 返回一个结果后通知。
3)After throwing advice - method 抛出异常后通知。
4)Around advice - 环绕通知,结合了以上三种
追问3:Spring中的动态代理模式?
Spring AOP的实现基础是JDK动态代理和CGLIB动态代理。
具体含义、源码细节略……
1、代理(Proxy)是一种设计模式,访问方式是通过代理对象访问目标对象。
好处:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能;
用到的编程思想:不要随意去修改别人已经写好的代码或者方法,如果需修改,可以通过代理的方式来扩展该方法
举例:想邀请一位明星,那并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.
明星就是一个目标对象,他只要负责活动中的节目,
而其他琐碎的事情交给代理人(经纪人)来解决。
2、Java有三种代理模式,静态代理、JDK动态代理和CGLIB动态代理。
追问4:注册Bean有几种?分别什么特点?
1)包扫描+组件标注注解
2)@Bean注解
3)@Import注解
4)使用BeanfactoryFactoryBean(工厂Bean)
……
追问5:Spring中涉及的一些设计模式?
工程模式。
追问5:项目中怎么用Spring的?
……
4、Spring Boot的缺陷是什么?
属性 | 优点 | 缺点 |
---|---|---|
内容 | 注解简化配置,[嵌入式容器,如servlet、tomcat]容器简化部署,[xxx-actuator]设置运行监控 ,更加轻量级 | 自己不配置,报错难定位;集成度高,不易了解底层 |
小结 | 基于Spring,简化配置、监控、部署、编码 | 封装集成,不易理解底层 |
追问1:Spring、Spring Boot和Spring Cloud区别?
Spring是一个生态,能集成诸多框架,如数据库、Web管理;
Spring Boot注解、嵌入式容器等能够简化配置、部署、监控和开发,方便以最小代价开始项目;
Spring Cloud是一整套基于Spring Boot的微服务解决方案,提供了很多工具,如配置管理、注册中心、服务发现、限流网关、链路追踪等。
5、手撕反射私有变量,反射泛型方法
……
二、个人
1、决策树是什么?
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。
决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。
本质是采用一系列规则对数据进行分类的过程。
三、参考
1、mybatis 注解和xml 优缺点
2、注解 和 xml 配置的优缺点【转】
3、Spring IoC 容器
4、面试中关于Spring AOP和代理模式的那些事
5、通过Spring注解注册Bean的四种方式
6、快速认识 Spring Boot 技术栈
7、面试官问我:spring、springboot、springcloud的区别,我笑了
8、项目实践之前后端分离详解