Java基础概念收集
Javaweb阶段
Jsp有哪些内置对象?作用分别是什么?
Page,pageContext,request,response,session,application,out,config,exception
Page指的是JSP被翻译成Servlet的对象的引用.
pageContext对象可以用来获得其他8个内置对象,还可以作为JSP的域范围对象使用.pageContext中存的值是当前的页面的作用范围》
request代表的是请求对象,可以用于获得客户机的信息,也可以作为域对象来使用,使用request保存的数据在一次请求范围内有效。
Session代表的是一次会话,可以用于保存用户的私有的信息,也可以作为域对象使用,使用session保存的数据在一次会话范围有效
Application:代表整个应用范围,使用这个对象保存的数据在整个web应用中都有效。
Response是响应对象,代表的是从服务器向浏览器响应数据.
Out:JSPWriter是用于向页面输出内容的对象
Config:指的是ServletConfig用于JSP翻译成Servlet后 获得Servlet的配置的对象.
Exception:在页面中设置isErrorPage=”true”,即可使用,是Throwable的引用.用来获得页面的错误信息。
什么是cookie?Session和cookie有什么区别?
Cookie是会话技术,将用户的信息保存到浏览器的对象.
Session也是会话技术,将Session的信息保存到服务器的对象.Session是基于Cookie的 利用Cookie向浏览器回写JSessionID.
JavaSe基础知识
(1)进制:
二进制: 以0b开头
八进制: 0-7组成,以0开头.
十进制: 默认.
十六进制:由0-9,A-F(不区分大小写)组成,以0x开头
(2)静态变量 成员变量 局部变量的区别
书写位置
静态 :类中方法外 加了一个关键字 static
成员: 类中方法外 没有static
局部: 方法内
内存:
静态:方法区里面的静态区
成员:堆
局部:栈
生命周期
静态:随着类的加载而加载 随着类的消失而消失(虚拟机停掉才会消失)
成员:随着对象的创建而存在 随着对象消失而消失(当一个对象没有任何指向的时候 过一段时间垃圾回收器就会来清理)
局部:随着方法的调用而存在 随着方法的执行完毕而消失
初始化:
静态:有默认初始化
成员:有默认初始化
局部:没有了默认初始化 所以在使用之前必须先赋值
(3)重载和重写的区别:
重写:发生在子父类中 子类出现和父类一模一样的方法 才是方法的重写
子类重写父类的方法
重载:发生在一个类中 只要满足 方法名相同 参数列表(顺序 个数 类型)不同 与返回值无关的方法
就叫做他们之间构成相互重载
(4)构造方法:
创建对象时一定会执行. 没有返回值 构造方法名必须和类名一致 可以写一个单独的return;
(5)有参构造和Set方法的区别
有参构造方法,是在创建对象的同时 顺便给成员变量进行赋值 ,强调的是创建对象
而set方法 就是为了给成员变量赋值的一个方法
(6)static静态
1:随着类的加载而加载 随着类的消失而消失(虚拟机停掉 才会消失)
2:优先于对象而存在
3:被 包含静态的这个类的所有对象 共享
4:不仅能用对象名调用 还能用类名直接调用(推荐类名调用)
(7)权限修饰符的访问权限:
private: 是为本类准备的
默认:是为同一个包下的类准备的
protected:是为子类准备的 无论子类在任何地方
public: 为所有类准备的
(8)final:关键字
final修饰的类:不能被继承
final修饰的方法:不能被重写
final修饰的变量是常量: 常量只能被赋值一次
(9)代码块:
局部代码块:
在方法内部{}
限定变量生命周期,及早释放,提高内存利用率
构造代码块:
在方法外面 类里面 {}
每创建一次对象 就执行一次 而且是在构造方法执行前执行的,所以说就可以把构造方法里面的共性内容写到构造代码块里面
静态代码块:
在方法外面 类里面 static{}
随着类的加载而执行 只执行一次
做一些全局初始化的内容
(10)this和super的区别:
this代表当前对象的引用 不仅可以调用本类的 也可以调用父类的(本类没有的前提下才能调用父类的)
super代表的是父类内存空间的标识
(11)Object
Object:是一切类的超类或父类
Object的hashCode():返回该对象的哈希值(根据地址值算出的一个int数字)
不同对象的hashCode()值一般不同, 相同对象的hashCode值相同
Object的getClass():返回该对象的字节码文件对象
Object的toString()
1):我们在打印一个对象的时候,默认调用的对象的toString方法,如果该对象没有重写toString()那么调用的
Object的toString()方法,因为继承了Object嘛
2):Object的toString方法 返回 类的全路径名称 + @ + 16进制哈希值, 这样返回一般没有意义
3):所以我们一般在编写类的时候 都重写Object的toString(),一般要求是把类里面的属性都显示出来
Object的equals()
1):Object中equals方法的源码
public boolean equals(Object obj){
return (this == obj);
}
比较的引用类型的地址值,开发中 我们调用equals方法是想比较对象里面的属性值
2):所以在编写类的时候一般重写Object中的equals方法,让其比较对象的属性值
== 和 equals 的区别?
(1)== 比较的是 内存中的地址值 equals重写之后比较的是属性值,否则等价于 == .
(12)抽象类abstract:
特点:
1)抽象类里面可以没有抽象方法,但是有抽象方法的类必须得是抽象类
2)抽象类不能被实例化
3)普通子类继承抽象类,必须全部重写抽象类里面的抽象方法,要不子类也是抽象类
(13)el表达式: 为了让jsp写起来更加简单。
${ }
***(14)poi 导出电子表格
(15)JDBC的优点:
直接底层操作,提供了很简单、便捷的访问数据库的方法,跨平台性比较强。灵活性比较强,可以写很复杂的SQL语句。
JDBC的缺点:
因为JAVA是面向对象的,JDBC没有做到使数据能够面向对象的编程,使程序员的思考仍停留在SQL语句上。
操作比较繁琐,很多代码需要重复写很多次。
如果遇到批量操作,频繁与数据库进行交互,容易造成效率的下降。
(16)shiro 权限管理:
怎么管理 .
(17)LINUX常用命令:
ls查看文件权限 / 目录信息
cd 切换目录
pwd 查看当前工作目录路径
mkdir创建文件夹
rm 删除一个目录中或多个文件和目录
rmdir 从一个目录中删除一个或多个子目录项
mv 移动文件或修改文件名
cp复制
find 基于查找功能
tar对文件进行打包
time 测算一个命令的执行时间
(18)线程创建的两种方式:
1. extends thread 类
2. implements runnable 接口(更好的解耦合)
(19)wait 和 sleep 的区别:
wait:属于object 类,释放同步锁 ,不需要捕获异常
无限期,除非调用notify
sleep:属于 thread类,不释放同步锁 ,需要捕获异常
有时间限制,调用interreput() 可以强行打断
(20)hibernate 缓存: (提高检索效率)
一级缓存: session(会话级)级别的缓存,随着session的关闭而销毁
二级缓存: 称为全局缓存 / 应用级缓存
可使用范围: 当前应用的所有会话
要创建一个ehcache.xml 配置文件
什么时候使用: 很少被修改的数据 ,允许少量并发.
(21)表单提交两种方式GET和POST的区别:
* GET的提交的参数会显示到地址栏上,而POST不显示.
* GET往往是有大小限制的,而POST没有大小的限制.
* GET没有请求体,而POST有请求体.form表单用post
(22)XML的解析方式有哪些:
* DOM和SAX:
* DOM一次性将文档加载到内存,形成树形结构.如果文档过大容易导致内存溢出.方便增删改的操作.
* SAX边读边解析的方式,如果文档大,不会导致内存溢出,但是不能进行增删改.
(23)Servlet的生命周期:(*****)
生命周期:就是一个对象从创建到销毁的过程.
Servlet生命周期:Servlet从创建到销毁的过程.
* 何时创建:用户第一次访问Servlet创建Servlet的实例
* 何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.
用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.
(24)四大域对象:
pagecontext:页面范围的数据
servletrequest:请求范围的数据
Httpsession:会话范围的数据
servletcontext:应用范围的数据.
(25)事务特性:原子性,一致性,隔离性,持久性
什么是会话:用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话.
(26)上传和下载的条件和方式
文件上传:
使用fileupload:
获得磁盘文件工厂对象
通过工厂获得核心解析类
解析request对象,返回集合,集合中的内容是分割线分成的每个部分
遍历每个部分
三要素:
1.提交方式必须为 post提交
2.必须有name属性 <input type="file" name="upload">
3.enctype="multipart/form-data"
技术:
servlet 3.0
JSPSmartUpLoad
FileUpload(必须导入2包)
fileupload包
io包
struts2
文件的下载:
2个头 1个流:
(27)转发与重定向 的 区别:
转发:1.一次请求 一次响应
2.地址栏不会改变
3.只能在本网站内访问
4.路径不用加工程名
重定向: 1.两次请求,两次响应
2.地址栏会改变
3.可以定向到任意网站
4.要加工程名.
(28)静态包含和动态包含的区别:( <%@ include%> 和<jsp:include> )
静态(1个class):相当于发现了之后 直接全部复制过来 然后翻译成Servlet,编译成一个class文件
包含(多个class):各个文件都已经编译好了,这个地方只包含的结果 前面定义的变量在这个地方不能继续使用
(29)设计模式:
创建型模式:
单例模式 :
保证一个类只有一个实例,并且提供一个访问该实例的全局访问点.优点:提高了系统性能 / 节省内存
应用场景:
[1]任务管理器 Task Manager
[2]回收站 Recycle Bin
[3]网站计数器
[4]文件系统
[5]Spring中每个bean默认都是单例的(action是例外),优点是Spring容器可以管理
[6]在servlet编程中,每个servlet也是单例
[7]在spring MVC / struts1框架中,控制器对象也是单例
五种单例实现方式:
主要:
饿汉式:线程安全 调用效率高 不能延迟加载
(1)私有构造器 (别人访问不了)
(2)private static 属性
(3)提供一个public方法
懒汉式:线程安全 调用效率不高 可以延迟加载
其他:
双重检测锁式:
静态内部类式:
枚举单例:
工厂模式
抽象工厂模式
建造者模式
原型模式
结构型模式:
适配器模式
桥接模式
装饰模式
组合模式
外观模式
享元模式
代理模式
行为型模式:
模版方法模式 命令模式 迭代器模式 观察者模式 中介者模式
备忘录模式 解释器模式 状态模式 策略模式 职责链模式 访问者模式
(30)栈是先进后出的线性表
栈具有记忆作用
(31)cookie 和session 的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
(32)1、Java基础
集合框架.doc
多线程详解.doc
单例模式和多线程结合.doc
I/O详解.doc
Socket和TCP/IP详解.doc
2、框架简介
SpringMVC优势
SpringMVC和Struts2的区别
Spring注解、事物的实现
AOP+IOC简单介绍
Hibernate和MyBatis的区别、各自优缺点
3、电商项目
开发流程
电商业务
架构梳理
用到的技术、各自技术的好处;
(33)git 和 svn 的区别:
1.GIT是分布式的 , svn 不是.
2.GIT把内容按元数据方式存储,而svn是按文件
3.GIT和SVN的分支不同
4.GIT没有一个全局的版本号,而svn有
5.GIT的内容完整性要优于SVN,底层用的是SHA-1 哈希算法.
6.SVN必须先update才能commit
(34)为什么从上家公司离职?
从技术的角度来说,IT技术迭代非常快,杭州这座城市最近几年IT发展的非常快.
(35)录音心得:
孙雪岩:
简历:
用熟悉不用精通!
技术描述需要分层次,比如熟悉的放前面,理解的放中间,了解的放后面.如此排版即可
项目描述:
SOA架构
Tomcat服务器
内容管理系统
单点登录系统
搜索系统
订单系统
Redis缓存
页面静态化
Nginx 负载均衡/反向代理
(35)http协议请求的几种方式:
get:对服务器资源的简单请求
post:用于发送包含用户提交数据的请求
head put delete trace options connect
(36)集合的种类 ? list 和 set 的区别? arraylist 和 linkedlist 区别 ?
Collection :单列集合
List:有序 可以重复 有索引 可以通过索引对元素进行操作
ArrayList
LinkedList
Vector
Set:无序 不可以重复
HashSet
TreeSet
Map:双列集合
特点:
双列集合 Collection是单列集合
键不可以重复,值可以重复。Set:无序 不可以重复
数据结构针对键有效
(37)事务: 最小的逻辑操作单元! 必须同时成功或者同时失败.
怎么处理事务 ? spring 来控制,放在service层
(38)hibernate和mybatis的区别
(39)springmvc 表现层
mybatis 持久层
spring 业务层 控制反转IOC/面向切面AOP 管理bean对象的创建 springfactory
aop 增强代码 ,动态代理.
就是一个容器 把其他整合在一起 .前端接收回显数据
controller接口请求封装参数 调用service(具体的业务逻辑) service调用dao持久层(主要连接数据库,与数据库做交互).
(40)static静态的理解,加载的先后顺序
(41)对java反射的理解? 动态加载一个类,获取类的内部结构,来动态调用.
代码抽取的时候.
(42)基本数据类型和引用数据类型的区别
byte int short long float double boolean char 在内存中的一个地址存放这些数值,一个变量指向的是这个内存地址
而其他属性类对象,在内存中引用的内存地址而不是具体的值
(43)pom / shiro
(44)echarts 纯js的图标库,流畅运行在pc和移动设备,兼容绝大部分浏览器
(45)回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法
(46)分布式计算的优点
可靠性(容错) :
分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器。
可扩展性:
在分布式计算系统可以根据需要增加更多的机器。
资源共享:
共享数据是必不可少的应用,如银行,预订系统。
灵活性:
由于该系统是非常灵活的,它很容易安装,实施和调试新的服务。
更快的速度:
分布式计算系统可以有多台计算机的计算能力,使得它比其他系统有更快的处理速度。
开放系统:
由于它是开放的系统,本地或者远程都可以访问到该服务。
更高的性能:
相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。
(47)分布式计算的缺点
故障排除:
故障排除和诊断问题。
软件:
更少的软件支持是分布式计算系统的主要缺点。
网络:
网络基础设施的问题,包括:传输问题,高负载,信息丢失等。
安全性:
开发系统的特性让分布式计算系统存在着数据的安全性和共享的风险等问题。
(48)并发锁
(1)减少锁的持有时间(缩小锁的范围)
(2)降低锁的请求频率(降低锁的粒度)
(3)放弃使用独占锁,使用并发容器,原子变量,读写锁等等来代替它。