综合性18道面试官必问经典Java面试题!

线程的概念

在这里插入图片描述

线程进程区别

在这里插入图片描述

在Java中如何实现线程

在这里插入图片描述

我们应该是使用Runnable还是Thread?

在这里插入图片描述

Thread类的start()和run()方法的区别

start()方法会创建新的线程并启动该线程,所以该方法会调用其他native方法,而run()方法就是:

正常的Java方法调用,即在原来的线程中执行java代码。

Java中Runnable和Callable的区别

Runnable和Callable都代表要线程中执行的任务。Runnable是JDK1.0加入的,而Callable确实是在JDK1.5加入的。

区别:Callable的 call() 方法可以返回值和抛出异常,
在这里插入图片描述
而Runnable的run()方法不能返回值也不能抛出异常。

Callable是需要使用java.util.concurrent.ExecutorService.submit(Callable)方法提交的,这样就可以获得Future对象,该对象可以装载了Callable接口的call()方法的返回结果。

Java中CyclicBarrier和CountDownLatch的区别

在这里插入图片描述

简述Java内存模型

Java内存模型包含了一系列的规则和指导原则。

Java语言是跨平台的,Java的内存模型确保了Java在不同的操作系统、CPU、内存架构上有确定的行为,特别是在多线程的情况下,一个线程所做的变动对其他线程是否可见是很重要的,这叫做先行发生关系:
在这里插入图片描述

Java中的volatile变量有什么特点

在这里插入图片描述

线程安全的概念,Vector是否是线程安全类?

在这里插入图片描述

静态条件的概念

在这里插入图片描述

Java停止线程的方法

在这里插入图片描述

线程发生异常的结果

在这里插入图片描述

如何在线程之间共享数据

共享对象(类的静态变量或类的实例变量)

也可以使用阻塞队列等并发的集合。

notify和notifyAll的区别
在这里插入图片描述

wait,notify和notifyAll是Object类的方法的原因

在这里插入图片描述

ThreadLocal变量含义(线程局部变量)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
6、Java源程序在转换为机器语言执行过程中既有编译也有解释。 ( ) 7、// 是java的多行注释符。 ( ) 面向对象 3.Java 仅支持类间的单重继承。 ( ) 17.方法可以没有返回值,或有一个返回值,也可以有多个返回值。( ) 5.一个类的定义包括定义类头和定义类体两个部分。( ) 7.类的私有属性和私有方法可以被其子类访问。( ) 13.子类不能继承父类的构造函数。( ) 14.重载的方法可以通过它们的返回值类型的不同来区分。( ) 16.在 Applet 的坐标系中,(0,0) 代表输出窗口左上角的象素点。( ) 18.构造函数的方法名可由编程人员任意命名。( ) 19.构造函数能继承,也能被重载。( ) 20.类的构造函数名必须和类名相同。( ) 1、Java中所有的类都是java.lang.Object类的直接或间接子类。 ( ) 5、只有抽象类或接口中才能包含抽象方法。 ( ) 9、两个类同在一个包中,那么在一个类可以访问另一个类的private成员变量。 ( ) 10、方法形式参数的作用域是该方法的方法体。 ( ) 8、两个类同在一个包中,那么在一个类可以访问另一个类的private成员变量。( ) 10、方法形式参数的作用域是该方法的方法体。 ( ) 1、String abc[ ];是合法的Java语句。 ( ) 2、在Java里,允许多重继承。 ( ) 3、在Java语言里,do-while语句是先执行循环体,然后再判断的循环条件。 ( ) 4、只有抽象类或接口中才能包含抽象方法。       ( ) 其他 8、StringBuffer类的对象包含的字符串不可以被修改。 ( ) 8.字符串 ”\’a\’” 的长度是5。( ) 9.Java 支持多线程机制。( ) 填空题 17.Java中的的字符使用( )编码unicode 18. 在Java语言中,将源代码翻译成____________时产生的错误称为编译错误,而将程序在运行中产生的错误称为运行错误。字节码 13. Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为哪两种具体类型,各占二进制的多少位? 16.字符串 ”\’a\’” 的长度是( )3 13. float 32位、double 64位 24.表达式2*5/2.5、1.0/2*5、1/2*3、5/3的计算结果分别是_________。 25.当整型变量n的值不能被13除尽时,其值为 false 的Java语言表达式是_______ 。 26.执行以下程序段后:x = ________, y = ________ 。 int x = 5, y=5; y = ++x * - -y; 29. 关系运算的运算结果应是( )类型 30. 逻辑运算的运算对象应是( )类型,运算结果应是( )类型 33.下面的语句是声明一个逻辑变量并赋值,请将它补充完整: ______ b1=5!=6; 逻辑变量b1的取值是______。 34.下面的语句是声明某类型变量s,并通过三目条件运算符的结果给变量s赋值,请将该语句补充完整,s的初值是什么? ______ s=(9999%2= =1) ? ”奇数” : ”偶数”; 24. 4.0; 2.5; 0; 1 25. (n%13= =0 26. 6 ;24 29. boolean型30. boolean型;boolean型 31. 略 33. boolean true 34. String ”奇数” 18.阅读下面的程序段,回答问题。 if ( x < 5 ) System.out.print(" one "); else { if ( y < 5 ) System.out.print(" two "); else System.out.println(" three "); } 问题: 1)若执行前 x=6, y=8,该程序段输出是什么? 2)若执行前 x=1, y=8,该程序段输出是什么? 18. 1)three 2)one 25.下面是一个java应用程序(Application),它的功能是在屏幕上输出26个小写英文字母,其中每个字母相隔一个制表符,请完成程序填空。 public _____ Class1 { public static void main( String args[] ) { char c='a'; for (int i=1;i<=26;i++) { System.out.print(______); } } } 26.下面是一个java应用程序(Application),它的功能是计算 s=1+2+3+...+10 ,请完成程序填空。 public _____ Class1 { public static void main( String args[] ) { int s=0; for (int i=1;i<=10;i++) { s+=______; } System.out.println("s="+s); } } 27.下面是一个java Application 的主类的定义,其功能是输出乘法口诀表第一列,请完成程序填空。 import java.io.*; public class MyClass { public static void main(String[] args) { int j=1; for(int i=1; _______; i++) { System.out.println(i+"*"+j+"="+_______); } } } 25. class (c++)+"\t" 26. class i 27. i<=9 j*i 1.结构化程序设计的三种基本流程控制结构是:_______、_______、________。 10.下面程序的功能是求2 到100 之间的素数,请将程序补充完整。 public class Class1 { public static void main( String args[] ) { Label1: for(int i=2;i<100;i++) { for(int j=2;j<i;j++) { if( i%j==_____) _________; } System.out.print(i+"\t"); } } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值