VBScript面试题



尊敬的读者,这些VBScript面试题专为帮助您了解在VBScript面试中可能遇到的问题类型而设计。根据我的经验,优秀的考官很少会提前计划好面试中的具体问题,通常会从该主题的一些基本概念开始提问,然后根据后续讨论和您的回答继续提问。

Microsoft VBScript(Visual Basic Script)是由微软开发的一种通用的、轻量级的活动脚本语言,其模型基于Visual Basic。如今,VBScript是Quick Test Professional (QTP)的主要脚本语言,QTP是一种测试自动化工具。

以下是VBScript的优点:

  • VBScript是一种轻量级的脚本语言,具有极快的解释器。

  • VBScript在很大程度上不区分大小写。它具有非常简单的语法,易于学习和实现。

  • 与C++或Java不同,VBScript是一种基于对象的脚本语言,而不是面向对象的编程语言。

  • 它使用组件对象模型(COM)来访问其执行环境中的元素。

  • 只有在宿主环境(如Internet Explorer (IE)、Internet Information Services (IIS)和Windows Scripting Host (WSH))中执行时,VBScript才能成功执行。

以下是VBScript的缺点:

  • VBScript仅被IE浏览器使用。其他浏览器,如Chrome、Firefox,不支持VBScript。因此,JavaScript优于VBScript。

  • VBScript的命令行支持有限。

  • 由于默认情况下没有可用的开发环境,因此调试很困难。

不!VBScript是一种不区分大小写的语言。这意味着语言关键字、变量、函数名以及任何其他标识符不需要使用一致的大写字母。

因此,标识符int_counter、INT_Counter和INT_COUNTER在VBScript中具有相同的含义。

变量是用于保存可在脚本执行期间更改的值的命名内存位置。VBScript只有一个基本数据类型,即Variant。

声明变量的规则:

  • 变量名必须以字母开头。

  • 变量名不能超过255个字符。

  • 变量不应该包含句点(.)

  • 在声明的上下文中,变量名应该唯一。

使用“dim”关键字声明变量。

不需要!由于只有一个基本数据类型,所有声明的变量默认都是Variant类型。因此,用户不需要在声明期间提及数据类型。

数值应不带双引号赋值。

字符串值应放在双引号(" ")内。

日期和时间变量应放在井号(#)内。

以下是VBScript中变量的作用域:

  • Dim

  • Public

  • Private

在过程级别使用“Dim”关键字声明的变量仅在同一过程中可用。在脚本级别使用“Dim”关键字声明的变量对同一脚本中的所有过程都可用。

使用“Public”关键字声明的变量对所有关联脚本中的所有过程都可用。声明“Public”类型的变量时,“Dim”关键字将被“Public”替换。

声明为“Private”的变量的作用域仅限于声明它们的脚本。声明“Private”类型的变量时,“Dim”关键字将被“Private”替换。

使用“const”关键字声明常量。

公共常量对所有脚本和过程都可用。

私有常量在过程或类中可用。

VBScript语言支持以下类型的运算符:

  • 算术运算符

  • 比较运算符

  • 逻辑(或关系)运算符

  • 连接运算符

MOD运算符用于获取两个数的模。

示例:

Dim a : a = 5
Dim b : b = 10
Dim c
c = b MOD a
Document.write ("Modulus Result is " &c)

^运算符用于获取两个数的指数。

示例:

Dim a : a = 5
Dim b : b = 10
Dim c
c = b ^ a
Document.write ("Exponentiation Result is " &c)

<>运算符用于检查两个数是否相等。

示例:

Dim a : a = 5
Dim b : b = 10
Dim c
c = b <> a
Document.write ("Equality Check is " &c)

XOR称为逻辑异或运算符。它用于进行异或运算。

示例:

A. Dim a : a = 5
Dim b : b = 10
Dim c
c = b XOR a
Document.write ("XOR Check is " &c)

+运算符将两个值相加,因为变量值是数值。因此,A + B将得到15。

+运算符如果值是字符串,则连接两个值。因此,A + B将得到VBScript。

&运算符连接两个值。因此,A & B将得到510。

&运算符连接两个值。因此,A & B将得到VBScript。

VBScript还可以使用Document对象的cookie属性来操作cookie。JavaScript可以读取、创建、修改和删除应用于当前网页的cookie。

创建cookie的最简单方法是将字符串值赋给document.cookie对象,如下所示:

语法:

document.cookie = "key1 = value1; key2 = value2; expires = date";

expires属性是可选的。如果提供此属性以及有效的日期或时间,则cookie将在给定的日期或时间过期,之后将无法访问cookie的值。

读取cookie与写入cookie一样简单,因为document.cookie对象的值就是cookie。因此,您可以随时使用此字符串访问cookie。

document.cookie字符串将保留用分号分隔的名称=值对列表,其中名称是cookie的名称,值是其字符串值。

您可以使用字符串的split()函数将字符串分解为键和值。

有时您需要删除cookie,以便后续尝试读取cookie时返回空值。要执行此操作,您只需将过期日期设置为过去的时间。

使用CDbl函数,该函数将任何Variant子类型的给定数字转换为双精度数。

示例:

x = 123
y = 123.882
document.write("x value after converting to double - " & CDbl(x) & "<br />")

使用CInt函数,该函数将任何Variant子类型的给定数字转换为整数。

示例:

x = 123
y = 123.882
document.write("y value after converting to Int - " & CInt(y) & "<br />")

使用CLng函数,该函数将任何Variant子类型的给定数字转换为长整数。

示例:

x = 123
y = 123.882
document.write("x value after converting to Long -" & CLng(x) & "<br />")

使用CSng函数,该函数将任何Variant子类型的给定数字转换为单精度数。

示例:

x = 123
y = 123.882
document.write("x value after converting to Single -" & CSng(x) & "<br />")

使用Hex函数,该函数将任何Variant子类型的给定数字转换为十六进制。

示例:

x = 123
y = 123.882
document.write("y value after converting to Hex -" & Hex(y) & "<br />") 

使用FormatNumber函数,该函数将返回格式化为数字的表达式。

示例:

Dim num : num = -645.998651
document.write(FormatNumber(num, 3))& "<br/>"     '-645.999

使用FormatPercent函数,该函数将返回格式化为百分比的表达式。

示例:

Dim num : num = -645.998651
document.write(FormatPercent(num, 2))& "<br/>"    '-64,599.86%

使用Int函数,该函数返回给定数字的整数部分。

示例:

Dim num : num = -645.998651
document.write("int Result of num is : " & int(num))& "<br/>"  '-646

使用Log函数,该函数返回给定数字的自然对数。

示例:

Dim num : num = 210
document.write("Log Result of num2 is : " & Log(num2))& "<br/>" '5.34710753071747

使用Oct函数,该函数返回给定数字的八进制值。

示例:

Dim num : num = -645.998651
document.write("Oct Result of num is : " & Oct(num))& "<br/>" '37777776572

使用Hex函数,该函数返回给定数字的十六进制值。

示例:

Dim num : num = -645.998651
document.write("Hex Result of num is : " & Hex(num))& "<br/>" 'FFFFFD7A

使用Rnd函数,该函数返回0到1之间的随机数。

示例:

Dim num : num = -645.998651
document.write("Rnd Result of num is : " & Rnd(num))& "<br/>" '0.5130115

使用Sqr函数,该函数返回给定数字的平方根。

示例:

Dim num : num = -210
document.write("Sqr Result of num is : " & Sqr(num))& "<br/>" '14.4913767461894

使用Abs函数,它返回给定数字的绝对值。

示例:

Dim num : num = -645.998651
document.write("Abs Result of num is : " & Abs(num))& "<br/>" '645.998651

使用Exp函数,它返回e的指定次幂的值。

示例:

Dim num : num = -645.998651
document.write("Exp Result of num is : " & Exp(num))& "<br/>" '2.79479883633128E-281

使用InStr函数,它返回一个字符串在另一个字符串中的第一次出现位置。搜索从左到右进行。

使用InStrRev函数,它返回一个字符串在另一个字符串中的最后一次出现位置。搜索从右到左进行。

使用Lcase函数,它返回指定字符串的小写形式。

使用Ucase函数,它返回指定字符串的大写形式。

使用Ltrim函数,它返回在去除指定字符串左侧空格后的字符串。

使用Rtrim函数,它返回在去除指定字符串右侧空格后的字符串。(原文错误,应为右侧)

使用Trim函数,它返回在去除开头和结尾空格后的字符串。

使用Len函数,它返回给定字符串的长度。

使用Replace函数,它返回在用另一个字符串替换一个字符串后的字符串。

使用Space函数,它用指定数量的空格填充字符串。

使用StrComp函数,它在比较两个指定字符串后返回一个整数值。

StrComp函数在比较两个给定字符串后返回一个整数值。根据要比较的输入字符串,它可以返回-1、0或1中的任何一个值。

  • 如果字符串1 < 字符串2,则StrComp返回-1

  • 如果字符串1 = 字符串2,则StrComp返回0

  • 如果字符串1 > 字符串2,则StrComp返回1

使用String函数,它返回一个包含指定字符指定次数的字符串。

使用StrReverse函数,它返回反转给定字符串字符顺序后的字符串。(原文有错字)

数组的声明方式与变量的声明方式相同,只是数组变量的声明使用括号。在下面的示例中,数组的大小在括号中指定。

示例:

'Method 1 : Using Dim
Dim arr1() 'Without Size
'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5
'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")

通过为每个要赋值的值指定数组索引值来为数组赋值。

示例:

Dim arr(5)
arr(0) = "VBScript"    'String
document.write("Value stored in Array index 0 : " & arr(0) & "<br />")

使用ReDim语句,我们可以声明动态数组变量并分配或重新分配存储空间。

使用LBound函数,它返回一个整数,对应于给定数组的最小下标。

使用UBound函数,它返回一个整数,对应于给定数组的最大下标。

使用Split函数,它返回一个包含指定数量值的数组。基于分隔符进行分割。

使用Join函数,它返回一个包含数组中指定数量子字符串的字符串。这是Split函数的反向操作。

使用Filter函数,它返回一个基于零的数组,该数组包含基于特定筛选条件的字符串数组的子集。

使用IsArray函数,它返回一个布尔值,指示输入变量是否为数组。

使用Erase函数,它回收数组变量的已分配内存。

在VBScript中定义函数最常见的方法是使用Function关键字,后跟唯一的函数名,它可能包含或不包含参数列表以及一个带有End Function关键字的语句,该语句指示函数的结尾。

要在脚本中的其他位置调用函数,只需使用Call关键字编写该函数的名称。

要从函数返回值,只需将值赋给函数名本身。

可以!函数可以返回多个值,这些值以逗号分隔,作为分配给函数名本身的数组。

子程序类似于函数,但有一些区别。

  • 子程序不返回值,而函数可能返回也可能不返回值。

  • 子程序可以不使用Call关键字调用。

  • 子程序始终包含在Sub和End Sub语句中。

如果指定了ByVal,则在调用函数或过程时,参数将按值传递。

如果指定了ByRef,则在调用函数或过程时,参数将按引用传递。

我们需要使用Set关键字声明对象并实例化它。

示例:

Dim obj  
Set obj = CreateObject("Scripting.Dictionary")

为了销毁对象,我们需要使用Set关键字,后跟对象名,并将其指向Nothing。

示例:

Dim obj  
Set obj = CreateObject("Scripting.Dictionary")
Set obj = Nothing

类是用于定义唯一类型的构造。与面向对象编程一样,VBScript 5.0 支持类的创建,它与使用VB编写COM对象非常相似。

类只是对象的模板,我们实例化对象以访问它的属性和方法。类可以包含变量、属性、方法或事件。

VBScript类包含在Class…End Class中。

'Defining the Class
Class classname    'Declare the object name
...
End Class
' Instantiation of the Class
Set objectname = new classname

类可以包含变量,这些变量可以是私有的或公有的。类中的变量应遵循VBScript命名约定。默认情况下,类中的变量是公有的。这就是为什么可以在类外部访问它们的原因。

示例:

Dim var1 , var2.
Private var1 , var2.
Public var1 , var2.

类属性,例如Property Let,它处理数据验证和将新值赋给私有变量的过程。Property Set,它将新的属性值赋给私有对象变量。

只读属性只有Property Get过程,而只写属性(很少见)只有Property Let或Property Set过程。

示例:

Class Comp
   
   Private modStrType
   Private OS
 
   Public Property Let ComputerType(strType)
      modStrType = strType
   End Property
 
   Public Property Get ComputerType()
      ComputerType = modStrType
   End Property
 
   Public Property Set OperatingSystem(oObj)
      Set OS = oObj
   End Property
 
   Public Property Get OperatingSystem()
      Set OperatingSystem = OS
   End Property
 
End Class

方法允许类执行开发人员想要的操作。方法只不过是函数或子程序。

示例:

Class Car
   
   Private Model
   Private Year
 
   Public Start()
      Fuel = 2.45
   Pressure =  4.15
   End Function
 
End Class

默认情况下,每个类都自动关联两个事件。Class_Initialize和Class_Terminate。

每当你基于类实例化对象时,都会触发Class_Initialize。当对象超出范围或对象设置为Nothing时,将触发Class_Terminate事件。

示例:

在下面的示例中,我们将向您解释VBScript中事件的工作方式。

'Instantation of the Object
Set objectname = New classname 
   
Private Sub Class_Initialize(  )
 Initalization code goes here
End Sub
'When Object is Set to Nothing
Private Sub Class_Terminate(  )
 Termination code goes here
End Sub

此类提供文件系统对象,可帮助开发人员处理驱动器、文件夹和文件。

示例:

Dim oFS, drive
Set oFS = CreateObject("Scripting.FileSystemObject")
Set drive = oFS.GetDrive(oFS.GetDriveName("C:\"))
Document.write drive.VolumeName

Drive包含允许您收集有关连接到系统的驱动器的信息的方法和属性。

File包含允许开发人员创建、删除或移动文件的方法和属性。

Files提供文件夹中包含的所有文件的列表。

Folder提供允许开发人员创建、删除或移动文件夹的方法和属性。

Folders提供文件夹内所有文件夹的列表。

TextStream使开发人员能够读取和写入文本文件。

RegExp对象帮助开发人员匹配字符串模式,其属性和方法帮助我们轻松地使用正则表达式。

以下是RegExp对象的属性:

  • Pattern - Pattern方法表示用于定义正则表达式的字符串,在使用正则表达式对象之前应设置它。

  • IgnoreCase - 一个布尔属性,表示如果为true或false,则正则表达式是否应针对字符串中的所有可能匹配项进行测试。如果未明确指定,则IgnoreCase值设置为False。

  • 全局(Global)− 一个布尔属性,表示正则表达式是否应该测试字符串中的所有可能匹配项。如果未显式指定,则 Global 值设置为 False。

Test 方法以字符串作为参数,如果正则表达式可以成功与字符串匹配,则返回 True,否则返回 False。

Replace 方法接受 2 个参数。如果搜索成功,则它将该匹配项替换为替换字符串,并返回新的字符串。如果没有匹配项,则返回原始搜索字符串。

Execute 方法的工作方式类似于 Replace,不同之处在于它返回一个 Matches 集合对象,其中包含每个成功匹配项的 Match 对象。它不会修改原始字符串。

如果要捕获错误,则使用 Err 对象。

使用 Err.Raise 抛出错误。

示例:

Err.Raise 6   ' Raise an overflow error.

Err.Number 提供错误号,Err.Description 提供错误描述。

示例:

Err.Raise 6   ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description

Err.Clear 清除错误。

示例:

Err.Raise 6   ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear   ' Clear the error.

下一步是什么?

接下来,您可以回顾一下您之前完成的与该主题相关的作业,并确保您能够自信地谈论它们。如果您是应届毕业生,面试官并不期望您能回答非常复杂的问题,而是希望您掌握扎实的基础知识。

其次,如果您无法回答一些问题,这并不重要,重要的是,无论您回答了什么问题,都必须充满自信地回答。所以在面试中要保持自信。Tutorialspoint 祝您面试顺利,并祝您未来一切顺利!干杯 :-)

广告
© . All rights reserved.