杨老师课堂之JavaSe 部分面试题
Java基础面试题
- Java基础面试题
- 1.简述 path 和 classpath 的区别
- 2.请说说你对 JVM 的理解
- 3.char 型变量中能不能存贮一个中文汉字?请说出理由
- 4.简述 break、continue 和 return 语句的区别。
- 5.请简述方法重写和方法重载的区别?
- 6.请简述 Error 和 Exception 有什么区别?
- 7.请简述 synchronized 和 java.util.concurrent.locks.Lock 的异同点
- 8.进程和线程之间有什么不同
- 9.请简述装箱和拆箱的概念。
- 10.请简述 Hashtable 和 HashMap 的区别。
- 11.请简述使用泛型的优点。
- 12.简述 TCP/IP 协议的层次结构
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 协议等。
作者: 杨校
出处: https://blog.csdn.net/kese7952
分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(397583050@qq.com)咨询。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
浏览器前端优化
优化全都是与速度和满意度有关。 从用户体验的角度,我们希望前端提供可以快速加载和执行的网页。 而从开发者体验的角度,我们希望前端是快速、简单而规范的。 这不仅会给我们带来快乐的用户和快乐的开发者,而且由于 Google 偏向于优化,SEO 排名也会显著提高。 如果你已经花费了大量时间来改善你网站的Google Pagespeed Insights分数,那么这将有助于揭示这一切实际上意味着什么,以及我们必须为优化前端所采取的大量策略。 背景 最近我的整个团队有机会花一些时间加快把我们提出的升级变为代码库,可能是用 React。这确实让我思考起了我们该如何创建前端。很快,我意识到浏览器将是我们的方法中的一个重要因素,同时也是我们知识中的大瓶颈。 方法 首先 我们不能控制浏览器或者改变它的行为方式,但是我们可以理解它的工作原理,这样就可以优化我们提供的负载。 幸运的是,浏览器行为的基础原理是相当稳定而且文档齐全的,并且在相当长一段时间内肯定不会发生显著变化。 所以这至少给了我们一个目标。 其次 另一方面,代码、技术栈、架构和模式是我们可以控制的东西。它们更灵活,变化的更快,并给我们这一边提供...
- 下一篇
JavaScript 作用域链 难不难?
介绍 在变量对象中已经介绍过,执行上下文(变量,函数声明和函数形式参数)的数据被存储为变量对象的属性 此外,我们知道每次进入上下文时都会创建变量对象并填充初始值,并且它的更新发生在代码执行阶段 举个栗子 function test(a, b) { console.log(c); // function c() {} var c = 10; function c() {}; console.log(c); // 10 c = 1; console.log(c); // 1 var e = function _e() {}; (function x() {}); } test(10); 这次我们讨论作用域链 Scope Chain 定义 如果要简要说明,作用域链主要与内部函数有关 正如我们所知,ECMAScript允许创建内部函数,我们甚至可以从父函数返回这些内部函数 var x = 10; function foo() { var y = 20; function bar() { alert(x + y); } return bar; } foo()(); // 30 众所周知,每个上下...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路