发表时间:2022-03-24来源:网络
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 函数--->模块化--->封装--->代码复用
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描述对象 - 关系表的映射关系
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14