java笔试一SE基础知识(1)

​​​写在前面的话:

         面试题总结   多看,多记忆

          总结要全面,答案分条

 

 

 

  1. 1.Java 是如何实现跨平台的?

    答:

        1.我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件。

       2.Java 虚拟机(JVM)是负责将字节码文件翻译成特定平台下的机器码然后运行,也就是说,只要在不同平台上安装对应的 JVM,就可以运行字节码文件,运行我们编写的 Java 程序。

       3.这个过程,我们编写的 Java 程序没有做任何改变,仅仅是通过 JVM 这一 “中间层” ,就能在不同平台上运行,真正实现了 “一次编译,到处运行” 的目的

    2.什么是 JVM

    答:

    JVM,即 Java Virtual Machine,Java 虚拟机。它通过模拟一个计算机来达到一个计算机所具有的的计算功能。JVM 能够跨计算机体系结构来执行 Java 字节码,主要是由于 JVM 屏蔽了与各个计算机平台相关的软件或者硬件之间的差异,使得与平台相关的耦合统一由 JVM 提供者来实现。

    3.JVM 由哪些部分组成?

    答:JVM 的结构基本上由 4 部分组成:

                 1.类加载器,在 JVM 启动时或者类运行时将需要的 class 加载到 JVM 中

                 2.执行引擎,执行引擎的任务是负责执行 class 文件中包含的字节码指令,相当于实际机器上的 CPU

                 3.内存区,将内存划分成若干个区以模拟实际机器上的存储、记录和调度功能模块,如实际机器上的各种功能的寄存器或者 PC 指针的记录器等

               4.本地方法调用,调用 C 或 C++ 实现的本地方法的代码返回结果

    4.什么是类加载器

    答:   1.类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。

             2.一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。

             3.  类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的 newInstance()方法就可以创建出该类的一个对象。

             4.实际的情况可能更加复杂,比如 Java 字节代码可能是通过工具动态生成的,也可能是通过网络下载的。

    5.synchronized关键子的底层实现原理

    答:

           1.进入时,执行 monitorenter,将计数器 +1,释放锁 monitorexit 时,计数器-1;

           2.当一个线程判断到计数器为 0 时,则当前锁空闲,可以占用;反之,当前线程进入等待状态。

    6.monitor机制,该关键字是一个几种锁的封装。

      答:  1.Synchronized 是在加锁,加对象锁。对象锁是一种重量锁(monitor)

             2.synchronized 的锁机制会根据线程竞争情况在运行时会有偏向锁(单一线程)、轻量锁(多个线程访问 synchronized 区域)、对象锁(重量锁,多个线程存在竞争的情况)、自旋锁等。

    6.介绍一下Volatitle关键字

    答:  该关键字可以保证可见性不保证原子性。

    功能:主内存和工作内存,直接与主内存产生交互,进行读写操作,保证可见性;

                 禁止 JVM 进行的指令重排序。

    7.sleep( ) 和 wait( n)、wait( ) 的区别?

    答:    1.sleep 方法: 是 Thread 类的静态方法,当前线程将睡眠 n 毫秒,线程进入阻塞状态。当睡眠时间到了,会解除阻塞,进行可运行状态,等待 CPU 的到来。睡眠不释放锁(如果有的话);

            2.wait 方法: 是 Object 的方法,必须与 synchronized 关键字一起使用,线程进入阻塞状态,当 notify 或者 notifyall 被调用后,会解除阻塞。但是,只有重新占用互斥锁之后才会进入可运行状态。睡眠时,释放互斥锁

     

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值