JAVA基础
1、JDK和JRE有什么区别?
JRE:java运行时环境,包含java虚拟机、java基础类库
JDK:java开发工具包,它包含了JRE,编译器和其他工具
如果需要运行java程序,只需要安装JRE就可以了。
如果需要编写java程序,需要安装JDK。
JAVA_HOME------>JDK安装目录。
2、==和equals的区别是什么?
==比较的是地址
equals比较的是两个对象的内容
3、两个对象的hashCode()相同,则equals()也一定为true对吗?
是相同,因为equals()比较的是两个对象的内容,hashCode相同说明值相同。
4、final在java中有什么作用?
final可以修饰类,这样的类不能被继承,比如String类
final可以修饰方法,这样的方法不能被重写
final可以修饰变量,这样的变量的值不能被修改
5、java中的Math.round(-1.5)等于多少?
-1
Math.round()的返回值类型是long
Math.round(11.5f),那么它的返回值类型是int,取值向正无穷方向取舍
Math.round(11.5) --> 12
Math.round(-11.5) --> -11
Math.round(0.5) --> 1
Math.round(-0.5) --> 0
6、String属于基础的数据类型吗?
String是引用类型
8个基础的数据类型有:byte、shrot、int、long、Boolean、double、float、char
7、基本类型与引用类型的区别:
基本类型只表示简单的字符或数字
引用类型可以是复杂的数据结构
8、java中操作字符串有哪些类?它们有什么区别?
String:
一旦被创建,就不能修改它的值
适用于少量的字符串操作的情况
StringBuffer:
StringBuffer是线程安全
StringBuilder:
StringBuilder是线程不安全的
运行速度比StringBuffer快
9、String str = "i" 与 String str = new String(i)一样吗?
不一样
String str ="i"先去内存中找是否存在“i”这个字符串,若存在,则将地址引用,不存在则创建。
String str = new String(i),不管事先是否存在“i”每次都会创建其新的对象
10、如何将字符串反转?
调用StringBuffer类中的reverse方法
String str =“abc”;
StringBuffer sb = new StringBuffer(str)
System.out.printIn(sb.reverse());
通过charAt(int index) 返回char值进行字符串拼接
String str = "abc";
String reverse = "" ;
for(int i = 0; i <str.length() ; i++){
reverse =+ str.charAt(i) + reverse;
}
11、String类的常用方法有哪些?
length():返回字符串长度
charAt():返回指定索引处的字符
substring():截取字符串
concat():拼接字符串
indexOf():返回指定字符的索引
toLowerCase():将字符转成小写字母
toUpperCase():将字符串转成大写字母
replace():字符串替换
trim():去除字符串两端空白
split():分割字符串,返回一个分割后字符串数组
format():格式化字符串
equals():字符串比较
12、抽象类必须要有抽象方法吗?
抽象类可以没有抽象方法
抽象方法不能声明为静态
如果一个类中有一个抽象方法,那么这个类必须声明是抽象类,否则编译不通过
13、普通类和抽象类有哪些区别?
抽象类不能被实例化
抽象方法不能被声明为静态
14、抽象类能使用final修饰吗?
不能
抽象类所抽取的我们关注的共同特征所形成的基类,如果不能继承这个抽象类将是无意义的
15、接口和抽象类有什么区别?
抽象类使用abstract关键字 继承
接口使用implements关键字 实现
接口不能有方法体
抽象可以有方法体
抽象类可以继承一个类实现多个接口
接口只可以继承一个或者多个其他接口
抽象类中添加新方法,只需提供默认的实现,不需要改变原有的代码
接口中添加新方法,那你必须改变实现该接口的类
抽象类除了不能被实例化,和普通Java类没有区别
接口是完全不同的类型
16、java汇总IO流分为几种?
按流向分:
输出流、输入流
按类型分:
字节流、字符流
17、BIO 、NIO、 AIO有什么区别?
BIO:
同步阻塞
第一次请求还没有结束的话,后面的请求就一直等待
NIO:
同步非阻塞
将每一个请求分配给一个线程来单独处理
AIO:
异步非阻塞
18、File的常用方法都有哪些?
createNewFile:指定创建一个空文件,成功就返回true,如果存在就不创建,然后返回false。
mkdir:指定位置创建一个单级文件夹。
mkdir:指定位置创建一个多级文件夹。
delete:删除文件或者一个空文件夹,不能删除非空文件夹,马上删除文件,返回一个布尔值。
exists:文件或文件夹是否存在。
isFile:是否是一个文件,如果不存在,则始终为false。
getName:获取文件或文件夹的名称,不包含上级路径。
getAbsolutePath:获取文件的绝对路径,与文件是否存在没有关系。
getParent:返回此抽象路径名父目录的路径字符串;如果此路径名没有指定父目录,则返回null。
19、java有多少个访问修饰符?各有什么含义?
public:公开的,任何一个类都可以访问。
private:私有的,只能在本类访问。
default:默认的,只能被同一个包中类访问。
protected:受保护的,同包和继承的类可以访问。
20、什么是继承?
继承是面向对象实现软件复用的手段,当子类继承父类,可直接或者间接获取父类的成员
21、什么封装?
将对象的实现细节隐藏起来,通过公共方法暴露出该对象的功能
22、什么是多态?
指的是同一行为具有多个不同表现和状态能力
23、方法重载与方法重写有什么区别?
重写(override)发生在继承中
方法名称、参数类型、返回值类型全部相同
重载(overload)发生在一类中
方法名相同、参数的类型或者个数不同
24、抽象类与接口相同与不相同之处?他们呢分别什么时候使用?
相同处:
不能直接实例化
抽象类里的抽象方法必须全部被子类实现,子类不能全部实现抽象方法,那么该子类还只能是抽象类。
一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
不同处:
子类需要使用extends关键字继承抽象类
接口子类使用implements来实现接口
抽象类可以有构造器,接口不能有构造器
抽象类除了不能实例化之外和普通的java类没有区别
接口是完全不同的类型
如果想实现多重继承,则使用接口,如果基本功能不断改变,则使用抽象类
25、什么是对象?
对象是类的一个实例,有状态、行为,客观存在的事物都可以成为对象(万物皆对象)
26、什么是类?
类是一个模板,它描述着一类对象的行为和状态、
27、构造函数的作用是什么?
对类进行初始化
28、局部变量、实例变量、类变量、全局变量
局部变量:在方法或者代码中,或者方法的声明(即在参数列表中)
实例变量:在类的声明中,属性是使用变量表示的,称为实例变量。
类变量(静态变量): 独立于方法之外的变量
全局变量:在函数外部定义的变量 称为全局变量
29、java是什么?
java是一门面向对象编程语言
优点:简单、安全、平稳、跨平台
缺点:需要运行环境、不合适开发桌面应用程序
30、java的特性是?
封装:将对象的实现细节隐藏起来,通过公共方法暴露出该对象的功能。
继承:继承时面向对象实现软件复用的重要手段,当子类继承父类后,可直接或间接获取父类里的成员
多态:同一个行为具体有多个表现形式和状态的能力
抽象:是指定从特定的角度出发,从已存在的一些事物中抽取我们所关注的特性、行为从而成为一个新事物的思想过程
31、SE、EE、ME
SE:用于桌面或简单的服务器应用的java平台
EE:用于复杂的服务器应用java平台
ME:用于手机和其他小型设备的java平台
32、面向对象和面向过程的区别?
面向过程:
是一种站在过程的角度思考问题的思想,强调的是功能行为,功能的执行过程
面向对象:
是一种基于面向过程的新编程思想,是一种站在对象思考问题,我们把多个功能合理的放到不同对象,强调的是具备某些功能的对象
33、基本数据类型
byte、short、int、float、double、long、char、boolean
对于byte、short、int、double、float、long等基本数据类型的变量来说会默认初始化为0(boolean变量默认初始化为false)
对于引用的变量,会默认初始化为null。
34、什么是java ide?
IDE是集成开发环境,简单来说就是java开发工具,比如IDEA\Eclipse
35、什么是B/S架构?
浏览器/服务端架构模式
36、什么是C/S架构
客户端/服务端架构模式
37、什么是JVM?
java虚拟机,运用硬件或者软件手段实现的虚拟的计算机
38、java虚拟机包括什么?
寄存器、堆栈、处理器
39、java是否需要开发人员回收内存垃圾?
大多情况下是不需要,java提供了一个系统级的线程来跟踪内存分配,不再使用的内存区将会自动回收
40、java的数据结构有哪些?
线性表(ArrayList)
链表(LinkedList)
栈(Stack)
队列(Queue)
图(Map)
树(Tree)
41、类与对象的关系
类是对象的抽象,对象是类的具体,类是对象的模板,对象是类的实例
42、什么是隐式转换?
大范围的变量能够接受小范围的数据
43、什么是显示转换?
把一个大类型的数据强制赋值给小类型的数据
44、什么是拆箱装箱?
拆箱:把包装类型转换成基本数据类型
装箱:把基本的数据类型转成包装类型
45、一个java类中包含哪些内容?
属性、方法、内部类、构造方法、代码块
46、if(a+1.0 == 4.0),这样做好吗?
不好,因为计算机在浮点型数据运算时,会有误差,尽量在布尔表达式中不使用浮点型数据类型
47、针对浮点型数据类型运算出现的误差的问题,该怎么解决?
使用Bigdecimal类进行浮点型数据的运算
48、++i 与i++的区别?
i++,先运算,后赋值
++i,先赋值,后运算
49、程序的机构有哪些?
顺序结构
选择结构
循环结构
50、数组实例化有几种?
静态实例化:创建数组的时候已经指定数组中的元素
int[] a = new int[]{1,2,3,4};
动态实例化:实例化数组的时候,指定了数组的长度
51、java常用包邮哪些?
java.lang
java.IO
java.sql
java.util
java.awt
java.math
52、java最顶级的父类是哪个?
Object
53、Object类常用方法有哪些?
equals
hashcode
toString
wait
notify
clone
getClass
54、java中有没有指针?
有指针,但是隐藏了,开发人员无法直接操作指针,由JVM来操作指针
55、java中是值传递?还是引用传递?
理论上说,java都是引用传递的,对于基本数据类型,传递的值的副本,而不是值得本身,对于对象类型,传递是对象的引用
56、假设数组内有5个元素,如果对数组进行反序,该如何做?
创建一个新数组,从后到前循环遍历每个元素,将取出来的元素依次放入新数组中
57、形参和实参
形参:是定义方法名和方法体的时候使用的参数,用于接收调用该方法时传入的实际值
比如:public void method(int a ,int b);a,b就是形参。
实参:是在调用方法时传递给该方法的实际值
比如:public void method(1,2);1,2就是实参
58、构造方法能不能显示调用?
不能将构造方法当成普通调用,只有在创建对象的时候它才会被系统调用
59、内部类与静态类的区别?
静态内部类相当对于外部类是独立存在的,在静态类内部中无法直接访问外部类中的变量、方法, 如果要
访问他们的话,必须要new一个外部的对象,使用new出来的对象访问,但是可以直接访问静态的变量、调用静态的方法。
如果外部类要访问内部类的属性或者调用内部类的方法,必须要创建一个内部类的对象,使用该对象访问属性或者调用方法。
60、static关键字有什么作用?
static可以修饰内部类、方法、变量、代码块
static修饰的类是静态内部类
static修饰方法时,表示该方法属于当前类的,而不是属于某个对象,静态方法也不能被重写,可以直接使用类名调用,
在static方法中不能使用this或者supper关键字。
static修饰变量是静态变量或者叫类变量,静态变量被所有实例共享,不会依赖对象,静态变量在内存中只有一份拷贝,在JVM
加载时,只为静态分配一次内存。
static修饰的代码块叫静态代码块,通常用来做程序优化,静态代码块中的代码在整个类加载的时候,只会执行一次,
静态代码块可以有多个,如果有多个,按照先后顺序依次执行!
61、final在java中的作用?
final可以修饰类,修饰方法,修饰变量
修饰类的叫最终类,该类不能被继承
修饰的方法不能被重写
修饰的变量叫常量,常量必须初始化,一旦初始化后,常量的值不能发生改变
62、String str =“aa”,String str =new String(“aa”)一样吗?
不一样,因为内存分配的方式不一样
第一种,创建的“aa”是常量,jvm都将其分配在常量池中
第二种,创建的是一个对象,jvm将其值分配在堆内存中
63、String str =“aa”,String s =“bb”,String aa = aa+s;一共创建了几个对象?
一共有两个引用,三个对象。
64、java中的math类有哪些常用的方法?
pow():幂运算
sqrt():平方根
round():四舍五入
Abs():求绝对值
Random():生成一个 0-1 的随机数,包括0不包括1
65、判断两个对象是否相同,能用equals比较吗?
不能,equals大多用来做字符串的比较,要判断基本数据类型或者对象类型,需要使用==
66、如何将字符串反转?
StringBuilder和StringBuffer的revers方法
67、==与equals有什么区别?
==可以判断基本数据类型值是否相同,也可以判断两个对象指向的内存地址是否相同,也就是说判断两个对是否相同一个对象。
equals通常用来做字符串比较。
68、java中继承是单继承还是多继承?
java中既有单继承,又有多继承,对于java类来说只有一个父类,对于接口来说可以同时继承多个接口
69、创建一个子类对象的时候,父类的构造方法会执行吗?
会执行,当创建一个子类对象,调用子类构造方法的时候,子类构造方法会默认调用父类的构造方法
70、什么是父类引用指向子类对象?
是java多态一种特殊的表现形式,创建父类引用,让该引用指向一个子类的对象
比如类 A ,B类继承了类A。
A a =new B();这就称父类的引用a指向了子类的对象 new B()
71、父类引用指向子类对象的时候,子类重写了父类方法和属性,那么当访问属性的时候,访问是谁的属性?
调用方法时,调用的是谁的方法?
子类重写父类方法和属性,访问的是父类的属性,调用的是子类的方法
72、Supper与this表示什么?
supper表示当前类的父类对象
this表示当前类的对象
73、接口有什么特点?
接口中声明全是public static final 修饰的常量
接口中没有构造方法
接口也不能直接实例化
接口可以多继承
74、除了使用new创建对象外,还可以用什么方法创建对象?
java反射
75、java反射创建对象效率高还是通过new创建的效率高?
通过new创建对象效率比较高
通过反射时,先找类资源,使用类加载器创建,过程还比较繁琐,所以效率低
76、java中集合框架的有几个?
Collection、Map
77:、Collection接口下有哪些集合框架?
List:线性表
Set:无序集合
78:List接口有什么特点?
顺序存储、可以有重复值
79:ArrayList和LinkedList有什么区别?
ArrayList与LinkedList都实现了List接口
ArrayList是线性表,底层是使用数组实现的,它在尾端插入和访问数据时效率较高
LinkedList是双向链表,它在中间插入效率较高,早访问数据时效率低
80、Set接口有什么特点?
无序存储、不能有重复值
81、Array与ArraList有什么区别?
Array与ArraList都是用来存储数据的集合。ArrayList底层是使用数组实现的,但是ArrayList对数组进行了封装和功能扩展
82、Map有什么特点?
以键值对存储数据
元素存储顺序是无序的
不允许出现重复键
83、JDBC操作的步骤
加载数据库驱动
打开数据库连接
执行sql语句
处理返回结果
关闭资源
84、在使用jdbc的时候,如何防止出现sql注入问题
使用PreparedStatement类
85、怎么在JDBC调用存储过程?
使用CallableStatement
86、&和&&的区别?
&是位算符
条件全部要执行 比如:if(a==b & a==c)这里面两个条件都要执行
&&是布尔逻辑运算符
第一条件通过,后面的条件就不用管了
比如if(a==b && a==c)当a==b 结果为false是,a==c条件就不执行了
容器
1、什么是反射?
指程序可以访问、检测和修改它本身状态或者行为的一种能力
2、什么是java序列化?
把java对象转换为字节序列的方法
3、什么情况下需要系列化?
把对象的字节序列化到永久的保存到硬盘中
在网络上传递对象的字节序列
4、动态代理是什么?有哪些应用?
动态代理:可以任意控制任意对象的执行过程
本来应该自己做的事情,因为某种原因不能直接做,只能请别人代理做,被请的人就是代理
比如春节买票回家,由于没有时间,只能找票务中介类买,这就是代理模式
5、怎么实现动态代理
jdk动态代理
cglib动态代理
MySQL
1、自定义函数
---> 函数--->模块化--->封装--->代码复用
create function 函数名([参数列表]) returns 数据类型
begin
SQL语句;
return 值;
end;
示例:
最简单的仅有一条sql函数
create function myfunction() returns 999;
调用
select myfunction();
带传参的函数
create function myfunction(name vrchar(15)) returns int
begin
return (select id from table_name where colume_name = name);
end;
调用
sleect myfunction(“admin”);
2、存储过程
存储过程-------> 一组为了完成特定功能的sql语句集
IN传入参数
delimiter //
create procedure mysql(
IN id int
)
begin
select * from table_name where di = id;
end;
//
delimiter;
其中in是传进去的变量;
drop procedure mysql;//销毁这个存储过程
调用存储过程
call mysql(5);
out 输出参数
delimiter //
create procedure demo
(in id1 int, OUT ids int )
begin
select id into ids ffrom users where id = id1;
end
//
delimiter;
调用
set @result;
call demo(1,@result);
INOUT输入输出
delmiter//
create procedure demo (inout ids int)
begin
select id into ids from users where id =dis;
select ids ;
end
//
delimiter;
调用
set @result1 =2;
call demo(@result1);
3、视图
--视图就是一条select 语句 执行后返回结果集,是一种虚拟表,是一个逻辑包
--方便操作,减少复杂的sql语句,增加可读性,更加安全一些
create view demo_view
as
select u.id ,u.name from users u inner join number n on u.stuId = n,id;
--调用
select * from demo_view;
--删除
drop view demo_view;
4、索引分类
1、普通索引 2、唯一索引 3、全文索引 4、组合索引
普通索引:仅加速查询,最基本的索引,没有任何限制
唯一索引:加速查询+列值唯一(可以有null)
全文索引:仅是哟红MyISAM引擎数据表,作用于char、varchar、text数据类型的列
数组索引:将几个列作为一条索引进行检索,使用最左匹配原则
--索引用于快速找出某个列中有特定值得行,不使用,Mysql必须从第一条记录开始读完整个表
--优点
1、所有的Mysql列类型(字段类型)都可以被索引
2、大大加速数据的查询速度
--缺点
1、创建索引和维护要消耗时间
2、对表的数据进行增加、删除、修改时、索引也需要动态维护,降低了数据的维护速度
create table healerjean (
id int AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
name VARCHAR(32) NOT NULL COMMENT '姓名',
email VARCHAR(64) NOT NULL COMMENT '邮箱',
message text DEFAULT NULL COMMENT '个人信息'
#INDEX index_name (name) COMMENT '索引name'
) COMMENT = '索引测试表';
--给已创建的表 添加索引
create index index_name on healerjean(name);
--删除索引
drop index index_name on healerjean;
5、触发器
--监视某种情况,并触发某种操作
--触发器创建语法四要素
1、监视地点
2、监视事件
3、触发时间
4、触发事件
--触发器只能创建在永久表上,不能对临时表创建触发器
create trigger trigger_name
after before insert update delete on 表名
for each row --这句话砸imysql是固定的
begin
sql语句;
end;
示例:
delimiter//
create triggeer triggeer _demo before insert on demo1
for each row
begin
insert into demo1(name) values("触发器修改了....");
end
//
delimiter;
--删除触发器
drop trigger trigger_demo;
SQL Server 中 Order By 排序
select * from tableName order by 字段名(升序)
select * from tableName order by 字段名(降序)
SQL Server 与 MySQL简单分页查询
sql server : select top 10 * from tablename ;
sql server : select * from 表名 order by 字段名 offset 10 rows Fetch next 10 rows only;
mysql: select * from 表名 limit 页数 ,条数;
SQL查询语句
select * from a inner join b on a.id=b.id;(内连接);
select * from a left join b on a.id =b.id;(左连接)
select * from a right join b on a.id = b.id ; (右连接)
(select * from a left join b on a.id = b.id ) union (select * from a right join b on a.id = b.id);(全连接)
行内转换
create table t_score
(
name varchar(20) ,
subject varchar(20),
score float
)default charset=utf8;
INSERT INTO `t_score` VALUES
('王海', '语文', '86'),
('王海', '数学', '83'),
('王海', '英语', '93'),
('陶俊', '语文', '88'),
('陶俊', '数学', '84'),
('陶俊', '英语', '94'),
('刘可', '语文', '80'),
('刘可', '数学', '86'),
('刘可', '英语', '88'),
('李春', '语文', '89'),
('李春', '数学', '80'),
('李春', '英语', '87');
select name ,
max(case subject wher '语文' then score end) as 语文,
max(case subject wher '数学 ' then score end ) as 数学,
max(case subject wher '英语' then score end ) as 英语,
sum(score)成绩
from t_score group by name
union all
select ‘TOTAL’,
sum(case subject when ‘语文’then score end),
sum(case subject when ‘语文’then score end),
sum(case subject when ‘语文’then score end),
sum(score) from t_score;
2、求出每科每门成绩大于等于80分的人名字
select * from t_score group by name having min(score) >=80;
多线程
1、什么是线程?
线程有时被称为轻量级进程,是程序执行流的最下单位
线程是CPU调度的一个基本单位
2、什么是进程?
进程是系统中正在运行的一个程序,程序一旦运行就是进程
3、什么是多线程?
多线程指从软件或者硬件上实现多个线程并发执行的技术
4、并行和并发的区别?
并行:是两个任务同时运行(需要多核CPU)
比如我跟两个网友聊天,左手操作一个电脑跟A聊,同时右手用另一台电脑跟B聊天
并发:值两个任务都请求运行,而处理器只能接受一个任务,就把这两个任务安排轮流进行
如果用一台电脑我先发给A消息,然后立刻再给B发消息,然后在跟A聊,在跟B聊。
5、进程和线程的区别?
地址空间:同一进程的线程共享进程的地址空间,进程之间则是独立的地址空间
资源拥有:同一进程内的线程共享本进程的资源,进程之间的资源是独立的
一个进程奔溃后,在保护模式下不会对其他进程产生影响,但是一个线程奔溃整个进程都会死掉,多进程要比多线程健壮。
线程是处理器调度的基本单位,进程不是
6、创建线程几种方式?
继承Thread类
实现Runnable接口
实现Callable接口
7、什么是守护线程?
守护线程是个服务线程,服务于其他线程
典型案例:垃圾回收线程
8、什么是用户线程?
用户线程就是应用程序里的自定义线程
9、线程有哪些状态?
新建状态
就绪状态
运行状态
阻塞状态
死亡状态
10、sleep()方法和wait()有什么区别?
sleep()可以在任何地方使用
wait()只能在同步方法或者同步块中使用
11、notify()和 ontifyAll()有什么区别?
notify是唤醒某个线程
notifyAll 是唤醒所有的暂停线程
12、线程的run()和start()有什么区别?
run()相当于线程的任务处理逻辑的入口方法
start()的作用是启动相应的线程
13、ThreadLocal是什么?有哪些使用场景?
ThreadLocal用于保存某个线程共享变量
使用场景:解决数据库连接,Session管理
JAVA Web
1、jsp和servlet有什么区别?
jsp经编译后就成了Servlet(jsp的本质就是servlet,jvm只能识别java类,不能识别jsp代码,
web容器将jsp的代码编译成jvm能够识别的java类)
jsp更擅长表现于页面显示,servlet更擅长于逻辑控制
servlet中没有内置对象,jsp的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到。
2、session和cookie有什么区别?
cookie与文本格式存储在浏览器上,存储量有限
session存储在服务端,可以无限量存储多个变量并且比cookie更安全
异常
1、throw 和 throws的区别?
throw则是指抛出一个具体异常类型
throws是用来声明一个方法有可能抛出的多有异常信息
2、异常什么?
异常是一个在程序执行期间发生的事件,她在中断正在执行的程序的正常指令流
3、异常处理有几个关键字有哪些?
try、catch、finally、throw、throws
4、运行时异常都是什么异常类型的子类?
Exception异常类
5、检查异常是什么?
简单来说,你的代码还没有运行,编译器就回去检查你的代码,对可能出现的异常必须做出相对应的处理
6、有哪些常见的检查异常?
除了RuntimeException与其子类,以及错误(Error),其他的差不多都是检查异常
7、异常传播
这个从异常抛出到控制转移给合适的异常处理语句的过程就叫做异常传播
8、final、finally、jinalize有什么区别?
final用来修饰类、方法、变量
finally 只能用在try catch语句中,表示这段语句最终一定会被执行
9、try-cathy-finally中那个部分可以省略?
catch和finally语句不能同时省略
网络
1、http响应码301和302代表的是什么?有什么区别?
301表示页面永久性转移到另外一个地址
302表示临时性转移
区别:
301是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址
302重定向是临时的重定向,搜索引擎抓取新的内容而保留旧的地址。
2、forward 和redirect的区别?
forward是服务器内部重定向
redirect服务器收到请求后发送一个状态给客户,客户将再请求一次
3、get和post请求有哪些区别?
get请求的参数包在url中
post请求参数是放在请求body中
get请求参数有长度限制,post请求没有长度限制
get请求的参数只能是ASCII码,post请求传参没有这个限制
4、如何实现跨域?
使用CORS技术
使用JSONP
5、什么是json?
json是一种轻量级的数据交换格式
概念
1、AOP:面向切面编程
通过预编译方法 和 运行期动态代理 实现程序功能的同一维护的一种技术
利用AOP
将业务逻辑的各部分之间的耦合度降低
提高程序的可重用性
不干扰源码
2、IoC:控制反转
是面向对象编程的一种设计原理
可以减低代码之间的耦合度
IoC是一种描述通过第三方去产生获取特定对象方式
将类的创建 和 依赖关系 卸载配置文件里,又配置文件注入,实现了松耦合
3、MVC :模型-视图-控制器
是一种软件规范
用一种 业务逻辑、数据、界面显示分离的方法组织代码
4、MVVM:模型-视图-视图模型
视图通过视图模型的dom监听将时间绑定到模型上,而模型则通过数据绑定来管理视图中的数据,
视图模型从中起到了一个连接桥的作用
5、RESTful
一种软件架构风格、设计风格、不是标准,只是提供了一组设计原则和约束条件
主要用于客户端和服务端的软件
基于这个风格设计的软件可以更简洁、更有层次、更易于实现缓存等机制
6、Vue生命周期
beforeCreate、create、beforeMount、mounted、beforUpdate、update、beforDestroy、destroyed
7、MyBatis
MyBatis是一个支持制定化SQL、存储过程以及高级映射的持久层架构
8、Hibernate
Hibernate是一个开放源码的对象关系映射框架,它对JDBC进行了简单封装,它将POJO与数据库表建立映射关系,是一个全自动的ORM框架
9、ORM:对象关系映射
是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换
10、OOP:面向对象编程
它是一种计算机编程架构
11、JPA: java持久层API
是JDK注解或XML描述对象 - 关系表的映射关系
所有评论(0)