您现在的位置是:首页 > 文章详情

杨老师课堂之JavaSe 部分面试题

日期:2018-05-31点击:413
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/80535100

Java基础面试题

1.简述 path 和 classpath 的区别

  • path:path 环境变量是系统环境变量中的一种,它用于保存一系列可执行文件的路径, 每个路径之间以分号分隔。当在命令行窗口运行一个可执行文件时,操作系统首先会在当前 目录下查找是否存在该文件,如果不存在会继续在 path 环境变量中定义的路径下去寻找这 个文件,如果仍未找到,系统会报错。

  • classpath:classpath 环境变量也是系统环境变量中的一种,它用于保存一系列类(.class) 文件的路径。当 Java 虚拟机需要运行一个类时,会先在 classpath 环境变量中所定义的路径 下去寻找所需的 class 文件。如果 classpath 的路径最后有分号,则在 classpath 中找不到时, 再到当前路径查找;如果最后无分号,则只在 classpath 设置的路径中查找。

2.请说说你对 JVM 的理解

​ JVM 是 JavaVirtual Machine 的缩写,全称是 Java 虚拟机。Java 语言的一个非常重要的 特性就是跨平台性,而 Java 虚拟机是实现这一特性的关键。不同的操作系统需要使用不同 版本的虚拟机,这种方式使得 Java 语言能够“一次编写,到处运行”。Java 语言编译程序只 需生成在 Java 虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。 Java 虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

3.char 型变量中能不能存贮一个中文汉字?请说出理由

​ char 型变量中能不能存贮一个中文汉字?请说出理由。 char 型变量是用来存储 Unicode 编码的字符的, Unicode 编码字符集中包含了汉字,所以,char 型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在 Unicode 编码 字符集中,那么,这个 char 型变量中就不能存储这个特殊汉字。补充说明:Unicode 编码占 用两个字节,所以 char 类型的变量也是占用两个字节。

4.简述 break、continue 和 return 语句的区别。

  • break 语句:在 switch 条件语句和循环语句中都可以使用 break 语句。当它出现在 switch 条件语句中时,作用是终止某个 case 并跳出 switch 结构。当它出现在循环语句中,作用是 跳出循环语句,执行后面的代码
  • continue 语句:continue 语句用在循环语句中,它的作用是终止本次循环,执行下一次循 环。
  • return 语句:return 语句可以用于从当前的方法中退出,返回到该调用的方法的语句处, 继续执行。return 返回一个值给调用该方法的语句,返回值的数据类型必须与方法的声明中 的返回值的类型一致。

5.请简述方法重写和方法重载的区别?

  • 方法重写(Overriding)和方法重载(Overloading)是 Java 多态性的不同表现。
  • 重写 Overriding 是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一 种表现。 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。
  • 子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义 如同被“屏蔽”了。 如果在同一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类 型,则称为方法的重载(Overloading)

6.请简述 Error 和 Exception 有什么区别?

  • Error 表示恢复不是不可能但很困难的情况下的一种严重问题,比如说内存溢出,仅靠修 改程序本身是不能处理这样的情况的。
  • Exception 表示程序本身可以处理的错误,在开发 Java 程序中进行的异常处理,都是针 对 Excption 类及其子类。在 Exception 类的众多子类中有一个特殊的 RuntimeException 类, 该类及其子类用于表示运行时异常,除了此类,Exception 类下所有其它的子类都用于表示 编译时异常。

7.请简述 synchronized 和 java.util.concurrent.locks.Lock 的异同点

  • 相同点:Lock 能完成 synchronized 所实现的所有功能。
  • 不同点:总的来说,Lock 更加灵活。Lock 有比 synchronized 更精确的线程予以和更好的 性能。synchronized 会自动释放锁,但是 Lock 一定要求程序员手工释放,并且必须在 finally 从句中释放。synchronized 修饰方法时表示同一个对象在不同的线程中表现为同步队列。如 果实例化不同的对象 那么 synchronized 就不会出现同步效果了。

8.进程和线程之间有什么不同

  • 在一个操作系统中,每个独立执行的程序都可以称为一个进程,也就是“正在运行的程 序”。而在进程中还可以有多个执行单元同时执行,这些执行单元可以看作程序执行的一条 条线索,被称为线程。
  • Java 运行环境是一个包含了不同的类和程序的单一进程。线程可以被 称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源。

9.请简述装箱和拆箱的概念。

​ 包装类和基本数据类型在进行转换时,引入了装箱和拆箱的概念,其中装箱是指将基本 数据类型的值转为引用数据类型,反之,拆箱是指将引用数据类型的对象转为基本数据类型。

10.请简述 Hashtable 和 HashMap 的区别。

​ Hashtable 继承自 Dictionary 类,而 HashMap 是 Java1.2 引进的 Map 接口的一个实现 HashMap允许将null作为一个entry的key或者value,而Hashtable不允许还有就是, HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。

​ 最大的不同是, Hashtable 的方法是线程安全的,而 HashMap 不是,在多个线程访问 Hashtable 时,不需要 自己为它的方法实现同步,而 HashMap 就必须为之提供外同步。

11.请简述使用泛型的优点。

(1)提高了 Java 程序的类型安全,在编译时期解决错误,避免程序在运行时期发生错 误。

(2)消除强制类型转换。

(3)泛型可以替代 Object 类型的参数和变量的使用,带来性 能的大幅提高并增加代码的可读性。

12.简述 TCP/IP 协议的层次结构

​ TCP/IP 协议的层次结构比较简单,共分为四层,分别是应用层、传输层、网络层和链 路层。其中链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如 针对光纤、双绞线提供的驱动。

​ 网络层是整个 TCP/IP 协议的核心,它主要用于将传输的数 据进行分组,将分组数据发送到目标计算机或者网络。运输层主要使网络程序进行通信,在 进行网络通信时,可以采用 TCP 协议,也可以采用 UDP 协议。应用层主要负责应用程序的 协议,例如 HTTP 协议、FTP 协议等。

image
作者: 杨校

出处: https://blog.csdn.net/kese7952

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询。

原文链接:https://yq.aliyun.com/articles/675145
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章