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 祝您面試順利,並祝您未來一切順利!乾杯 :-)

廣告