Java热门笔试试题整理

小编为面试Java程序员的朋友们整理了2017非常热门的面试中的笔试试题,如果你是一个正在准备面试Java程序员的读者,赶快学习一下吧。

1,下列说法正确的是()

A.一个文件里可以同时存在两个public修饰的类

B.构造函数可以被重写(override)

C.子类不能访问父类非public和protected修饰的属性

D.final修饰的类可以被继承

答案:C

一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必须与之一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。至于main()不是必须要放在public类中才能运行程序。

重写是子类继承父类后对父类的方法进行修改。方法名,参数,返回值必须一样。 不能重写被标示为final的方法。如果不能继承一个方法,则不能重写这个方法。

扩展:重写override,重载overload的区别

java的方法重载

就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法,而且返回值类型可以相同也可以不相同,这也是面向对象的多态性。

java的方法重写

父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。

若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

子类函数的访问修饰权限不能少于父类的;

重写方法只能存在于具有继承关系中,重写方法只能重写父类非私有的方法。

2,for(int x=0,y=0;(y!=0)&&(x<4);x++)循环的执行次数是()

A.无限次

B.执行4次

C.执行3次

D.一次也不执行

答案:D

y初始值为0,在整个for循环中,y的值不变,故判断语句中的(y!=0)不成立,故一次也不执行。

3,关于 JAVA 堆,下面说法错误的是( )

A.所有类的实例和数组都是在堆上分配内存的

B.对象所占的堆内存是由自动内存管理系统回收

C.堆内存由存活和死亡的对象,空闲碎片区组成

D.数组是分配在栈中的

答案:D

首先数组是分配在堆中的,故D的说法不正确。

Java堆的结构:JVM的堆是运行时数据区,所有类的实例和数组都是在堆上分配内存。它在JVM启动的时候被创建。对象所占的堆内存是由自动内存管理系统也就是垃圾收集器回收。堆内存是由存活和死亡的对象组成的。存活的对象是应用可以访问的,不会被垃圾回收。死亡的对象是应用不可访问尚且还没有被垃圾收集器回收掉的对象。一直到垃圾收集器把这些对象回收掉之前,他们会一直占据堆内存空间。

4,在使用super 和this关键字时,以下描述正确的是()

A.在子类构造方法中使用super()显示调用父类的构造方法;

super()必须写在子类构造方法的第一行,否则编译不通过

B.super()和this()不一定要放在构造方法内第一行

C.this()和super()可以同时出现在一个构造函数中

D.this()和super()可以在static环境中使用,包括static方法和static语句块

答案:A

Java关键字this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this。

super关键和this作用类似,是被屏蔽的成员变量或者成员方法或变为可见,或者说用来引用被屏蔽的成员变量和成员成员方法。

不过super是用在子类中,目的是访问直接父类中被屏蔽的成员,注意是直接父类(就是类之上最近的超类)

5,下列语句哪一个正确()

A.Java程序经编译后会产生machine code

B.Java程序经编译后会产生byte code

C.Java程序经编译后会产生DLL

D.以上都不正确

答案:B

Java字节码是Java源文件编译产生的中间文件

java虚拟机是可运行java字节码的假想计算机 java的跨平台性也是相对与其他编程语言而言的 。

先介绍一下c语言的编译过程:c的文件经过C编译程序编译后生成windows可执行文件exe文件然后在windows中执行。

再介绍java的编译过程:java的文件由java编译程序将java字节码文件就是class文件在java虚拟机中执行。机器码是由CPU来执行的;Java编译后是字节码。

电脑只能运行机器码。Java在运行的时候把字节码变成机器码。C/C++在编译的时候直接编译成机器码

6,下列哪一种叙述是正确的()

A.abstract修饰符可修饰字段、方法和类

B.抽象方法的body部分必须用一对大括号{ }包住

C.声明抽象方法,大括号可有可无

D.声明抽象方法不可写出大括号

答案:D

abstract修饰符用来修饰类和成员方法

用abstract修饰的类表示抽象类,抽象类位于继承树的抽象层,抽象类不能被实例化。

用abstract修饰的方法表示抽象方法,抽象方法没有方法体。抽象方法用来描述系统具有什么功能,但不提供具体的实现。

Abstract是Java中的一个重要关键字,可以用来修饰一个类或者一个方法。

修饰一个方法时,表示该方法只有特征签名(signature),没有具体实现,而是把具体实现留给继承该类的子类,所以不能有大括号。

7,下列说法正确的有()

A.class中的constructor不可省略

B.constructor必须与class同名,但方法不能与class同名

C.constructor在一个对象被new时执行

D.一个class只能定义一个constructor

答案:C

这里可能会有误区,其实普通的类方法是可以和类名同名的,和构造方法唯一的区分就是,构造方法没有返回值。

8,GC线程是否为守护线程()

答案:是

线程分为守护线程和非守护线程(即用户线程)。

只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。

守护线程最典型的应用就是 GC (垃圾回收器)

9,关于sleep()和wait(),以下描述错误的一项是( )

A. sleep是线程类(Thread)的方法,wait是Object类的方法;

B. sleep不释放对象锁,wait放弃对象锁;

C. sleep暂停线程、但监控状态仍然保持,结束后会自动恢复;

D. wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态。

答案:D

sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。

wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

10,方法resume()负责恢复哪些线程的执行( )

A,通过调用stop()方法而停止的线程。

B,通过调用sleep()方法而停止的线程。

C,通过调用wait()方法而停止的线程。

D,通过调用suspend()方法而停止的线程。

答案:D

suspend可以挂起一个线程,就是把这个线程暂停了,它占着资源,但不运行,用resume是恢复挂起的线程,让这个线程继续执行下去。

(0)

相关推荐

  • 常见的java面试题

    本文主要为大家整理Java常见的面试题,供大家参考,具体内容如下 1.  Java中sleep和wait的区别 ① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类. sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep. ② 锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法. sleep不出让系统资

  • 50 道Java 线程面试题(经典)

    下面是 Java 线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个任务要 100 毫秒,那么用十个线程完成改任务只需 10 毫秒.Java 在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点.欲了解更多详细信息请点击这里. 2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很

  • Java常见数据结构面试题(带答案)

    1.栈和队列的共同特点是(只允许在端点处插入和删除元素) 4.栈通常采用的两种存储结构是(线性存储结构和链表存储结构) 5.下列关于栈的叙述正确的是(D)      A.栈是非线性结构B.栈是一种树状结构C.栈具有先进先出的特征D.栈有后进先出的特征 6.链表不具有的特点是(B)A.不必事先估计存储空间       B.可随机访问任一元素 C.插入删除不需要移动元素      D.所需空间与线性表长度成正比 7.用链表表示线性表的优点是(便于插入和删除操作) 8.在单链表中,增加头结点的目的是(

  • 值得收藏的2017年Java开发岗位面试题

    下面是我自己收集整理的2017年Java岗位的面试题,可以用它来好好准备面试. 一.Java基础 1. String类为什么是final的. 2. HashMap的源码,实现原理,底层结构. 3. 说说你知道的几个Java集合类:list.set.queue.map实现类咯... 4. 描述一下ArrayList和LinkedList各自实现和区别 5. Java中的队列都有哪些,有什么区别. 6. 反射中,Class.forName和classloader的区别 7. Java7.Java8的

  • Java main 方法面试题的详细整理

    Java main 方法面试题的详细整理 1.不用main方法如何定义一个类? 不行,没有main方法我们不能运行Java类. 在java 7之前,你可以通过使用静态初始化运行Java类.但是,从Java 7开始就行不通了. 2.main()方法需要的参数不是字符串数组? 不是的,main()方法的参数必须是字符串数组. 但是,在引进变参时,你可以将字符串类型的变参作为参数传递给main()方法.变参一定得是数组. package com.instanceofjava; public class

  • JAVA面试题之Forward与Redirect的区别详解

    前言 当用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的.根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect),那么这两种转发方式有何区别呢?本篇在回答该问题的同时全面的讲解两种请求转发方式的原理和区别. [关键考点] •请求转发的含义: •Forward转发请求的原理: •Redirect转发请求的原理. [考题分析] Forward和Redir

  • java 面试题闰年判断详解及实例

    java 闰年判断 前言: 给定一个年份,判断这一年是不是闰年. 当以下情况之一满足时,这一年是闰年: 1. 年份是4的倍数而不是100的倍数: 2. 年份是400的倍数. 其他的年份都不是闰年. 输入格式 输入包含一个整数y,表示当前的年份. 输出格式 输出一行,如果给定的年份是闰年,则输出yes,否则输出no. 说明:当试题指定你输出一个字符串作为结果(比如本题的yes或者no,你需要严格按照试题中给定的大小写,写错大小写将不得分. 样例输入 2013 样例输出 no 样例输入 2016 样

  • java面试题——详解HashMap和Hashtable 的区别

    一.HashMap 和Hashtable 的区别 我们先看2个类的定义 public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable public class HashMap extends AbstractMap implements Map, Cloneable, Serializable 可见Hashtable 继承自 Dictiionary 而 HashMap继承自Abs

  • Java面试题及答案集锦(基础题122道,代码题19道)

    Java基础面试题及答案集锦(基础题122道,代码题19道),具体详情如下所示: 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性

  • Java高级面试题小结

    这是一个高级Java面试系列题中的第一部分.这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题.接下来我们就看看具体都有哪些问题. 1.什么是可变参数? 2.断言的用途? 3.什么时候使用断言? 4.什么是垃圾回收? 5.用一个例子解释垃圾回收? 6.什么时候运行垃圾回收? 7.垃圾回收的最佳做法? 8.什么是初始化数据块? 9.什么是静态初始化器? 10.什么是实例初始化块? 11.什么是正则表达式? 12.什么是令牌化? 13.给出令牌化的例子? 14.

  • 阿里、华为、腾讯Java技术面试题精选

    阿里.华为.腾讯Java技术面试题精选,具体内容如下 JVM的类加载机制是什么?有哪些实现方式? 类加载机制: 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法去内,然后在堆区创建一个java.lang.Class对象,用来封装在方法区内的数据结构.类的加载最终是在堆区内的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载有三种方式: 1)命令行启动应用时候由JVM初始化加载 2)

  • 15个顶级Java多线程面试题(附答案)

    在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分.如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题.在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的.他们会问面试者很多令人混淆的Java线程问题.面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面.用于直接面向市场交易的高容量和低延时的电子交易系统在本质上是并发的.下面这些是我在不同时间不同地点喜欢问的Java线程问题.我没有提供答

  • java面试题之try中含return语句时代码的执行顺序详解

    前言 最近在刷java面试题偶然看到这类问题(try/finally中含有return时的执行顺序),觉得挺有意思于是小小的研究了一下,希望经过我添油加醋天马行空之后,能给你带来一定的帮助,下面来看看详细的介绍. 原题 try {} 里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行?什么时候被执行?在return前还是后? 乍一看题目很简单嘛,java规范都说了,finally会在try代码块的return之前执行,你这文章写得没意义,不看了 你等等!(

  • Java面试题之基本语法(图解)

    本文的主要内容包括在下图,下面来一起看看吧. 1.&和&&的区别 2.switch switch语句能否作用在byte,能否作用在long上,能否作用在String上,还能用在哪里? switch支持的类型是byte,short,char,int.本质上说,switch仅仅只能支持int类型.(byte,short,char,会自动提升为int类型),所以,switch不支持long类型 3.final 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变 4.&

  • Java面试题-实现复杂链表的复制代码分享

    阿里终面在线编程题,写出来与大家分享一下 有一个单向链表,每个节点都包含一个random指针,指向本链表中的某个节点或者为空,写一个深度拷贝函数,拷贝整个链表,包括random指针.尽可能考虑可能的异常情况. 算法如下: /* public class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; RandomListNode(int label) { this.labe

  • java 多态性详解及常见面试题

    java多态性 多态分两种: (1)   编译时多态(设计时多态):方法重载. (2)   运行时多态:JAVA运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态.(我们平时说得多的事运行时多态,所以多态主要也是指运行时多态) 运行时多态存在的三个必要条件: 一.要有继承(包括接口的实现): 二.要有重写: 三.父类引用指向子类对象. 多态的好处: 1.可替换性(substitutability).多态对已存在代码具有可替换性.例如,多态对圆Circle类工作,对其他任

  • Java编程基础测试题分享

    单选题:(每道题目2分) 1. 下列哪个声明是错误的?(B) A.  int i=10; B.  float f=1.1;     //float f=1.1f C.  double d=34.4; D.  byte b=127; long类型的数据加后缀L或者l float类型的数据加后缀F或者f 整数默认是int类型 浮点数默认是double类型 2. 下面哪个不是java中的关键字?(C) A. public B.  true C.  main D.  class 3. 下面程序哪个语句是

  • Java常用类String的面试题汇总(java面试题)

    1.比较两个字符串时使用"=="还是equals()方法? 当然是equals方法."=="测试的是两个对象的引用是否相同,而equals()比较的是两个字符串的值是否相等.简单来说,基本数据类型都可以使用==.而引用类型使用==比较不了. 2.如何将字符串转化成int? 使用包装类Integer.Integer.valueOf("2");其他基本数据类型都是类似 3.为什么在Java中存储密码要使用char[],而不使用String. 因为St

随机推荐