首页 > 图灵资讯 > 技术篇>正文

经典java开发笔试题(附答案)

2023-03-26 16:40:41

最近天气越来越凉爽,没有夏天的炎热,似乎每个人都可以沉下心来学习。我知道很多朋友都在准备学校招聘,还有一些人在工作java程序员如果你想换一家公司,这个不体贴的小编会给你送福利。本文整理了经典java开发笔试题,供朋友学习参考。

1、面向对象和面向过程优缺点是什么?

答:面向过程:优点:性能高于面向对象,因为类别调用需要实例化,成本相对较大,资源消耗相对较大;比如单片机,嵌入式开发,Linux/Unix一般采用面向过程开发,性能是最重要的因素。缺点:没有易于维护、重用和扩展的面向对象

面向对象:优点:易于维护、易于重用、易于扩展。由于面向对象具有包装、继承和多态性的特点,可以设计低耦合系统,使系统更加灵活和易于维护缺点:性能低于面向过程

2、Java语言有哪些特点?

答:简单易学;面向对象(包装、继承、多态);平台无关性(Java虚拟机实现平台无关性);可靠性,安全性,支持多线程C++语言没有内置的多线程机制,因此需要调用操作系统的多线程功能来设计多线程,而Java语言则提供多线程支持);支持网络编程并且非常方便(Java语言本身就是为了简化网络编程而诞生的,所以Java语言不仅支持网络编程,而且非常方便);编译与解释并存。

3、Java虚拟机是什么?

答:任何一个都可以运行Java字节码软件可以看作是Java的虚拟机(JVM)

4、JDK和JRE各有什么? 

答:JDK是为程序开发人员提供的开发工具箱。它包括完整的JRE(Java Runtime Environment),Java运行环境还包括其他工具包供开发人员使用。

JRE:普通用户只需要安装JREE(Java Runtime Environment)操作jav程序。程序开发人员必须安装JDK来编译和调试程序。span>

5、Java应用程序和小程序有什么区别?

答:简单来说,应用程序从主线程开始(即main()方法)。applet小程序没有main方法,主要嵌入浏览器页面运行(调用init()线程或run()启动),嵌入浏览器类似于flash小游戏。

6、Cookie和Session的区别

答:Cookie:将数据保存在浏览器本地,并随每个请求发送到服务器。Session:在服务器端保存用户数据。

7、fail-fast与fail-safe机制有什么区别?

答:fail-fast(快速失败):当快速失败机制遍历一个集合时,如果集合内容被修改,ConcurentModificationexception异常将被抛出。

fail-safe(安全失败):对集合的任何修改都将在复制集合上进行,因此不会抛出异常。

8、介绍JSWDL开发包。JAXP、JAXM的解释。SOAP、UDDI、WSDL解释。

答:JAXP:(Java API for XML Parsing) 将DOM定义为Java, SAX, XSLT的通用接口。这样,只要您在程序中使用这些通用接口,当您需要更改具体实现时,您就不需要修改代码。

JAXM:(Java API for XML Messaging) API为SOAP通信提供访问方法和传输机制。

SOAP:即简单对象访问协议(Simple Object Access Protocol),它是一种轻量级协议,用于交换XML编码信息。

UDDI:UDDI的目的是为电子商务建立标准;UDDI是一套基于Web的分布式和Web 实现Service提供的信息注册中心的标准和规范,还包括一组企业可以提供自己的网络 Service注册,使其他企业能够找到访问协议的实现标准。

WSDL:是一种 XML 该格式用于将网络服务描述为一组端点,用于操作包含面向文档信息或面向过程信息的信息。该格式首先抽象描述了操作和信息,然后将其绑定到特定的网络协议和信息格式中,以定义端点。相关的具体端点被组合成抽象端点(服务)。

9、请简要介绍Servlet的生命周期及相关方法

答:实例阶段:服务器对实例化Servlet,调用Servlet的结构方法。

初始化阶段:服务器调用:Servletinit方法初始化(只在第一次请求时调用)。

请求处理阶段:服务器调用servlet的service方法,然后根据要求调用相应的doxx方法。

服务终止阶段:服务器调用Servletdestroy方法销毁Servlet实例。

15、如何确保N线程在不导致死锁的情况下访问N资源?

答:在使用多线程时,避免死锁的一个非常简单的方法是指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都以相同的顺序锁定和释放锁,就不会有死锁。

16、为什么在静态方法中调用非静态成员是非法的?

答:由于静态方法不能通过对象调用,因此在静态方法中,不能调用其他非静态变量,也不能访问非静态变量成员。

Java定义了一种无工作、无参数的结构方法。Java程序在实施子类结构方法之前,如果不使用super()来调用具体的父类结构方法,则将在父类中调用“无参数的结构方法”。因此,如果父类只定义有参数的结构方法,而子类的结构方法没有使用super()来调用父类的具体结构方法,则在编译过程中会出现错误,因为Java程序在父类中找不到没有参数的结构方法。解决办法是在父类中添加一种不做事、不参数的结构方法。

17、final, finally, finalize的区别。

答:(1)finall用于声明属性、方法和类别,分别表示属性不可变、方法不可覆盖、类别不可继承;(2)finally是异常语句结构的一部分,意味着它总是执行;(3)finalize是object类的一种方法,在实施垃圾收集器时会调用回收对象的方法,可以覆盖垃圾收集时的其他资源回收,例如关闭文件等。

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

答:实现多线程有两种方法,即继承实现Runnable接口的Thread类

实现同步有两种方法,即同步代码块和同步方法

19、线程的基本概念、线程的基本状态和状态之间的关系

答:线程是指能够在程序执行过程中执行程序代码的执行单位,每个程序至少有一个线程,即程序本身。Java中的线程有五种状态:新建、就绪、运行、阻塞和结束。

20、java序列化是什么,如何实现java序列化?

答:序列化是一种处理对象流的机制。所谓对象流,就是流化对象的内容。流化后的对象可以读写,也可以在网络之间传输。序列化是为了解决对象流读写操作中引起的问题。

实现序列化:实现需要序列化的类别没有必要实现Serializable接口,implements Serializable只是为了标记对象可以序列化,然后使用输出流构建ObjectoutputStream(对象流)对象,然后,使用Objectoutstream对象的writeobjectt(Object obj)该方法可以写出参数为obj的对象(即保存其状态),如果需要恢复,则使用输入流。

以上是经典的整理java开发笔试题,其实大家看了会发现都是很基础的题目,正是这些基础题目java

上一篇 Spring Boot使用JSP步骤
下一篇 Zuul网关作用有哪些

文章素材均来源于网络,如有侵权,请联系管理员删除。