当前位置:   article > 正文

模拟面试题回顾_版图面试题

版图面试题

模拟面试题回顾

1.servlet里面有哪些关键的方法?

讲到它的方法,就不可避免地去了解servlet的运行过程(也可以说是生命周期),如下图所示:

在这里插入图片描述

它的四个过程

​ (1).当客户端第一次发送请求后,由容器(Web服务器Tomcat)解析请求,并根据请求找到对应的servlet,判断该类的对象是否存在,不存在则创建servlet实例;

​ (2).调取init()方法 进行初始化操作;

​ (3).初始化完成后调取service()方法,由service()判断客户端的请求方式,如果是get,则执行doGet(),如果是post则执行doPost().处理方法完成后,作出相应结果给客户端.单次请求处理完毕;

​ (4).服务终止或继续。

  • 如只发送单次请求,就会终止服务,调取destory()方法进行销毁。
  • 如再次发送请求,仍然会判断该类对象是否存在,就不再执行init()方法(初始化)了,就直接调service方法或者doGet()、doPost()方法。

2.mvc模式在处理业务逻辑时应该放到哪一层?

这就得涉及到mvc这个设计模式(它不属于java里的23种设计模式),以及与三层架构的关系。

  • 首先是MVC:

在这里插入图片描述

能够看出来它和页面关联性比较强。

  • 涉及到了业务逻辑,就再进一步看看它与三层架构之间的关系:

在这里插入图片描述

MVC主要应用于表现层(UI),对于表现层,有实体、控制器、视图三个部分去实现,控制器完成页面逻辑,控制层和逻辑业务层(Bill)相关联,实体来关联具体数据。所以说MVC可以一个是表现层框架。

3.integer a =127 , 再new 一个 integer ,用“==”相关联会输出什么呢?

输出的是true,
原因:

  • 对于整型变量,jvm在[-128,127]
    是使用同一个地址(也就是说自动装箱时不会new新的Integer对象),超出了这个范围就使用不同的地址了。而127刚好在这个范围内,是同一个地址,同一个对象,所以输出是true的。
  • 也就是说,这些范围内的相同值对应同一个对象 ,所以引用符号也是一样的

4.逻辑与(&&)和逻辑或(||)的短路?

短路运算符就是从左到右的运算中前者满足要求,就不再执行后者了; 可以理解为:

  • &&为取假运算,从左到右依次判断,如果遇到一个假值(也可以说是不成立),就返回假值,以后不再执行,否则返回最后一个真值;

  • || 为取真运算,从左到右依次判断,如果遇到一个真值,就返回真值,以后不再执行,否则返回最后一个假值。

5.string 为什么会被设置成不可变的对象 ?

首先是String的源码:

public final class String implements Serializable, Comparable<String>, CharSequence {
 /** The value is used for character storage. */
private final char[] value;

/** Cache the hash code for the string */
private int hash;// Default to 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

可以看出这是一个由final限制的char数组。

然后原因:

  • 便于实现字符串池;(String常量在java中用的很多,不可变时就可以实现由String pool池去引用已存在的字符串,就可以极大地避免空间浪费)
  • 使多线程安全;(不可变可以保证在多线程下不能被写,这样就保证线程安全)
  • 避免安全问题;(网络连接地址,文件路径,反射机制都和String参数离不开,一旦可变,其网络连接会极大地受到影响)
  • 加快字符串处理速度。
    详细请见该文

6.有序的集合有哪些?

List、LinkedHashMap、LinkedHashSet、TreeMap、TreeSet是有序的,
List、LinkedHashMap、LinkedHashSet、LinkedHashSet在遍历时会保持添加的顺序,
TreeMap、TreeSet在遍历时会以自然顺序(Comparable接口的compareTo)输出

7.一个线程调用start方法和run方法有什么区别?

调用线程的 start() 方法后,线程处于可运行状态,此时它可以由 JVM 调度并执行,这并不意味着线程就会立即运行
run() 方法是线程运行时由 JVM 回调的方法,无需手动写代码调用
直接调用线程的 run() 方法,相当于在调用线程里继续调用方法,并未启动一个新的线程

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/498072
推荐阅读
相关标签
  

闽ICP备14008679号