3.2 编程语言语法和特性(Java)

【考点讲解】

作为软件行业的从业者,我们每天都会和代码打交道,而测试岗看似在测试软件的功能,但其实本质上都是对代码进行测试。
假如没有一点编程基础,自然就看不懂代码,只能测试软件的外在功能,但这样的测试往往都是非常片面的。很多时候,缺陷并没有浮于表面,而是等遇到一定的条件才会显露出来,如果我们能够知道代码逻辑,就能够使得测试用例覆盖得更加全面,增大发现隐藏Bug的可能性。
学习编程的另一大好处就是,我们能够通过自己写一些程序,辅助我们进行测试,比如:自动化测试工具、测试平台等等。

目前几乎所有的测试岗位,都要求至少掌握一门以上的编程语言,这里推荐学习Java和Python,因为Java目前是主流的Web开发语言,通用性较高,不仅可以用在后端开发,还可以运用在大数据及移动端的开发上,而且语法较为完善,学完Java再去学习其他编程语言,会发现有很多想通的地方,上手更快。而Python是流行度很高但学习成本又比较低的语言,深受测试和运维人员的喜爱。
但笔者比较建议大家优先选择Java作为第一语言,因为Java是主流的Web开发语言,通用性强,可以用来做大数据、后端开发、移动端开发、测试和运维等等领域,受到很多公司的青睐。其次就是Java优秀的编程思想和语法特性甚至被其他编程语言广泛借鉴,只要你把Java学通,你很容易上手其他的编程语言。另外,Java的生态很成熟,网络上有很多资料可以学习,遇到问题也比较容易在网上搜索出答案。最后值得注意的是,我们在学习Java的过程中,不会像其他语言一样,被语言本身版本的兼容性所困扰,因为现在至少在中国的互联网环境下,Java 8(即JDK1.8)还是主流的,所以我们在学习过程中,重点学习 Java 8 即可。

面试中遇到编程语言相关的面试题,主要会从语言本身的语法和特性去考察,有时候还会考察编程语言的使用场景,相比于其他编程语言的优缺点,与该编程语言相关的一些热门框架的知识点等等。
下面列举的考点均为 Java 相关:
  • Java 语言基础
  • Java 数据类型
  • Java 集合类型
  • Java 反射
  • Java 泛型
  • Java 语法特性
  • Java 面向对象

【例题示例】

3.2.1 JVM、JRE 和 JDK 的区别?【Java】

【考点映射】
  • Java 语言基础
【出现频度】★★★★☆
【难度】☆

【参考答案】
JVM (Java Virtual Machine) :即运行 Java 字节码的虚拟机。它能识别Java源码编译后的字节码文件(即 .class 文件),能够将 .class 文件中的字节码指令进行识别并执行。JVM 能够针对不同系统(Windows,Linux,macOS)却有特定的实现,也就是使用相同的字节码,它们都会给出相同的结果,所以说,jvm 是 Java 能够跨平台的关键。
下图是Java源码从编译到执行的过程:
JRE (Java Runtime Environment) :即 Java 运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序。
JDK (Java Development Kit) :Java 开发工具包。jdk 是整个 Java 开发的核心,拥有 JRE 所拥有的一切,还有编译器(javac)和其他实用工具(如 javadoc 和 jdb)。它能够创建和编译程序。


3.2.2 Java 中有哪些常见的关键字?【Java】

【考点映射】
  • Java 语法特性
【出现频度】★★☆
【难度】★☆

【参考答案】
常见的Java关键字如下图所示:


3.2.3 Java中 == 和 equals 的区别在哪里?【Java】

【考点映射】
  • Java 语法特性
【出现频度】★★★★
【难度】★★☆
【参考答案】
== : 它的作用是判断两个对象的地址是不是相等。即判断两个对象是不是同一个对象。(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)。
equals() : 它的作用也是判断两个对象是否相等,它不能用于比较基本数据类型的变量。equals()方法存在于Object类中,而Object类是所有类的直接或间接父类。
equals() 方法存在两种使用情况:
情况 1:类没有覆盖 equals()方法。通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象。使用的默认是 Object类equals()方法。
情况 2:类覆盖了 equals()方法。一般,我们常常会覆盖 equals()方法来判断两个对象的内容是否相等,若它们的内容相等,则返回 true(认为这两个对象相等)。


3.2.4 Java 中的几种基本数据类型是什么?对应的包装类型是什么?

【考点映射】
  • Java 数据类型
【出现频度】★★★☆
【难度】☆

【参考答案】
Java中有 8 种基本数据类型(需要理解和记忆),分别为:
  1. 6 种数字类型 :byte、short、int、long、float、double
  2. 1 种字符类型:char
  3. 1 种布尔型:boolean。
这八种基本类型都有对应的包装类分别为:Byte、Short、Integer、Lo