java面试重点总结

2019-05-18 17:59

1. 反射

重写(覆盖):父子 重载:一个类内

equals&&hashCode:为什么要同时覆盖?

hashCode覆盖的主要作用是为了配合基于散列的集合一起正常运行,这些结合包括;

hashSet,hasMap,HashTable…..

对集合的操作?

1.hashSet.add(object o); 他会先调用这个对象的hashcode()方法,定位到他要放的物理位置

如果该位置上没有元素,则直接把该元素存储在该位置上。 如果该位置有元素,则会调用该对象的equals方法,判断他们是否相同。 相同,则不存储不相同,则散列到其他地址。

2.hashSet.contains(object o); 查找一个元素时:首先调用该对象的hashCode方法,若该位置有元素则调用equals方法,否则不调用。

默认的hashCode是一个本地方法,返回的是一个与地址所对应的值(但不是内存地址) 如果Student 覆盖了equals and hashCode方法 hashSet.add(new student(1,”zs”)); //只调用hashCode hashSet.add(new student(2,”ls”));//只调用hashCode hashSet.add(new student(3,”ww”));//只调用hashCode

hashSet.add(new student(1,”zs”)); //调用hashCode还要调用equals

如果Student 覆盖了equals 但hashCode返回值相等 hashSet.add(new student(1,”zs”)); //只调用hashCode

hashSet.add(new student(2,”ls”)); //只调用hashCode,1次equals hashSet.add(new student(3,”ww”)); //只调用hashCode,2次equals hashSet.add(new student(1,”zs”)); //调用hashCodeX次equals

String :

2.html 有浏览器解析执行,主要:兼容性问题 css数据与外观分离(主要负责页面的外观)

js :用于与页面交互的脚本语言,在浏览器端执行。 作用:

1.前端验证(验证不通过,浏览器不提交数据到服务器。) 2.ajax核心技术一,用于异步的向服务器发送请求,并动态更新页面。 3.与页面交互,生成一些动态效果(比如:嵌入动态文本于HTML页面)

4.获取浏览器的相关信息。

3.浏览器如何处理URL:http://ip:port/appname /login.do

第一步:服务器查看有没有appname对应的用户存在,若没有返回404,如有则进入下一

步。

第二步:在 web.xml中(与appname所对应的),使用“/login.do”与url-pattern进行匹配 第三步:如果任然没有匹配到,会查询静态资源。 如果找到返回,找不到返回404. 4.get&&post请求 Get:

什么时候采用:表单的默认提交方式,直接在浏览器上输入地址,通过链接访问。

特点:在地址栏会显示数据,请求数据会放在请求资源路径后面,一般用于向服务器获取资源。 Post :

设置表单为post方式:

特点:数据不会在地址栏显示,数据会存放在实体内容里,一般用于向服务器发送数据。

二者对比:get的缺点:提交的数据有限制(因为只能存放在请求行之后) 不安全(浏览器地址栏能看到数据)

Post的优点:数据量大(因为存放到实体内容里面)

相对安全(但是实体内容的数据任然没有加密,可以借助工具看到) 5.重定向与转发

重定向:服务器向浏览器发送一个状态码为302及一个消息头location,浏览器会立即向

location所指向的地址发送一个新的请求。

编程:response.sendRedirect(重定向地址)

重定向的特点及需要注意的: 重定向的地址是任意的

浏览器中地址栏的地址会变成重定向的地址 一件事情已经做完了。

由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。

转发:在同一个应用内部,一个组件将未完成的任务转交给另外一个组件来完成。 编程:request.getRequestDispatcher(\另一个组件的地址 \

特点:一件事情未完成

转发的目的地,只能是同一个应用内部 转发时浏览器地址栏的地址没有任何改变。

转发涉及组件之间,可以共享同一个request,response对象。

前后两个页面有数据传递用请求转发(servlet查询出数据,转发到jsp),没有则用重定向。

要注意的:重定向/转发之前不能有任何的输出(有则报错)。如果缓存中有数据,重定向/转发之前会清空缓存中的数据。

6.servlet:在服务器上运行的小程序.也是扩展web服务器的一种组件。

组件(程序员写):组件是符合规范,完成一定功能,并可以单独部署的软件模块,组件一般不能单独运行,需要依赖容器才能运行。

容器(一般由大厂商提供):提供组件的运行环境,并且管理组件的生命周期。

Servlet容器:提供servlet运行的环境,并且管理servlet的生命周期,一般常见的web容器:比如tomcat,除了一个servlet以外,同时也是一个web服务器。(既是servlet容器,又是web容器)

servlet是运行于servlet容器中,可以被servlet容器动态加载,来扩展服务器的功能,并提供特定的服务。servlet按照请求/相应的方式工作。

主要作用:web服务器本身没有计算能力,也就谁说,不能处理动态资源的请求。servlet可以处理动态资源的请求。

Servlet响应用户请求的过程:

浏览器输入一个地址(指向一个servlet)http://ip:port/mytest /login.do 1.浏览器依据ip,端口号连接服务器

2.浏览器将请求数据包按http协议打包成一个http请求数据包

3.服务器“看出来”这个请求要的是一个servlet(web.xml 中的url-pattern进行匹配),此时服务器中的一个负责通讯的模块(一般叫做servlet引擎)会创建

HttpServletRequest实例(HttpServletRequest实际上是一个接口,有服务器提供者实现,该实例包含了请求数据中的数据)

还创建了HttpServletResponse实例。

4.服务器依据port之后的部分mytest/login.do找到web.xml,依据web.xml中的信息找到对应的servlet类名。

UserMgmt web.UserMgmt

UserMgmt *.do

会查看该servlet有没有对应的实例,如果没有则创建实例,如果有则使用现成实例(此时可能出现线程安全问题)

//service(HttpServletRequest request, HttpServletResponse response) //对于程序员,就操作这两个对象。

接下来调用service()方法。Service方法里面的代码可以通过HttpServletRequest提供

的方法获取请求中的数据。并且可以将处理之后的结果通过HttpServletResponse提供的方法设置返回的结果。

5.servlet引擎从HttpServletResponse获取数据,生成http响应数据包,发送给浏览器。

6.servlet生命周期:

核心接口:servlet接口(所有的servlet必须实现该接口) 该接口主要定义三个方法:

init(ServletConfigconfig):初始化方法ServletConfig:主要用于获取

servlet配置参数。

service(req,res):处理请求 (判断get/post请求,调用响应的doget/dopost)

destroy():销毁资源容器根据自己的算法,在删除之前调用destory()释放资源。

servlet容器默认调用有参的(GenericServlet类中)

public void init(ServletConfigconfig){

this.config=config; init();

}

1、实现servlet接口

2、继承GenericServlet(实现service 方法)

3、继承HttpServlet类(重写doGet,doPost方法就行)

默认的init()方法由GenericServlet来实现,如果想自定义自己的初始化过程,可以重写 Init()(直接写要写的代码)方法或重写init(ServletConfigconfig)(要调用父类的super.init(config))

7.Why?jsp: 因为直接使用servlet生成动态页面过于繁琐,使用jsp生成动态页面更方便。(jsp不需要编译,直接打包,就可以运行)

Jsp(java server page):服务器端动态页面生成技术,主要组成部分是html元素,以及少量java代码,

Jsp:如何运行

当访问某个.Jsp文件时,jsp引擎(servlet容器中的某一个特点的模块)会将.Jsp文件转换为.Java 文件(.java就是一个servlet)然创建其实例,并调用其service()方法。 Jsp----?java

对于java代码片段<% %>:把代码直接放在service()方法中

对于java表达式<%= %>:放到service()方法中,使用out.prin()输出 对于html :放到service()方法中,使用out.write()输出 注:print(null)输出 null, write(null)输出””

对于<%! String line =”hello world!” %>:声明的变量会作为对应的servlet的属性 方法。。。。。。。。。。。。。。。。。。。一个独立方法 (不建议用,容易导致线程不安全)

8.Session && cookie

http是无状态的,(可以利用有限的资源为多个客户服务)即:http服务器不记录哪一个浏览器访问了

要记录状态的情况:比如购物系统,要记录客户端的状态。 Cookie:将用户的状态保存在客户端。 Session将用户的状态保存在服务器端。

Cookie:浏览器访问某个服务器时,服务器会创建一部分数据。(以消息头set-cookie的方式)发送给浏览器,浏览器会将这部分数据保存下来。当浏览器再次访问该服务器时,将会把这部分数据发送给服务器。 创建:response.addCookie(…) 查询:request.getCookies() Cookie限制:

1.cookie只能保存字符串,并且对于中文,需要编码。 2.cookie大小有限制(4k左右)

3.cookie的个数也有限制(本地大约三百) 4.cookie不是很安全 5.cookie可能被用户禁止。

Cookie的时用场合:自动登录,网页换肤,。。。。。。 路径问题:http://ip:port/appname/jsp01/jsp01.jsp

创建cookie时都会有一个默认的path 此时为:/appname/jsp01

当请求这个路径之下的,都会把cookie带过去egg:/appname/jsp01/acd/cde.jsp /appname/jsp01.jsp 则不会。

Session:浏览器访问服务器时,服务器会创建一个对象(session对象),同时,还会生成一个标识该对象的唯一字符串(sessionID),服务器在默认的情况下使用cookie机制将sessionID发送到浏览器,浏览器下次访问时,会将sessionID携带到服务器,服务器使用sessionID查找对应的session对象。

用户禁止cookie:


java面试重点总结.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:湿地生态动态监测技术规程-2013.1.11

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: