面试题

1.下列单词属于java访问修饰符的有(A,B, C

A.public

B.private

C.friendly

D.transient

E.String

2.下列命令中,属于java命令的是(A,B , C

A.javac

B.java

C.Javadoc

D.Jar

E.Dir

3.下列方法哪一个属于Thread类(B

A.main()

B.sleep(long mesc)

C.go()

D.finally()


解析:

1:

Java的访问修饰符有:

Public 可以从所有类继续进行访问

Protected 可以被同包中的类访问,可以被子类进行访问,子类不在同包也可访问。

Private 只能够被当前类进行访问

Friendly 可以被同包中的所有类访问,若子类不在同包,则无法访问。

Java的修饰符有:

Static 静态方法,无需创建类的实例就可使用。

Final 防止任何子类重载该方法,可以同static一起使用,避免对类的每个实例维护一个拷贝. 可以来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。

Abstract 抽象类或方法。 抽象方法:类中已声明而没有实现的方法,不能将static方法、final方法或者类的构造器方法声明为abstract。

Native 方法修饰符,Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。因为在外部实现了方法,所以在java代码中,就不需要声明了,有点类似于接口方法。Native可以和其他一些修饰符连用,但是abstract方法和Interface方法不能用native来修饰。

Synchronized 多线程的支持,当一个此方法被调用时,没有其它线程能够调用该方法,其它的synchronized方法也不能调用该方法,直到该方法返回。

2:

Java

Javac.exe 编译Java程序,生成.class文件。 Javadoc 功能说明JavaAPI文档生成器从Java源文件生成API文档HTML页。Javadoc解析Java源文件中的声明和文档注释,并产生相应的HTML页缺省),描述公有类、保护类、内部类、接口、构造函数、方法和域。在实现时,Javadoc要求且依赖于java编译器完成其工作。Javadoc调用部分

javac 编译声明部分,忽略成员实现。它建立类的内容丰富的内部表示,包括类层次和”使用”关系,然后从中生成HTML。Javadoc还从源代码的文

档注释中获得用户提供的文档。当Javadoc建立其内部文档结构时,它将加载所有引用的类。

Javaw 用来执行图形界面的java程序运行java命令时,会出现并保持一个console窗口,程序中的信息可以通过System.out在console内输出,而运行javaw,开始时会出现console,当主程序调用之后,console就会消失; javaw 大多用来运行GUI程序 Javah C 头文件和 Stub 文件生成器。

javah 从 Java 类生成 C 头文件和C 源文件。这些文件提供了连接胶合,使 Java 和 C 代码可进行交互。 Javap Java 类文件解析器。

3:

Java线程:Thread类的方法 常用方法:

static Thread currentThread() 返回对当前正在执行的线程对象的引用。

long getId()返回该线程的标识符。

String getName()返回该线程的名称。

int getPriority() 返回线程的优先级。

void interrupt() 中断线程。

boolean isAlive()测试线程是否处于活动状态。

void join()等待该线程终止。

void join(long millis)等待该线程终止的时间最长为 millis 毫秒。

void join(long millis, int

nanos)等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。

void setDaemon(boolean on)将该线程标记为守护线程或用户线程。

void setPriority(int newPriority)更改线程的优先级。

static void sleep(long millis)在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

static void sleep(long millis, int nanos)在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。

static void yield()暂停当前正在执行的线程对象,并执行其他线程。

其中:

Join:

当某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join()方法加入的join线程执行完为止。

Sleep-线程睡眠

如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用Thread类的静态sleep()方法来实现。

当当前线程调用sleep()方法进入阻塞状态后,在其睡眠时间内,该线程不会获得执行机会,即使系统中没有其他可执行线程,处于sleep()中的线程也不会执行,因此sleep()方法常用来暂停程序的执行。

Yiedld-线程让步

yield()方法和sleep()方法有点相似,它也是Thread类提供的一个静态方法,它也可以让当前正在执行的线程暂停,但它不会阻塞该线程,它只是将该线程转入到就绪状态。即让当前线程暂停一下,让系统的线程调度器重新调度一次,完全可能的情况是:当某个线程调用了yield()方法暂停之后,线程调度器又将其调度出来重新执行。

实际上,当某个线程调用了yield()方法之后,只有优先级与当前线程相同或者比当前线程更高的处于就绪状态的线程才会获得执行机会。

sleep()与yield()方法区别:

1、sleep()方法暂停当前线程后,会给其他线程执行机会,不会理会其他线程的优先级;但yield()方法只会给优先级高或者相同的线程机会

2、sleep()方法会将线程转入到阻塞状态,知道经过阻塞时间才会转入就绪状态;而yield()不会将线程转入阻塞状态,它只是强制当前线程进入就绪状态。因此完全有可能某个线程调用了yield()方法暂停之后,立即再次获取处理器资源被执行。

3、sleep()方法声明抛出InterruptedException异常,所以嗲用sleep()方法时要么捕捉该异常,要么显示声明抛出该异常;而yield()方法则没有声明抛出任何异常。

4、sleep()方法比yield()方法更好的可移植性,通常不建议使用yield()方法来控制并发线程执行。

isAlive

判断线程是否处于活动状态。

线程的优先级:

线程的优先级用数字表示,范围从1到10,默认的是为5 。

终止线程:

有三种方法可以使终止线程。

  1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。
  2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。
  3. 使用interrupt方法中断线程。

Java面试题及解析的更多相关文章

  1. 转载文章 208 个最常见 Java 面试题全解析

    最近正值春招,一直在给公司招聘 Java 程序员,我从 2015 年做 TeamLeader 开始就习惯性地收集平时遇到的 Java 技术问题或周围朋友见过的面试题,经过不断筛选,终于凝练成一套实用的 ...

  2. Java面试题及解析(判断题)

    1.代码差错,判断代码对错,并指出错误处 abstract class Name{ private String name; public abstract Boolean isStupidName( ...

  3. 100+经典Java面试题及答案解析

    面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...

  4. Java 虚拟机面试题全面解析(干货)

    Java 虚拟机面试题全面解析(干货) JDK 是什么 JRE 是什么 Java历史版本的特性 Java Version SE 50 Java Version SE 6 Java Version SE ...

  5. 100多道经典的JAVA面试题及答案解析

    面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...

  6. 509道Java面试题解析:2020年最新Java面试题

    <Java面试全解析>是我在 GitChat 发布的一门电子书,全书总共有 15 万字和 505 道 Java 面试题解析,目前来说应该是最实用和最全的 Java 面试题解析了. 我本人是 ...

  7. 2019年 Java 面试题解析

    2019年 Java 面试题解析 转载地址:https://www.cnblogs.com/Zz-maker/p/11193930.html 作者: Zz_maker 包含的模块: 本文分为十九个模块 ...

  8. 一道关于java 类初始化 成员初始化的笔试题的解析

    代码如下: java笔试题public class Mapplication { private static int n; private static Mapplication m1 = new ...

  9. 2020最常见的200+Java面试题汇总(含答案解析)

    前言 2020年快要结束了,很多朋友问题,有没有整理今年的一些面试题,最近抽时间整理了一份Java面试题.或许这份面试题还不足以囊括所有 Java 问题,但有了它,我相信足以应对目前市面上绝大部分的 ...

随机推荐

  1. Java学习日报7.13

    /** * *//** * @author 86152 * */package Employee;import java.util.Scanner;public class Employee{ pri ...

  2. KafkaProducer 简析

    使用方式 KafkaProducer 发送消息主要有以下 3 种方式: Properties properties = new Properties(); properties.setProperty ...

  3. js相关语法知识

    alert(); 页面弹窗 <input plactholder="请输入密码"/>(隐藏字体效果)js对数据类型不敏感,与Java相似1.js变量定义符:var2.j ...

  4. rocketmq部署架构

    1 技术架构 RocketMQ架构上主要分为四部分,如上图所示: Producer:消息发布的角色,支持分布式集群方式部署.Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息 ...

  5. Pytest测试框架(三):pytest fixture 用法

    xUnit style 结构的 fixture用于初始化测试函数, pytest fixture是对传统的 xUnit 架构的setup/teardown功能的改进.pytest fixture为测试 ...

  6. C#中的格式

    格式模式 说明 : d 月中的某一天.一位数的日期没有前导零. dd 月中的某一天.一位数的日期有一个前导零. ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义. ddd ...

  7. 什么时候使用Get请求/POST请求?

    当请求无副作用时(如进行搜索),便可使用GET方法:当请求有副作用时(如添加数据行),则用POST方法. 一个比较实际的问题是:GET方法可能会产生很长的URL,或许会超过某些浏览器与服务器对URL长 ...

  8. 工具用的好,下班回家早!5分钟玩转iTerm2!

    同时打开多个终端窗口,来回切换太麻烦! 能不能像IDEA一样,能够查看历史粘贴记录? 有没有办法一键登陆服务器? 工欲善其事,必先利其器!无论工作还是学习,选择好用的工具真的太重要了.今天就给大家介绍 ...

  9. 在Windows中安装MongoDB--图文并茂

    在Windows环境下安装MongoDB的方法 (1)下载MongoDB Windows版: 进入MongoDB官网 (2)设置数据文件和日志文件的存放目录: 打开刚刚安装MongoDB的目录咋bin ...

  10. LeetCode-P53题解【动态规划】

    本文为原创,转载请注明:http://www.cnblogs.com/kylewilson/ 题目出处: https://leetcode.com/problems/maximum-subarray/ ...