面试题总结(旧)
1、get与post的区别
GET提交的数据放在URL中,POST则不会。这是最显而易见的差别。这点意味着GET更不安全
(POST也不安全,因为HTTP是明文传输抓包就能获取数据内容,要想安全还得加密)
GET回退浏览器无害,POST会再次提交请求(
GET方法回退后浏览器再缓存中拿结果,POST每次都会创建新资源)
GET提交的数据大小有限制(是因为浏览器对URL的长度有限制,GET本身没有限制),POST没有
GET可以被保存为书签,POST不可以。这一点也能感受到。
GET能被缓存,POST不能
GET只允许ASCII字符,POST没有限制
GET会保存再浏览器历史记录中,POST不会。这点也能感受到。
2、JavaEE企业级三层架构
WEB层:负责与用户交互并对外提供服务接口
业务逻辑层:实现业务逻辑模块
数据持久层:将业务逻辑层处理的结果持久化,方便后续查询
对应框架:
WEB层:SpringMVC/Struts1/Struts2
业务逻辑层:Spring
数据持久层:Hibernate/MyBatis/SpringDataJPA/SpringJDBC
3、MVC设计模式
可以看做是对WEB层的细化
Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。
View(视图) - 视图代表模型包含的数据的可视化,比如HTML,JSP,Thymeleaf,FreeMarker等等
Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开,目前的技术代表是Servlet,Controller
我的理解:
View层一些jsp页面展现给用户看
Controller层接收用户的请求并决定调用哪个模型
model层即处理任务的一些业务规则(我觉得可以理解为一些函数方法?)
4、SSH(spring+struts2+hibernate)框架
struts2 负责MVC的分离,控制业务跳转,通过xml文件可以掌握系统各部分之间的联系
hibernate是负责数据持久层,实现与数据库之间的交互
spring相当于一个容器框架,可以对一些其他框架进行整合(控制反转(IoC)和面向切面(AOP)
由SSH构建系统的基本业务流程是:
1、在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。
2、在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。
3、在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果
5、struts1与strut2的区别:
和Struts1.x最大的革命性的不同是,Struts2处理Action过程中调用的方法(“execute”方法)是不带参数的。
6、面向对象思想
面向过程:以“执行者”的角度解决问题(设计算法)
面向对象:以“组织者”的角度解决问题(拿什么来用)
面向对象:封装、继承、多态(三大特性)
封装:一个类的属性 私有化 提供get set方法
继承:子类继承父类 有共性的东西可以互用
多态:接口多种不同的实现方式
7、JDK/JRE/JVM
JDK:java开发工具包
JRE:java运行环境
JVM:java虚拟机(是实现java跨平台的核心,但JVM本身并不是跨平台的) 不同的平台需要安装不同的JVM,一处编译 到处运行。
8、接口和抽象类的区别
接口:Java不允许多重继承,一个类通过继承接口的方式,从而来继承接口的抽象方法
JDK1.8之前:
抽象类:方法可以有抽象的,也可以有非抽象,有构造器
接口:方法都是抽象,属性都是常量,默认有public static final修饰
JDK1.8之后:
接口里面可以有实现的方法,注意要在放的声明上加上default或者static
9、ArrayList和LinkedList
ArratList:数组,连续一块内存空间(查找快,因为是连续的内存空间,方便寻址,但删除、插入慢,因为需要发生数据迁移)
LinkedList:双向链表,不是连续的内存空间(查找慢,因为需要通过指针一个个寻找,但删除、插入快,因为只要改变前后节点的指针指向即可)
10、AJAX
三要素(异步交互模式、XMLHttpRequest对象请求(现在以json为主)、回调函数)
AJAX引擎,通过回调函数进行局部刷新
11、JavaScript原型机制:
扩展原有类的特性
JavaScript:web编程语言
(基本: html:负责定义页面的内容 css:负责定义页面的样式 javascript:负责控制页面的行为)
jQuery是一个JavaScript函数库
jQuery 是目前最流行的 JS 框架
12、bootstrap:前端开发框架
13、消息中间件:异步、解耦、限流削峰
14、缓存
高频被访问、不是经常改变的数据 放入 缓存(不需要经常读数据库)