自己面试遗忘重要知识点总结(整理中...)

自己面试遗忘重要知识点总结(整理中…)

1.String类为什么是final

参考网址:

https://mp.weixin.qq.com/s/M8tOF7tiP9I5Ku_-PfZD2g

1.性能(效率)
如果指定一个类为final,则该类所有的方法都是final。Java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50%。
若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。

2.安全性
String类的内部好多方法的实现都不是Java编程语言本身编写的,好多方法都是调用的操作系统本地的API,也就是“本地方法调用”,这种类是非常底层的,和操作系统交流频繁的,那么如果这种类可以被继承的话,如果我们再把它的方法重写了,往操作系统内部写入一段具有恶意攻击性质的代码什么的,这不就成了核心病毒了么?

3.天生服务性
当时设计时,就是不希望别人改,这个类就像一个工具一样,类的提供者给我们提供了,就希望我们直接用就完了,不想让我们随便能改,其实说白了还是安全性,如果随便能改了,那么Java编写的程序肯定就很不稳定。

2.抽象类和接口区别

参考网址:

https://mp.weixin.qq.com/s/HD8aXbdcWnTovqWO5ZP_Gw

区别1:

首先抽象类是一个“类”,而接口只是一个“接口”,两者的概念和应用场景不一样,这也是抽象类和接口的主要区别。

区别2:

即使在 Java 8 中接口也能写实现方法了,但却不能写构造方法,而在抽象类是可以写构造方法的,意味着抽象类是参与类的实例化过程的,而接口则不是。

区别3:

抽象类可以有自己的各种成员变量,并且可以通过自己的非抽象方法进行改变,而接口中的变量默认全是 public static final 修饰的,意味着都是常量,并且不能被自己和外部修改。

区别4:

接口可以实现多继承,而抽象类只能单继承。

3.http报文内容

请求

1**、请求行**

GET /news/hello.html HTTP/1.1

GET:请求方式(或提交方式),在HTTP中一共规定了7种提交方式,其中5种不常用,常用的只有GET和POST。

/news/hello.html:请求资源路径,表明浏览器请求的是哪一个Web应用下的哪一个资源文件

HTTP/1.1:请求所遵循的协议和版本。

2**、若干请求头(请求报头)**

Host: localhost – 通知服务器,浏览器请求的是哪一台虚拟主机

Accept: text/html, application/xhtml+xml, /

– 通知服务器浏览器能接收哪些格式的数据

Cookie: 和cookie技术相关的一个头(会话技术中介绍)

xxx: xxx

(一个空白行)

3**、请求实体内容**

如果请求方式为GET提交,请求实体没有内容

如果请求方式为POST提交,并且请求中携带了数据,请求实体才会有内容。

响应

1**、状态行**

HTTP/1.1 200 OK

HTTP/1.1:响应信息所遵循的协议和版本

200:三位的数字(100~600)状态码,作用是用于表示请求处理的结果。

200:最常用的,表示请求处理成功!

404:表示浏览器请求的资源不存在!

500:表示服务器端程序在处理请求的过程中抛出了异常。

。。。

OK:描述短语,也表示请求处理的结果,和状态码相对应

200 OK

404 Not Found

500 Internal Server Error

2**、若干响应头(响应报头)**

Content-Type: text/html – 通知浏览器,服务器响应的数据类型

text/html – 服务器响应是一个html格式的网页

image/* – 服务器响应是一个image图片

。。。

Content-Length: 143 – 服务器响应的数据长度,143单位是字节

Date: Tue, 15 Oct 2019 07:14:46 GMT – 响应时间

3**、响应实体内容**

当我们请求一个静态资源文件时(html、css、js、图片等),服务器会将这个文件的内容通过响应实体发送给浏览器。

比如浏览器请求news/hello.html,服务器在响应时直接将hello.html文件的所有内容,通过响应实体发送给浏览器。

4.http常见状态码和含义

100  Continue  继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
200  OK   正常返回信息
201  Created  请求成功并且服务器创建了新的资源
202  Accepted  服务器已接受请求,但尚未处理
301  Moved Permanently  请求的网页已永久移动到新位置。
302 Found  临时性重定向。
303 See Other  临时性重定向,且总是使用 GET 请求新的 URI。
304  Not Modified  自从上次请求后,请求的网页未修改过。

400 Bad Request  服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
401 Unauthorized  请求未授权。
403 Forbidden  禁止访问。
404 Not Found  找不到如何与 URI 相匹配的资源。

500 Internal Server Error  最常见的服务器端错误。
503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。

5.ajax过程

(1)创建XMLHttpRequest对象,也就是创建一个异步调用对象.

(2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.

(3)设置响应HTTP请求状态变化的函数.

(4)发送HTTP请求.

(5)获取异步调用返回的数据.

(6)使用JavaScript和DOM实现局部刷新.
详细介绍上面步骤的第三步
//readyState==4表示通讯结束
    	  //status==200 表示服务端响应OK
    	  if(xhr.readyState==4&&xhr.status==200){
    
    
    		  //responseText表示服务端响应的结果
    		  //console.log(xhr.responseText);//json格式字符串
    		  //将服务端响应的json格式字符串,转换为json格式的JS对象
    		  var result=JSON.parse(xhr.responseText);
    		  doHandleResponseResult(result);
    	  }

jQuery发送ajax异步的模板

$.ajax({
    
    
        url : "userList.json",//请求的url
        method : "GET",//请求的方式
        contentType: "application/json",//请求数据为json格式
        data : null,//请求的参数
        async : true,//默认为true,表示异步请求
        dataType : "text",//返回的数据时json格式的对象,如果是字符窜,简单类型一般就是text类型
        success : function(data){
    
    
            console.log(data);
        },//定义成功的回调函数
        error : function() {
    
    
            alert("ajax请求失败");
        }//失败的回调函数
    });

6.get和post请求区别

(1)GET提交会将发送给服务器的请求参数,拼接在地址栏URL地址的后面,相对不安全!

(2)GET提交通过地址栏URL地址后面拼接参数,数据量不能太大,不能超过1kb或者4kb。

(3)POST提交是通过请求实体发送数据给服务器,相对更加安全!

(4)POST提交通过请求实体发数据,理论上数据量是没有限制的!

7.cookie 和session 的区别

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
 2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
    考虑到安全应当使用session。
 3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
     考虑到减轻服务器性能方面,应当使用COOKIE4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
 5、所以个人建议:
    将登陆信息等重要信息存放为SESSION
    其他信息如果需要保留,可以放在COOKIE

8.重定向与转发的区别

1.重定向访问服务器两次,转发只访问服务器一次。
✦ 2.重定向可以看见目标页面的URL,转发只能看见第一次访问的页面URL,以后的工作都是有服务器来做的。
✦ 3.重定向跳转后必须加上return,要不然页面虽然跳转了,但是还会执行跳转后面的语句,转发是执行了跳转页面,下面的代码就不会在执行了。
✦ 4.在request级别使用信息共享,使用重定向必然出错

✦ 5.还有一个大的区别就是,重定向可以访问自己web应用以外的资源

请求转发是一种资源的跳转方式,此外重定向也是一种资源的跳转方式

请求转发的特点:

(1)请求转发是一次请求,一次响应

(2)请求转发前后,地址栏地址不会发生变化

(3)请求转发前后,request对象是同一个(域对象)

(4)进行转发的两个资源必须属于同一个Web应用(属于不同web应用的资源之间是不能进行转发的)

request.getRequestDispatcher(转发到资源的URL地址).forward( req, res);

重定向也是一种资源的跳转方式

重定向的特点:

(1)重定向是两次请求,两次响应

(2)重定向前后,地址栏地址会发生变化

(3)重定向前后,request对象不是同一个

(不能使用域对象)

(4)进行重定向的两个资源可以不是同一个Web应用(属于不同web应用的资源之间是可以进行重定向的)

实现重定向:

response.sendRedirect( 重定向到资源的地址 );

猜你喜欢

转载自blog.csdn.net/shaoming314/article/details/115192079