查看原文
其他

Java基础篇——Java开发面试题2期

Java精选 2022-08-09


Java面试前需要做足各方面的准备工作,肯定都会浏览大量的面试题,本人也不例外,通过浏览面试题和以往的面试经历,总结了从初级到中级以及高级的面试题,供大家学习讨论。


Java 面向对象的特征有哪些方面?

点击下方空白区域查看答案解析!

(1)抽象:

抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。


(2)继承:

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生 

类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。


(3)封装:

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一 

系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。


(4) 多态性:

多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享 

、代码共享的优势,很好的解决了应用程序函数同名问题。

int 类型和 Integer 类型有什么区别?

点击下方空白区域查看答案解析!

Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。 


Java为每个原始类型提供了封装类,原始类型封装类具体如下:

booleanBoolean    

charCharacter    

byteByte    

shortShort    

intInteger    

longLong    

floatFloat    

doubleDouble    

引用类型和原始类型的行为完全不同,并且它们具有不同的语义。


引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。


对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。

String、StringBuffer与StringBuilder的区别?

点击下方空白区域查看答案解析!

java 提供了两个类:String和StringBuffer,java 5.0新增java.lang.StringBuilder一个可变的字符序列。


简单地说,就是一个变量和常量的关系。StringBuffer对象的内容可以修改;而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象。


java.lang.StringBuffer

StringBuffer的内部实现方式和String不同,StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。


java.lang.String

在String类中没有用来改变已有字符串中的某个字符的方法,由于不能改变一个java字符串中的某个单独字符,所以在JDK文档中称String类的对象是不可改变的。然而,不可改变的字符串具有一个很大的优点:编译器可以把字符串设为共享的。


java.lang.StringBuilde

java.lang.StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。

编程题:写一个 Singleton 单例模式

点击下方空白区域查看答案解析!

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在,一般Singleton模式通常有几种种形式:


第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

/**    

 * 素文宅 www.yoodb.com    

 */    

public class Singleton {    

private Singleton(){}    

   //在自己内部定义自己一个实例,是不是很奇怪?    

   //注意这是private 只供内部调用    

   private static Singleton instance = new Singleton();    

   //这里提供了一个供外部访问本class的静态方法,可以直接访问      

  public static Singleton getInstance() {    

     return instance;       

  }     

}    


第二种形式: 

/**    

 * 素文宅 www.yoodb.com    

 */    

public class Singleton {     

  private static Singleton instance = null;    

  public static synchronized Singleton getInstance() {    

  //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次    

  //使用时生成实例,提高了效率!    

  if (instance==null)    

    instance=new Singleton();    

return instance;    

  }     

}    


其他形式:

定义一个类,它的构造函数为private的,所有方法为static的,一般认为第一种形式要更加安全些。

JSP 九大内置对象和作用是什么?

点击下方空白区域查看答案解析!

request 请求对象 类型 javax.servlet.ServletRequest 作用域 Request


response 响应对象 类型 javax.servlet.SrvletResponse 作用域 Page


pageContext 页面上下文对象 类型 javax.servlet.jsp.PageContext 作用域 Page


session 会话对象 类型 javax.servlet.http.HttpSession 作用域 Session


application 应用程序对象 类型 javax.servlet.ServletContext 作用域 Application


out 输出对象 类型 javax.servlet.jsp.JspWriter 作用域 Page


config 配置对象 类型 javax.servlet.ServletConfig 作用域 Page


page 页面对象 类型 javax.lang.Object 作用域 Page


exception 例外对象 类型 javax.lang.Throwable 作用域 page


1)request 对象代表的是来自客户端的请求,例如我们在FORM表单中填写的信息等,是最常用的对象


常用的方法有:getParameter、getParameterNames 和getParameterValues 通过调用这几个方法来获取请求对象中所包含的参数的值。


2)response 对象代表的是对客户端的响应,也就是说可以通过response 对象来组织发送到客户端的数据。但是由于组织方式比较底层,所以不建议普通读者使用,需要向客户端发送文字时直接使用


3)pageContext 对象直译时可以称作“页面上下文”对象,代表的是当前页面运行的一些属性


常用的方法有 :findAttribute、getAttribute、getAttributesScope 和getAttributeNamesInScope


一般情况下pageContext对象用到得也不是很多,只有在项目所面临的情况比较复杂的情况下,才会利用到页面属性来辅助处理。


4)session    对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。“session” 对象建立在cookie的基础上,所以使用时应注意判断一下客户端是否打开了cookie。常用的方法包括getId、 getValue、 getValueNames和putValue等。


HTTP是无状态(stateless)协议;


Web Server 对每一个客户端请求都没有历史记忆;Session用来保存客户端状态信息;由Web Server 写入;存于客户端;客户端的每次访问都把上次的session记录传递给Web Server;Web Server读取客户端提交的session来获取客户端的状态信息


5)application 对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等。


6)out 对象代表了向客户端发送数据的对象,与“response” 对象不同,通过“out” 对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过“out” 对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了pirnt和println之外,还包括clear、clearBuffer、flush、getBufferSize和getRemaining,这是因为“out” 对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法


7)config 对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。


8)page 对象代表了正在运行的由JSP文件产生的类对象,不建议一般读者使用。


9)exception 对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP文件中使用

推荐阅读

 

Java基础篇——Java开发面试题1期

Spring基础篇——DI/IOC和AOP原理初识

Spring基础篇——bean的自动化装配

Spring基础篇——通过Java注解和XML配置装配bean

微框架Spring Boot使用Redis如何实现Session共享

SpringMvc框架MockMvc单元测试注解及其原理分析


更多推荐↓↓↓
 

Java精选

关注微信公众号“Java精选”(w_z90110),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存