前言
这是塔塔集团那边的电话面试,因为人不在广州,跟面试官协调的,而且算是一个外包项目,估计是个老项目。
正文
1、JSP 两种跳转方式?
使用href超链接标记 客户端跳转
使用javascript 客户端跳转
提交表单 客户端跳转
使用response对象 客户端跳转
使用forward总做标记 服务器跳转
使用requestDispatcher类 服务器跳转
2、SQL 注入与预防
sql注入的原理是将sql代码伪装到输入参数中,传递到服务器解析并执行的一种攻击手法。
- sql预编译
- 严格的参数校验
- 使用参数化语句,不要拼接sql
- 特殊字符过滤
3、Spring 的两个核心注解
4、AOP
5、 Spring 的 @RequestMaping 相关属性
value:
指定请求的实际地址
method:
指定请求的method类型, GET、POST、PUT、DELETE等;
consumes:
指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces:
指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
params:
指定request中必须包含某些参数值是,才让该方法处理。
headers:
指定request中必须包含某些指定的header值,才能让该方法处理请求。
6、ORM 框架
是什么?
对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。
7、Redis 以及选举方式
哨兵模式。
8、JVM 内存模型以及堆内存的结构
9、指令重排序
内存屏障(Memory Barrier,或有时叫做内存栅栏,Memory Fence)是一种CPU指令,用于控制特定条件下的重排序和内存可见性问题。
10、类加载过程和反射机制
类加载
类加载的过程主要分为三个部分:
- 加载
- 链接
- 初始化
而链接又可以细分为三个小部分:
- 验证
- 准备
- 解析
反射机制
11、抽象与接口的区别
抽象 | 接口 | |
---|---|---|
默认实现方法 | 它可以有默认的方法实现 | 接口完全是抽象的。它根本不存在方法的实现 |
关键字 | extends | implements |
构造器 | 抽象类可以有构造器 | 接口不能有构造器 |
访问修饰符 | 抽象方法可以有public、protected和default这些修饰符 | 接口方法默认修饰符是public |
多继承 | 抽象类只可以继承一个类和实现多个接口 | 接口和接口之间是可以多继承或者单继承多实现的 |
11、MySQL 事务隔离级别
https://developer.ibm.com/zh/technologies/databases/articles/os-mysql-transaction-isolation-levels-and-locks/
12、MySQL 处理高并发?
13、final 、finally 、finalize 分别是什么?
1、java中final也用来修饰3类东西:变量,方法和类。
final 修饰变量表示该变量是不可变的。
final 修饰方法时表示该方法是不能被子类重写的。
final 修饰类时表示该类是不能被继承的,由于java的单继承关系,所以该类是继承关系链中的终端。
2、finally 是在异常处理时提供finally块来执行任何清除操作。
不管有没有异常被抛出、捕获,finally块都会被执行。try块中的内容是在无异常时执行到结束。
3、finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
14、设计一个千万级别的网站访问架构
参考文献
JSP页面跳转的几种实现方法