动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

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

09-04 17:30 272浏览
举报 T字号
  • 大字
  • 中字
  • 小字

最近的天气逐渐凉爽,没有了夏日的燥热,好像大家更能沉下心来学习了。知道不少的朋友们在准备着校招,也有正在岗位的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:普通用户而只需要安装JRE(Java Runtime Environment)来运行java程序。而程序开发者必须安装JDK来编译、调试程序。

5、Java应用程序与小程序之间有那些差别?

答:简单说应用程序是从主线程启动(也就是main()方法)。applet小程序没有main方法,主要是嵌在浏览器页面上运行(调用init()线程或者run()来启动),嵌入浏览器这点跟flash的小游戏类似。

6、Cookie和Session的区别

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

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

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

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

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

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

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

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

UDDI:UDDI的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。    

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

9、请简述Servlet的生命周期及其相关的方法

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

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

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

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

10、请简述一下Ajax的原理及实现步骤

答:Ajax 即“Asynchronous Javascript And XML”(异步JavaScript XML),通过在后台与服务器进行少量数据交换,可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。  

原理:HTTP协议的异步通信。

实现步骤:创建一个XMLHttpRequest对象;调用该对象的open方法;设置回调函数。

11、volatile关键字是否能保证线程安全?

答:不能。volatile关键字用在多线程同步中,可保证读取的可见性,JVM只是保证从主内存加载到线程工作内存的值是最新的读取值,而非cache中。但多个线程对volatile的写操作,无法保证线程安全。例如假如线程1,线程2 在进行read,load 操作中,发现主内存中count的值都是5,那么都会加载这个最新的值,在线程1堆count进行修改之后,会write到主内存中,主内存中的count变量就会变为6;线程2由于已经进行read,load操作,在进行运算之后,也会更新主内存count的变量值为6;导致两个线程及时用volatile关键字修改之后,还是会存在并发的情况。

12、Java集合类框架的基本接口有哪些?

答:Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有:

Collection:代表一组对象,每一个对象都是它的子元素。

Set:不包含重复元素的Collection。

List:有顺序的collection,并且可以包含重复元素。

Map:可以把键(key)映射到值(value)的对象,键不能重复。

13、数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?

答:下面列出了Array和ArrayList的不同点:(1)Array可以包含基本类型和对象类型,ArrayList只能包含对象类型;(2)Array大小是固定的,ArrayList的大小是动态变化的;(3)ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。

对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。

14、HashMap和Hashtable有什么区别?

答:HashMap和Hashtable都实现了Map接口,因此很多特性非常相似。但是,他们有以下不同点:(1)HashMap允许键和值是null,而Hashtable不允许键或者值是null。(2)Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。(3)HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration),一般认为Hashtable是一个遗留的类。

15、如何确保N个线程可以访问N个资源同时又不导致死锁?

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

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

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

Java中定义一个不做事且没有参数的构造方法的作用。Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。

17、final, finally, finalize的区别。

答:(1)final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承;(2)finally是异常处理语句结构的一部分,表示总是执行;(3)finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。

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

答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

同步的实现方面有两种,分别是同步代码块和同步方法

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

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

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

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

序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

上面就是整理的经典java开发笔试题,其实大家看了会发现都是很基础的题目,正是这些基础的java才是各大互联网公司在面试时想考察的,所以希望大家可以对java基础知识重视起来,有一个扎实的java基础,是顺利通过面试和进入大厂的第一步。

0人推荐
共同学习,写下你的评论
0条评论
拉乌迷
程序员拉乌迷

6篇文章贡献26041字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消