优秀的编程知识分享平台

网站首页 > 技术文章 正文

干货来了!| 125 条常见的 java 面试笔试题大汇总 |(75/125)| 日更

nanyue 2024-07-29 01:23:11 技术文章 13 ℃

51、垃圾回收的优点和原理。并考虑2 种回收机制。

Java 语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理 的问题迎刃而解,它使得 Java 程序员在编写程序的时候不再需要考虑内存管理。由于有个 垃圾回收机制,Java 中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾 回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单 独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对 象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回 收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

52、请说出你所知道的线程同步的方法。

wait():使一个线程处于等待状态,并且释放所持有的对象的 lock。

sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 InterruptedException 异常。

notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的 唤醒某一个等待状态的线程,而是由 JVM 确定唤醒哪个线程,而且不是按优先级。

notityAll():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁, 而是让它们竞争。

53、你所知道的集合类都有哪些?主要方法?

最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存 储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和" 值"),其中每个键映射到一个值。

54、描述一下JVM 加载 class文件的原理机制?

JVM 中类的装载是由 ClassLoader 和它的子类来实现的,Java ClassLoader 是一个重要的 Java 运行时系统组件。它负责在运行时查找和装入类文件的类。

55、char型变量中能不能存贮一个中文汉字?为什么?

能够定义成为一个中文的,因为 java 中以 unicode 编码,一个 char 占 16 个字节,所以 放一个中文是没问题的

56、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什 么?

多线程有两种实现方法,分别是继承 Thread 类与实现 Runnable 接口同步的实现方面有 两种,分别是 synchronized,wait 与 notify

57、JSP的内置对象及方法。

request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几 个用于获取 cookie, header, 和 session 数据的有用的方法。 response 表示 HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应的方 法(如 cookies,头信息等) out 对象是 javax.servlet.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览 器回送输出结果。 pageContext 表示一个 javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的 名字空间、servlet 相关的对象的 API,并且包装了通用的 servlet 相关功能的方法。 session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态 信息 applicaton 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和 servlet 环境的信息 config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始化 参数。 page 表示从该页面产生的一个 servlet 实例

58、线程的基本概念、线程的基本状态以及状态之间的关系

线程指在程序执行过程中,能够执行程序代码的一个执行单位,每个程序至少都有一个 线程,也就是程序本身。Java 中的线程有四种状态分别是:运行、就绪、挂起、结束。

59、JSP的常用指令

<%@page language="java" csession="true" buffer="64kb" autoFlush="true" isThreadSafe="true"info="text" errorPage="error.jsp" isErrorPage="true" isELIgnored="true"page Encoding="gb2312" import="java.sql.*"%> isErrorPage(是否能使用 Exception 对象),isELIgnored(是否忽略表达式) <%@include file="filename"%> <%@taglib prefix="c"uri="http://......"%>

60、什么情况下调用doGet()和 doPost()?

Jsp 页面中的 form 标签里的 method 属性为 get 时调用 doGet(),为 post 时调用 doPost()。

61、servlet 的生命周期

web 容器加载 servlet,生命周期开始。通过调用 servlet 的 init()方法进行 servlet 的初始 化。通过调用 service()方法实现,根据请求的不同调用不同的 do***()方法。结束服务,web 容器调用 servlet 的 destroy()方法

62、如何现实servlet 的单线程模式

<%@ page isThreadSafe="false"%>

63、页面间对象传递的方法

request,session,application,cookie 等

64、JSP和 Servlet有哪些相同点和不同点,他们之间的联系是什么?

JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是"类 servlet"。Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在 Java 文 件中,并且完全从表示层中的 HTML 里分离开来。而JSP 的情况是 Java 和 HTML 可以组合 成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。

65、四种会话跟踪技术

会话作用域 ServletsJSP 页面描述 page 是代表与一个页面相关的对象和属性。一个页面 由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作) 表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面 request 是是代表与 Web 客户 机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组 件(由 于 forward 指令和 include 动作的关系)session 是是代表与用于某个 Web 客户机的一个用 户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求 application 是 是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web应用程序,包 括多个页面、请求和会话的一个全局作用域

66、Request对象的主要方法:

setAttribute(String name,Object):设置名字为 name 的 request 的参数值 getAttribute(String name):返回由 name 指定的属性值 getAttributeNames():返回 request 对象所有属性的名字集合,结果是一个枚举的实例 getCookies():返回客户端的所有 Cookie 对象,结果是一个 Cookie 数组 getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的 Body 的长度 getHeader(String name):获得 HTTP 协议定义的文件头信息 getHeaders(String name):返回指定名字的 request Header 的所有值,结果是一个枚举的 实例 getHeaderNames():返回所以 request Header 的名字,结果是一个枚举的实例 getInputStream():返回请求的输入流,用于获得请求中的数据 getMethod():获得客户端向服务器端传送数据的方法 getParameter(String name):获得客户端传送给服务器端的有 name 指定的参数值 getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举 的实例 getParameterValues(String name):获得有 name 指定的参数的所有值 getProtocol():获取客户端向服务器端传送数据所依据的协议名称 getQueryString():获得查询字符串 getRequestURI():获取发出请求字符串的客户端地址 getRemoteAddr():获取客户端的 IP 地址getRemoteHost():获取客户端的名字 getSession([Boolean create]):返回和请求相关 Session getServerName():获取服务器的名字 getServletPath():获取客户端所请求的脚本文件的路径 getServerPort():获取服务器的端口号 removeAttribute(String name):删除请求中的一个属性

67、J2EE 是技术还是平台还是框架?

J2EE 本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE 也是一个框架,包括 JDBC、JNDI、RMI、JMS、EJB、JTA等技术。

68、我们在web应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1 等,如何输出一个某种编码的字符串?

Public String translate (String str) { String tempStr = ""; try { tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim(); } catch (Exception e) { System.err.println(e.getMessage()); } return tempStr; }

69、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。

区别主要答两点: a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型 b.逻辑操作不会产生短路

70、XML文档定义有几种形式?它们之间有何本质区别?解析XML 文档有哪几种方式?

a: 两种形式 dtd schema, b: 本质区别:schema 本身是 xml 的,可以被 XML 解析器解析(这也是从 DTD 上发展 schema 的根本目的), c:有 DOM,SAX,STAX 等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由 DOM 的树结构所造成的, 这种结构占用的内存较多,而且 DOM 必须在解析文件之前把整个文档装入内存,适合对 XML 的随机访问 SAX:不现于 DOM,SAX 是事件驱动型的 XML 解析方式。它顺序读取 XML 文件,不需 要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它 会触发一个事件,用户通过在其回调事件中写入处理代码来处理 XML 文件,适合对 XML 的顺序访问 STAX:Streaming API for XML (StAX)

71、简述 synchronized 和 java.util.concurrent.locks.Lock的异同?

主要相同点:Lock 能完成 synchronized 所实现的所有功能 主要不同点:Lock 有比 synchronized 更精确的线程语义和更好的性能。synchronized 会 自动释放锁,而 Lock 一定要求程序员手工释放,并且必须在 finally 从句中释放。

72、EJB 的角色和三个对象

一个完整的基于 EJB 的分布式计算结构由六个角色组成,这六个角色可以由不同的开发 商提供,每个角色所作的工作必须遵循 Sun 公司提供的 EJB 规范,以保证彼此之间的兼容 性。这六个角色分别是 EJB 组件开发者(Enterprise Bean Provider)、应用组合者(Application Assembler)、部署者( Deployer)、 EJB 服务器提供者(EJBServerProvider)、 EJB 容器提供 者(EJB Container Provider)、系统管理员(System Administrator)三个对象是 Remote(Local) 接口、Home(LocalHome)接口,Bean 类

73、EJB 容器提供的服务

主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等 服务。

74、EJB 规范规定 EJB 中禁止的操作有哪些?

1.不能操作线程和线程 API(线程 API 指非线程对象的方法如 notify,wait 等),

2.不能操作 awt,

3.不能实现服务器功能,

4.不能对静态属性存取,

5.不能使用 IO 操作直接存取文件系统,

6.不能加载本地库.,

7.不能将 this 作为变量和返回,

8.不能循环调用。

75、remote 接口和 home 接口主要作用

remote 接口定义了业务方法,用于 EJB 客户端调用业务方法。 home 接口是 EJB 工厂用于创建和移除查找 EJB 实例

最近发表
标签列表