java 面试视频总结 (1)

1.线程的实现方式?

①实现方式

通过继承Thread类实现一个线程

通过实现Runnable接口实现一个线程

②怎么启动?

Thread thread = new Thread(“继承了Thread的对象/实现了Runnable的对象”);

thread.setName(“设置一个线程名称”);

thread.start();

启动线程使用start方法,而启动后会执行run方法

③怎么区分线程?z在一个系统中有多个线程,每个线程都会打印日志文件,怎么区分是那个线程打印的?

 

thread.setName(“设置一个线程名称”);这是一种规范,在创建线程完成以后,都需要设置名称。

2.线程并发库

Java通过Executors提供四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

线程池的作用?

  1. 限制线程的个数,不会导致由于线程过多导致系统运行缓慢或崩溃
  2. 线程池不需要每次都去创建,响应时间更快

3.什么是设计模式?常用的设计模式有哪些?

设计模式是经过前人无数次的实践总结出的,设计过程中可以重复使用、可以解决特定问题的设计方法。

单例模式:

饱汉模式:饱汉模式是一出来就创建单实例

饥汉模式:需要的时候才创建

  1. 构造方法私有化,让除了自己类中能创建其他地方都不能创建,
  2. 在自己的类中创建一个单实例
  3. 提供一个方法获取实例对象(创建时需要就行进行方法同步)

工厂模式:Spring的IOC就是使用的工厂模式

对象的创建交给一个工厂去创建。

代理模式:SpringAOP就是使用的动态代理

包装模式

4.讲一下HTTP get和post的区别

Get和post都是http的请求方式,用户通过不同的http的请求方式完成对url的不同操作,具体点就是get用于获取/查询  资源信息,而post一般用于更新  资源信息

 

不同:1.提交参数形式

GET请求提交的数据会在地址栏显示出来,而Post请求不会再地址栏显示出来。GET提交请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数会用&连接;Post提交:把提交的数据放置在HTTP包的包体中。因此,GET提交的数据会在地址栏中显示,而Post提交,地址栏不会改变

2.传输数据的大小

Http GET:请求由于浏览器对地址长度的限制而导致传输的数据有限制(最多只能有1024字节),而Post的请求不会因为地址长度限制而导致传输数据限制。

3.安全性

POST的安全性要比GET的安全性高。正如在(1)中提到,使用 Get的时候,参数会显示在地址栏上,而Post不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。

 

4.安全的和幂等的

所谓安全的意味着该操作用于获取信息而非修改信息。幂等的意味着对同一URL的多个请求应该返回同样的结果。完整的定义并不像看起来那样严格。换句话说,GET请求一般不应产生副作用。从根本上讲,其目标是当用户打开一个链接时,她可以确信从自身的角度来看没有改变资源。比如,新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。反之亦然。POST请求就不那么轻松了。POST表示可能改变服务器上的资源的请求。仍然以新闻站点为例,读者对文章的注解应该通过POST请求实现,因为在注解提交之后站点已经不同了(比方说文章下面出现一条注解)。(这一条不太理解。

5.说一下对Servlet的理解?或servlet是什么?

Servlet(Servlet Applet),全称Java Servlet,是用Java编写的服务器端程序。而这些Servlet都要实现Servlet这个接口。其主要功能在于交互式的浏览和修改数据,生成动态Web内容。Servlet运行于支持Java的应用服务器中。继承HttpServlet 重写doGet 和 doPost 方法或者你也可以重写service方法完成对get和post请求响应。

Servlet的通俗理解?

Servlet是一个运行了面向请求/ 响应服务器中的网络模块。

请求是客户的一个调用,可能是远程的。

请求包含了客户要发送给服务器的数据。

响应是服务器返回给客户的回答该请求的数据。Servlet是一个JAVA对象,他以请求为输入,分析其数据,执行一些逻辑运算,并给客户发回一个响应。 
   另一方面,Servlet作为驻留在服务器端HTTP明白的中间层,它们知道怎样在HTTP中通过RMI或IIOP在EJB和客户之间进行通信。

6.简单说一下Servlet的生命周期

1.servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由 javax.servlet.Servlet接口的  init,service和   destroy方法表达。

2.加载 Servlet的 class---->实例化 Servlet----->调用 Servlet的 init完成初始化---->响应请求(Servlet的 service方法)----->Servlet容器关闭时(Servlet的destory方法)

3.Servlet启动时,开始加载  servlet生命周期开始。Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其 service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候(服务器关闭)调用其 destroy方法。

7.servlet  API中的forward()和redirect()区别?

前者仅是容器中控制权的转向, 在客户端浏览器地址栏中不会显示出转向后的地址; 后
者则是完全的跳转浏览器将会得到跳转的地址, 并重新发送请求链接Forward还是原来的请求而redirect是重新发送请求。 这样, 从浏览器的地址栏中可以看到跳转后的链接地址。 所以, 前者更加高效, 在前者可以满足需要时, 尽量使用 forward()方法, 并且, 这样也有助于隐藏实际的链接。 在有些情况下, 比如, 需要跳转到一个其它服务器上的资源, 则必须使用sendRedirect()方法。 

  1. forward是服务器端的转向,而redirect是客户端的跳转
  2. 使用forward浏览器的地址不会发生改变,而redirect会发生改变
  3. Forward 在一次请求中完成,而redirect是重新发起请求
  4. Forward是在服务器端完成,而不用客户端重新发起请求,效率较高。

8.JSP 和Servlet的相同点和不同点

JSP是Servlet技术的扩展,所有的jsp文件都会被翻译为一个继承HttpServlet的类。也就是说JSP最终也是一个Servlet。这个Servlet对外提供服务。

不同点:

1、JSP经编译后变成Servlet
2、jsp侧重于视图,Servlet更擅长于逻辑控制
3、Servlet如果要实现html的功能,必须使用writer输出对应的HTML。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。

联系:

JSP是Servlet技术的扩展,本质上是Servlet的简易方式。

9.JSP 有哪些内置对象?作用分别是什么?分别有什么方法?

9个内置对象:

request 用户端请求。此请求会包含GET/POST请求的参数

response 网页传回用户端的回应

pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet 构架部件
page JSP 网页本身
exception 针对错误网页,未捕捉的例外
四大作用域:pageContext,request,session,application,可以通过jstl从四大作用域获值。

JSP传递值,request,session,application,cookie都可以传值。

11.session和cookie的区别

Session和cookie都是会话(session)跟踪技术。Cookie是通过在客户端记录信息确定用户身份,session通过在服务器端记录信息确定用户身份。但是session的实现依赖于cookie,sessionId(session的唯一标识需要存放在客户端)

区别:

  1. cookie数据存放在客户的浏览器上,session数据存放在服务器上。
  2. Cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应该使用session。
  3. session在一定时间内保存在服务器上,当访问增多会占服务器性能。考虑到服务器的性能方面,应该使用cookie
  4. 单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。

个人建议:

将登陆信息等重要信息存放为session ,其他信息如果需要保留,可以存放在cookie中。

购物车最好使用cookie,但是cookie是可以从客户端禁用的,这时候就要使用cookie+数据库的方式实现,当从cookie中不能取出数据时,就从数据库取。

12.MVC的各部分有哪些技术实现?

M(model)模型  javabean

V(View)代码视图  html  jsp

C(Control)控制器  Servlet Action

JSP+Servlet+javabean 最经典MVC模式,实际上就是model2的实现方式,就是把视图和逻辑隔离开来,

Model1的方式  JSP +dao

Model2的方式 JSP+Servlet+Service+dao

使用struts2和springMVC这样的MVC框架后,JSP+核心控制器+action+javabean

  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值