面试题小结4

面试题1:线程的创建方式 线程的五种状态

第一种 extends Thread 类 重写 run()

   MyThread m1=new MyThread();

    MyThread m2=new MyThread();

    m1.start();

   m2.start();

第二种创建方式 implements  Runnable 接口  重写run ()

MyThreads m3=new MyThreads();

Thread t1=new Thread(m3);

t1.setName(“t1”);

MyThreads m4=new MyThreads();

Thread t2=new Thread(m4);

t2.setName(“t2”);

t1.start();

t2.start(); Run()方法内部代码:

for
(int i=0;i<100;i++){

System.out.println(i);

try {

    Thread.sleep(100);

} catch (InterruptedException e) {

    e.printStackTrace();

}

}

线程的几种状态:初始化状态—就绪状态—运行状态—阻塞状态—死亡状态

1、新建状态(New):新创建了一个线程对象。

2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权。即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。

3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。

4、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。

阻塞的情况分三种:

(1)、等待阻塞:运行的线程执行wait()方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒,

(2)、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入“锁池”中。

(3)、其他阻塞:运行的线程执行sleep()或join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

5、死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

在这里插入图片描述

面试题2:线程并发库 ,线程池的作用

线程并发库 :往java程序中 加入了java.util.current 包, 便于线程的优化,线程池的创建
,线程的生命周期的控制 ,下面是几种线程池 :

在这里插入图片描述
程池的作用:

有效的控制了线程的最大数量,不会因为线程过多导致系统缓慢或崩溃

减少了线程的创建和销毁 节约了资源

减少了线程的创建 提高了效率

在这里插入图片描述

面试题3
讲一下什么是设计模式,常用的设计模式?

在设计过程中能够反复使用的通过不断验证的 能够解决某些特殊问题的设计方法,类似于模板,不同的方面 可以使用不同的设计模式来解决
提高效率 ;

常见的设计模式:

简单工厂: 对象创建型模式,写一个专门创建对象的工厂,通过用户的具体需求创建返回需要的对象;

工厂方法模式: 比简单工厂多了可扩展性,封装原则,可以不改变方法内部,父类工厂不在创建具体事例,而是其子类工厂创建;

抽象工厂模式:比如 苹果 分为 北方和南方之分,就可以使用,不同的一类 产品类别 ,可分为 北方工厂 和南方工厂 分别创建 属于北方的苹果香蕉 ,南方的苹果香蕉

单例模式 :该类只能有一个实例对象,构造私有化,对象有一个获得该对象的全局方法,可分为懒汉式(先判断是否存在 不存在再创建 节约资源 但线程不安全) 和饿汉式 (一开始就创建 ,浪费资源但是线程安全)

原型模式: 通过实现 cloneable 接口 重写 clone() ,复制已有对象,分为浅度克隆和深度克隆

在这里插入图片描述

面试题4:说一下http get 和post 请求的不同

相同点 :

都是Http 的请求方式,用户通过不同的请求方式来完成对资源文件url的访问,一般 get,post,put,delete 分别对应着对这个资源的增删改查,一般get对用于查询,post用于更新数据;

在这里插入图片描述

不同点:

1.get请求url参数会显示在地址栏后
post则不会

2.get 请求 url参数
的长度有限制 2048 post无限制

3.get请求 url参数
只能是ASSIC符,post也可以是字节码

4.post请求方式 比get请求更安全些;

在这里插入图片描述

面试题 5
说一下 jsp与servlet的区别?

Jsp 其实就是简化的servlet,
jvm只能 识别 。java类 ,在我们程序运行的时候,jsp经过编译
就会变为继承Httpservlet 的一个 类,对外提供服务 。

Jsp,主要由java代码
和html代码组成的页面 ,多用于
页面显示

Servlet:主要是用于 交互式浏览和修改数据,生成动态web, 多用于 逻辑控制

在这里插入图片描述
在这里插入图片描述

6:谈一下你对servlet的理解,什么是servlet?

Server Applet java servlet

主要使用java编写的服务器端程序

主要用于交互式的浏览和修改数据 生成动态的web页面

HttpServlet 通过重写doget()和 dopost() 或者 重写 service方法来完成 get 和post
请求的响应;

在这里插入图片描述

面试题7:

谈一下 servlet的生命周期?

生命周期主要包括:加载,实例化,初始化,处理请求 ,服务关闭 ,都是通过 javax.servlet.Servlet
这个接口得init ( ) service( ) destroy( ) 方法 实现的

具体步骤:

加载 servlet的class文件

创建servlet容器的对象

调用 javax.servlet.sevlet的init( )方法 完成初始化

通过 service方法 或者 doget( ),doPost ( )方法 来处理请求

Servlet 的服务关闭 调用 destroy( )方法

在这里插入图片描述

面试题 8: 说一下 forward 和redirect 请求的区别 ?

请求转发 ,服务器端转向,执行效率高,可携带作用域数据,跳转后 地址栏不发生变化,还是跳转前的url 有利于隐藏连接

重定向 sendDirect( ) 两次请求 ,客户端请求
,不能携带数据 ,request的作用域是同一次请求
, 跳转后 地址栏是 跳转后的那个页面 。

在这里插入图片描述
在这里插入图片描述

9: jsp 的九大内置对象
,和四大作用域

Page: 网页本身

pageContext: 网页属性 四大作用域之一

Exception :捕捉异常数据

Response: 数据的响应

Request: 数据的请求

Out : 输出对象

Config : servletConfig 文件对象

Session: 会话对象

Application: 全局 应用

四大作用域:

pageContext : 数据仅限于当前页面

request :仅限于 一次请求

session : 仅限于同一次会话

application: 整个应用 ,全局会话

在这里插入图片描述

加油吧 加油吧 坚持把 坚持把

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值