0% found this document useful (0 votes)
31 views32 pages

2024A FE-B Questions

The document outlines the instructions and structure for the Fundamental IT Engineer Examination (Subject B) scheduled for October 2024. It includes details on answering questions, marking examinee information, and pseudo programming language notations used in the exam. Additionally, it provides several programming questions with answer options for candidates to select from.

Uploaded by

Kaung Htet San
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views32 pages

2024A FE-B Questions

The document outlines the instructions and structure for the Fundamental IT Engineer Examination (Subject B) scheduled for October 2024. It includes details on answering questions, marking examinee information, and pseudo programming language notations used in the exam. Additionally, it provides several programming questions with answer options for candidates to select from.

Uploaded by

Kaung Htet San
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

October 2024

Fundamental IT Engineer Examination (Subject B)

Questions must be answered in accordance with the following:

Question Nos. Q1 – Q20


Question Selection All questions are compulsory.
Examination Time 12:30 - 14:10 (100 minutes)

Instructions:
1. Use a pencil. If you need to change an answer, erase your previous answer completely
and neatly. Wipe away any eraser debris.

2. Mark your examinee information and test answers in accordance with the instructions
below. Your answer will not be graded if you do not mark properly. Do not mark or write
on the answer sheet outside of the prescribed places.
(1) Examinee Number
Write your examinee number in the space provided, and mark the appropriate space
below each digit.
(2) Date of Birth
Write your date of birth (in numbers) exactly as it is printed on your examination
admission card, and mark the appropriate space below each digit.
(3) Answers
Mark your answers as shown in the sample question below.

[Sample Question]
Which of the following should be used for marking your answer on the answer sheet?

Answer group
a) Ballpoint pen b) Crayon c) Fountain pen d) Pencil

Since the correct answer is “ d) Pencil ”, mark the answer as below:

[Sample Answer]

Sample B C D ●F G H I J K

Do not open the exam booklet until instructed to do so.


Inquiries about the exam questions will not be answered.

-1-
Pseudo programming language notations

In algorithm and programming questions that use pseudo programming language, the
following notations are used unless otherwise stated:

[Pseudo programming language notations]


Notation Description
○ procedure(type: arg1, ...) Declares a procedure and its argument(s) arg1, ... .
○ ret-type: function(type: arg1, ...) Declares a function, its argument(s) arg1, ... , and
type of return value ret-type.
type: var1, ... Declares variables var1, ... and arrays array1, ... by
type []: array1, ... data type such as integer, real, and string.
/* comment */ Describes a comment between /* and */.
// comment Describes a comment after // till end of line.
variable ← expression Assigns the value of the expression to the variable.
procedure(arg1, ...) Calls a procedure by passing arguments arg1, ... .
function(arg1, ...) Calls a function by passing arguments arg1, ... ,
and receiving the return value.
output arg1, ... Outputs values of arg1, ... to a printing device.
return ret-val Finishes a function by passing back a return value
ret-val.
if (condition-i) Indicates the selection process.
process-i *1 *1 If condition-i is true, then execute process-i.
elseif (condition-ei) Otherwise, proceed to the next elseif or else.
process-ei *2 *2 If condition-ei is true, then execute process-ei.
else Otherwise, proceed to the next elseif or else.
process-e *3 *3 If all conditions are false, execute process-e.
endif Note: *2 and *3 can be omitted.
Note: *2 may exist twice or more.

for (sequence) Indicates the “for” iteration process.


process In the order specified in the sequence, execute the
endfor process repeatedly.
while (condition) Indicates the “while” iteration process.
process While the condition is true, execute the process
endwhile repeatedly.
do Indicates the “do - while” iteration process.
process Execute the process once, and then while the
while (condition) condition is true, execute the process repeatedly.

-2-
Pseudo programming language notations
(continued)

[Operators and their precedence]


Type of operator Operators Precedence Note
Expression ( ), . (1) High (1) accessing member or method

Unary operator +, −, not (2) (2) logical negation

Binary operator ×, ÷, mod (3) (3) remainder

+, −
>, <, ≥, ≤, =, ≠
and (4) (4) logical product

or (5) Low (5) logical sum

[Boolean-type constants]
true, false

[Array reference]
1-dimensional array 2-dimensional array Array of arrays
Array declaration type []: name ... type [,]: name ... type [][]: name ...
Example integer []: a1 integer [,]: a2 integer [][]: aa
1 2 3 4 5 1 2 3 1 2 3 .
1 3 5 7 9 1 11 12 13 1 21 22
2 14 15 16 2 23 24 25
3 17 18 19 3 26

Data reference Data 7 is referred Data 16 is referred Data 25 is referred


to by a1[4] to by a2[2,3] to by aa[2][3]
Notation of array {1, 3, 5, 7, 9} {{11, 12, 13}, {{21, 22},
contents {14, 15, 16}, {23, 24, 25},
{17, 18, 19}} {26}}
Note: The indexes of example arrays start at 1.

[undefined state]
undefined is a state in which no value is set to a variable (or an element of an array).
By setting undefined to a variable, the variable is transformed into undefined state.

-3-
Q1. From the answer group below, select the correct combination of answers to be inserted
into ___A___ and ___B___ in the program. Here, the array indexes start at 1.

Bicycle ridership in a city is studied. Examination of several years of data revealed that 30%
of the people who regularly ride bicycles in a given year do not regularly ride bicycles in the
subsequent year. Additionally, 2% of the people who do not regularly ride bicycles in that
year begin to ride bicycles regularly in the subsequent year. If 5,000 people ride bicycles and
100,000 people do not ride bicycles in a given year, then the following program calculates
the number of cyclists in the subsequent year (cycling) and that of people who do not ride
bicycles in the subsequent year (noncycling):

[Program]
real: pc ← 0.3
real: pb ← 0.02
real: pa ← (1 – pc)
real: pd ← (1 – pb)
integer []: N ← {5000, 100000}
real [,]: P ← {{pa, pb}, {pc, pd}}
real: cycling, noncycling
cycling ← ___A___
noncycling ← ___B___
output cycling, noncycling

Answer group
A B
a) P[1,1] × N[1] + P[1,2] × N[2] P[2,1] × N[1] + P[2,2] × N[2]
b) P[1,1] × N[1] + P[1,2] × N[2] P[2,2] × N[1] + P[2,1] × N[2]
c) P[1,2] × N[1] + P[1,1] × N[2] P[2,2] × N[1] + P[2,1] × N[2]
d) P[1,2] × N[1] + P[2,2] × N[2] P[2,1] × N[1] + P[1,2] × N[2]
e) P[2,1] × N[1] + P[1,2] × N[2] P[1,1] × N[1] + P[2,2] × N[2]
f) P[2,1] × N[1] + P[2,2] × N[2] P[1,1] × N[1] + P[1,2] × N[2]

-4-
Q2. From the answer group below, select the correct combination of answers to be inserted
into ____A____ and ____B____ in the program.

The function coupon receives the argument prod_id (a positive integer value) of product
ID, and pur_prod (a positive integer value) of the number of purchased products by a
customer. The function returns the number of coupons.
For every purchase of three products of the product ID of which the last digit is three, the
customer receives one coupon. Otherwise, they receive no coupon.

[Program]
○ integer: coupon(integer: prod_id, integer: pur_prod)
integer: num_coupon ← 0
if ( ___A___ )
num_coupon ← ___B___
endif
return num_coupon

Answer group
A B
a) integer part of (prod_id ÷ 10) = 3 integer part of (pur_prod ÷ 3)
b) integer part of (prod_id ÷ 10) = 3 integer part of (pur_prod ÷ 3) + 1
c) integer part of (prod_id ÷ 10) = 3 pur_prod mod 3
d) prod_id = 10 mod 3 integer part of (pur_prod ÷ 3)
e) prod_id = 10 mod 3 integer part of (pur_prod ÷ 3) + 1
f) prod_id = 10 mod 3 pur_prod mod 3
g) prod_id mod 10 = 3 integer part of (pur_prod ÷ 3)
h) prod_id mod 10 = 3 integer part of (pur_prod ÷ 3) + 1
i) prod_id mod 10 = 3 pur_prod mod 3

-5-
Q3. From the answer group below, select the correct combination of answers to be inserted
into ____A____ and ____B____ in the program. Here, the array index starts at 1.

The program determines the second-largest element of an integer-type array and outputs its
value. For instance, the second largest element of the array {2, 6, 9, 1, 7, 5} is 7. Here,
we assume that the array has two or more elements and that no duplicate elements are present
in the array.

[Program]
integer []: array ← {2, 6, 9, 1, 7, 5}
integer: i
integer: max1 ← -∞
integer: max2 ← -∞
for (increase i from 1
to the number of elements of array by 1)
if ( ___A___ )
max2 ← max1
max1 ← array[i]
elseif (array[i] > max2)
___B___
endif
endfor
output max2

Answer group
A B
a) array[i] < max1 max1 ← array[i]
b) array[i] < max1 max2 ← array[i]
c) array[i] < max2 max1 ← array[i]
d) array[i] < max2 max2 ← array[i]
e) array[i] > max1 max1 ← array[i]
f) array[i] > max1 max2 ← array[i]
g) array[i] > max2 max1 ← array[i]
h) array[i] > max2 max2 ← array[i]

-6-
Q4. From the answer group below, select the correct combination of answers to be inserted
into ___A___ and ___B___ in the program.

The procedure primeFactors outputs the prime factors for the input values as its argument.
The first few prime numbers are 2, 3, 5, 7, 11, and 13. For instance, if the input integer is 12,
the output is “2×2×3”. If the input integer is 78, the output is “2×3×13”. The input integer
must be greater than 1.

[Program]
○ primeFactors(integer: num)
integer: i

i ← 2
do
if ( ___A___ )
num ← integer part of (num ÷ i)
output i
if ( ___B___ )
output "×"
endif
else
i ← i + 1
endif
while ( ___B___ )

Answer group
A B
a) num < 1 num mod i ≠ 0
b) num > 1 num mod i = 0
c) num mod i = 0 num > 1
d) num mod i ≠ 0 num < 1

-7-
Q5. From the answer group below, select the correct combination of answers to be inserted
into ____A____ and ____B____ in the program. Here, the array index starts at 1.

Function calcGeoMean receives the array dataArray (the number of elements ≥ 1) as an


argument and returns the geometric mean of values in dataArray as the return value. For
the numbers a1, a2, …, an, the geometric mean is 𝑎 × 𝑎 × ⋯ × 𝑎 . Here, the pow(x,
y) function returns a real value by raising x to the power of y. In the program, division is
performed in data type real.

[Program]
○ real: calcGeoMean(real []: dataArray)
real: product, geomean
integer: n ← the number of elements in dataArray
integer: i

product ← 1
for (increase i from 1 to n by 1)
product ← product × dataArray[i]
endfor
geomean ← pow( ___A___ , ___B___ )
return geomean

Answer group
A B
a) 1 ÷ n product
b) product 1 ÷ n
c) product n
d) n product

-8-
Q6. From the answer group below, select the correct combination of answers to be inserted
into ____A____ through ____C____ in the program.

The standard form of a quadratic equation is as follows:

ax2 + bx + c = 0, where a, b and c are real numbers and a ≠ 0.

Here, the term b2 - 4ac is known as the discriminant of a quadratic equation. It indicates the
nature of the roots. The formula for solving a quadratic equation is shown in the figure. If
the discriminant value is positive, there are two solutions; if it is zero, there is one solution.
Here, we assume that the discriminant value is non-negative.

−𝑏 + √𝑏 − 4𝑎𝑐
𝑟𝑜𝑜𝑡1 =
2𝑎
If the discriminant > 0
−𝑏 − √𝑏 − 4𝑎𝑐
𝑟𝑜𝑜𝑡2 =
2𝑎
−𝑏
If the discriminant = 0 𝑟𝑜𝑜𝑡1 = 𝑟𝑜𝑜𝑡2 =
2𝑎
Figure The formula for solving a quadratic equation

The procedure findRoots receives three real number arguments a, b, and c as coefficients
and outputs the value of the root(s) of the quadratic equation. Function
sqrt(discriminant) returns the principal square root value of the parameter
discriminant.

[Program]
○ findRoots(real: a, real: b, real: c)
real: discriminant, root1, root2
discriminant ← ___A___
if ( ___B___ )
root1 ← (−b + sqrt(discriminant)) ÷ (2 × a)
root2 ← (−b − sqrt(discriminant)) ÷ (2 × a)
output "root1 = ", root1, " and root2 = ", root2
elseif ( ___C___ )
root1 ← −b ÷ (2 × a)
output "root1 = root2 = ", root1
endif

-9-
Answer group
A B C
a) b × 2 − 4 × a × c discriminant < 0 discriminant = 0
b) b × 2 − 4 × a × c discriminant = 0 discriminant < 0
c) b × 2 − 4 × a × c discriminant = 0 discriminant > 0
d) b × 2 − 4 × a × c discriminant > 0 discriminant = 0
e) b × b − 4 × a × c discriminant < 0 discriminant = 0
f) b × b − 4 × a × c discriminant = 0 discriminant < 0
g) b × b − 4 × a × c discriminant = 0 discriminant > 0
h) b × b − 4 × a × c discriminant > 0 discriminant = 0

- 10 -
Q7. From the answer group below, select the correct combination of answers to be inserted
into ___A___ and ___B___ in the program.

Given two strings, str1 and str2, the task is to determine the length of the longest common
subsequence (LCS), that is, the length of the longest subsequence present in both strings.
For instance, if str1 is “ABXDZ” and str2 is “ABCD”, the LCS between str1 and str2 will
be “ABD” and the length of the LCS will be 3.
The function lcs(string: str1, string: str2, integer: m, integer: n) takes two
strings str1 and str2 and two integers m and n as arguments. str1 and str2 are the strings
on which the length of the LCS is calculated. m and n are indexes addressing the target
characters in str1 and str2, respectively. On the first call, m and n represent the lengths of
str1 and str2, respectively. The function returns an integer containing the value of the
length of the LCS of str1 and str2. For instance, the function may be called as
lcs("ABXDZ", "ABCD", 5, 4).
Another function max(integer: a, integer: b) is also used. The function takes two
integers a and b as arguments. It compares these two integers and returns the integer value
of whichever is the maximum between a and b.

[Program]
○ integer: max(integer: a, integer: b)
if (a > b)
return a
else
return b
endif

○ integer: lcs(string: str1, string: str2, integer: m, integer: n)


if (m = 0 or n = 0)
return 0
endif
if (the m-th character of string str1 = the n-th character of string str2)
return 1 + lcs(str1, str2, m - 1, n - 1)
else
return max(lcs(str1, str2, m, ___A___ ),
lcs(str1, str2, m - 1, ___B___ ))
endif

- 11 -
Answer group
A B
a) n n - 1
b) n n + 1
c) n - 1 n
d) n - 1 n + 1
e) n + 1 n
f) n + 1 n - 1

- 12 -
Q8. From the answer group below, select the correct answer to be inserted into _______ in
the description.

This program performs operations on a priority queue.


A priority queue is a queue where the handled elements have a priority assigned to them, and
the elements are extracted with the order of the highest priority first. The class PrioQueue
represents a priority queue. The Figure shows an explanation of the class PrioQueue. Here,
the priority is the integer value 1, 2, or 3, and the smaller the value the higher the priority.
When the procedure prioSched is called, the order of the output is _______ .

Constructor Description
PrioQueue() Creates an empty priority queue.

Method Type of Description


return value
enqueue(string: s, None Adds string s as an element to a priority queue
integer: prio) with the priority prio.
dequeue() string Extracts the element with the highest priority in
a priority queue and returns it. If multiple
elements with the highest priority exist, it
extracts the element that was added first and
returns it.
size() integer Returns the number of elements that are stored in
a priority queue.
Figure Explanation of the class PrioQueue

[Program]
○ prioSched()
PrioQueue: prioQueue ← PrioQueue()
prioQueue.enqueue("E", 3)
prioQueue.enqueue("F", 2)
prioQueue.enqueue("G", 1)
prioQueue.enqueue("H", 1)
prioQueue.dequeue() /* The return value is ignored */
prioQueue.dequeue() /* The return value is ignored */
prioQueue.enqueue("I", 1)
prioQueue.enqueue("J", 1)
prioQueue.dequeue() /* The return value is ignored */
prioQueue.enqueue("K", 2)
prioQueue.enqueue("L", 3)
prioQueue.enqueue("M", 1)

- 13 -
while (prioQueue.size() is not equal to 0)
output prioQueue.dequeue()
endwhile

Answer group
a) "M", "I", "K", "F", "L", "E"
b) "M", "L", "K", "I", "F", "E"
c) "J", "M", "F", "K", "E", "L"
d) "E", "L", "F", "K", "I", "M"

- 14 -
Q9. From the answer group below, select the correct answer to be inserted into _________ in
the description. Here, the array indexes start at 1.

The procedure traverse traces through a vertex of the graph shown in the Figure, and
outputs all vertex numbers in the graph. The vertex number of the graph is specified with the
argument k. The global variable n indicates the number of vertices in the graph. The global
array graph represents the graph in the figure. Each element graph[i][j] is equal to 1 if
an edge exists between vertices i and j, and it is equal to 0 otherwise. The global array
visited stores boolean values, where visited[i] indicates whether vertex i of the graph
has been visited during the procedure.
When the procedure is called as traverse(1), the output is in the order _______ .

1 2

4 5

Figure Structure of the graph

[Program]
global: integer: n ← 5
global: integer [][]: graph ← {{0, 1, 0, 1, 0}, {1, 0, 1, 0, 1},
{0, 1, 0, 0, 0}, {1, 0, 0, 0, 1},
{0, 1, 0, 1, 0}}
global: boolean []: visited ← {false, false, false, false, false}

○ traverse(integer: k)
integer: i
visited[k] ← true
output k

for (increase i from 1 to n by 1)


if (graph[k][i] = 1 and visited[i] = false)
traverse(i)
endif
endfor

Answer group
a) 1, 2, 3, 4, 5 b) 1, 2, 3, 5, 4
c) 1, 2, 4, 3, 5 d) 1, 2, 4, 5, 3

- 15 -
Q10. From the answer group below, select the correct answer to be inserted into _______ in
the program.

The procedure addNode adds a node to a singly-linked list at the position specified by the
argument pos. The argument pos is a positive integer that is equal to or less than the (number
of nodes + 1) in the list. The position at the top of the list is 1.
The class ListNode represents a node in a singly-linked list. The table summarizes an
explanation of the member variables of the class ListNode. ListNode-type variables store
references to instances of the class ListNode. A reference to the first node in the list is pre-
stored in the global variable listHead.

Table Explanation of the member variables of the class ListNode


Member variable Type Description
val character The value of a node.
next ListNode A reference for the next node.
If no next node exists, the status is undefined.

[Program]
global: ListNode: listHead // stores the first node in the list

○ addNode(integer: pos, character: val)


ListNode: prev, newNode
integer: i
newNode ← ListNode()
newNode.val ← val
if (pos is equal to 1)
newNode.next ← listHead
listHead ← newNode
else
prev ← listHead
/* if pos is equal to 2, the following iteration process is not executed */
for (increase i from 2 to pos - 1 by 1)
prev ← prev.next
endfor
newNode.next ← prev.next
_______ ← newNode
endif

Answer group
a) listHead b) listHead.next c) listHead.next.next
d) prev e) prev.next f) prev.next.next

- 16 -
Q11. From the answer group below, select the correct combination of answers to be inserted
into ___A___ and ___B___ in the program. Here, the array indexes start at 1.

The procedure sort sorts an integer array containing certain number (≥ 2) of elements in
ascending order.

[Program]
○ sort(integer []: arg)
Integer []: A ← arg
integer: i, k
for (increase i from 2 to the number of elements in A by 1)
k ← i
while (k > 1)
if (A[k – 1] ≤ A[k])
exit the while block
endif
___ A___
___ B___
endwhile
endfor
output A

Answer group
A B
a) A[i] ← A[i - 1] k ← k + 1
b) A[k] ← A[k - 1] swap k and i
c) A[k - 1] ← A[k] k ← k + 1
d) swap A[i] and A[i - 1] k ← k - 1
e) swap A[i] and A[k] swap k and i
f) swap A[k] and A[k - 1] k ← k - 1

- 17 -
Q12. From the answer group below, select the correct combination of answers to be inserted
into ____A____ and ____B____ in the program. Here, the array index starts at 1.

The function isPalindrome determines whether the character array s given as argument is
a palindrome. Palindromes are words when read backward will still be the same such as
“noon” and “madam.”
If character array s is a palindrome, it returns the value true and if not, the function returns
false.
The table lists examples of s given to the function isPalindrome and the return values. In
the program, areas outside of the arrays must not be referenced.

Table Examples of s given to the function isPalindrome and the return values
s Return value
{"n", "o", "o", "n"} true
{"n", "i", "g", "h", "t"} false
{"m", "a", "d", "a", "m"} true
{"s", "i", "r"} false

[Program]
○ boolean: isPalindrome(character []: s)
integer: left ← 1
integer: right ← the number of elements in s
boolean: ok ← true
while (left < right)
if ( ___A___ )
left ← left + 1
___B___
else
ok ← false
break
endif
endwhile
return ok

- 18 -
Answer group
A B
a) s[left] = s[right] right ← right + 1
b) s[left] = s[right] right ← right − 1
c) s[left] = s[right] right ← right + left
d) s[left] = s[right] right ← right − left
e) s[left] ≠ s[right] right ← right + 1
f) s[left] ≠ s[right] right ← right – 1
g) s[left] ≠ s[right] right ← right + left
h) s[left] ≠ s[right] right ← right − left

- 19 -
Q13. From the answer group below, select the correct combination of answers to be inserted
into ___A___ and ___B___ in the program. Here, the array indexes start at 1.

Hashing in data structures is a fundamental concept used for efficient data retrieval and
storage mechanisms. A program storing a key-data pairs in an array by transforming keys
into array indexes using a hash function exists. A collision occurs when two keys hash to
the same index in the array representing the hash table. A common method handling
collisions, the probing mechanism (checking for an available element), is used in the
function. The procedure insertData inserts a pair of key and data, if the element in the
array is {undefined}. Assumptions are made that no data with the same key is stored,
and that at least one element in the array hashTable is {undefined} when the procedure
insertData is called. The function hashFunction takes a key as input and returns a
hash value.

[Program]
global: integer [][]: hashTable ← {Elements comprising 1000 {undefined}}
global: integer: size ← 1000
○ integer: hashFunction(integer: key)
return (key mod size) + 1

○ insertData(integer: key, integer: data)


integer: index
index ← hashFunction(key)
while ( ___A___ )
if (index = size)
___B___
else
index ← index + 1
endif
endwhile
hashTable[index] ← {key, data}

- 20 -
Answer group
A B
a) hashTable[index][1] ≠ key index ← 1
b) hashTable[index][1] ≠ key index ← index - 1
c) hashTable[index][1] = key index ← 1
d) hashTable[index][1] = key index ← index - 1
e) hashTable[index][1] ≠ undefined index ← 1
f) hashTable[index][1] ≠ undefined index ← index - 1
g) hashTable[index][1] = undefined index ← 1
h) hashTable[index][1] = undefined index ← index - 1

- 21 -
Q14. From the answer group below, select the correct answer to be inserted into _______ in
the description. Here, the array indexes start at 1.

The function summarize receives the array sortedData sorted in ascending order and
returns five values that characterize the array. The array sortedData must have at least one
element. The summarize calls the findRank with two arguments, sortedData and q.
When the function summarize is called as summarize({0.1, 0.2, 0.3, 0.4, 0.5, 0.6,
0.7, 0.8, 0.9, 1}), the return value is _______ .

[Program]
○ real: findRank(real []: sortedData, real: q)
integer: j
j ← floor(q × (the number of elements in sortedData - 1))
// floor returns the closest integer less than or equal to a given
// number, e.g. floor(7.75) returns 7.
return sortedData[j + 1]

○ real []: summarize(real []: sortedData)


real []: rankData ← {} /* array with 0 elements */
real []: q ← {0, 0.25, 0.5, 0.75, 1}
integer: i
for (increase i from 1 to the number of elements in q by 1)
add the return value of findRank(sortedData, q[i]) to the end of rankData
endfor
return rankData

Answer group
a) {0.1, 0.2, 0.3, 0.4, 0.5}
b) {0.1, 0.2, 0.3, 0.4, 0.7}
c) {0.1, 0.2, 0.4, 0.6, 0.9}
d) {0.1, 0.2, 0.4, 0.7, 0.9}
e) {0.1, 0.3, 0.5, 0.7, 1}
f) {0.1, 0.3, 0.5, 0.8, 1}
g) {0.1, 0.3, 0.6, 0.9, 1}
h) {0.1, 0.3, 0.7, 0.9, 1}

- 22 -
Q15. From the answer group below, select the correct combination of answers to be inserted
into ___A___ and ___B___ in the program. Here, the array indexes start at 1.

Suppose the weather in a city, from day to day, follows a Markov process. This implies the
next day’s weather depends only on today’s weather and not on those of the previous days.
If it rains today in the city, a probability 0.3 exists that it will rain again tomorrow. Similarly,
the probability that tomorrow’s weather will be sunny is 0.4 and that it will be cloudy is 0.3.
If today’s weather is sunny, the next day will be rainy, sunny, or cloudy with probabilities
0.2, 0.7, and 0.1, respectively. Additionally, if today’s weather is cloudy, the next day will
be rainy, sunny, or cloudy with probabilities 0.25, 0.5, and 0.25, respectively.
Let us say that the weather is in state 1 if it is rainy, in state 2 if it is sunny, and in state 3 if
it is cloudy. Then, the above is a three-state Markov chain whose transition probabilities are
given by the following:

to
1 2 3
1 0.3 0.4 0.3
from 2 0.2 0.7 0.1
3 0.25 0.5 0.25

Using this transition matrix, the probability distribution of the weather after several days can
be estimated.
The program calculates the probability distribution of the weather of the city after three days
from the present day and outputs a 3 × 3 square matrix that shows this probability distribution
of the weather. For instance, if the weather on the present day is sunny (state 2), the
probability that the weather three days after will be rainy (state 1) is the value in the second
row and the first column of the outputted matrix.

[Program]
real [,]: pmat ← {{0.3, 0.4, 0.3}, {0.2, 0.7, 0.1}, {0.25, 0.5, 0.25}}
real [,]: dmat ← pmat
real [,]: smat
integer: i, j, k, m
for (increase m from 1 to ___A___ by 1)
smat ← {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}
for (increase i from 1 to 3 by 1)
for (increase j from 1 to 3 by 1)
for (increase k from 1 to 3 by 1)
smat[i, j] ← smat[i, j] + __B___

- 23 -
endfor
endfor
endfor
dmat ← smat
endfor
output dmat

Answer group
A B
a) 2 dmat[i, k] × pmat[k, j]
b) 2 dmat[k, i] × pmat[j, k]
c) 3 dmat[i, k] × pmat[k, j]
d) 3 dmat[k, i] × pmat[j, k]
e) 4 dmat[i, k] × pmat[k, j]
f) 4 dmat[k, i] × pmat[j, k]

- 24 -
Q16. From the answer group below, select the correct combination of answers to be inserted
into ___A___ through ___C___ in the program.

Function hammingDistance receives two strings as argument and returns Hamming distance
as the return value. Hamming distance is a metric used to measure the difference between
two strings of equal length. It counts the number of positions at which the corresponding
characters are different. For instance, the return value is 2 when the function
hammingDistance("101010", "111000") is called, because positions 2 and 5 have
different characters.
It can also be extended to strings of different lengths by considering the unmatched
characters as differences. For instance, the return value is 5 when the function
hammingDistance("101010", "111000111") is called, because of two differences in first
six characters and addition of three extra unmatched characters.

[Program]
○ integer: hammingDistance(string: s1, string: s2)
integer: distance, length1, length2, minLength, remainingLength
length1 ← length of s1
length2 ← length of s2
distance ← 0
minLength ← length1
if ( ___A___ )
minLength ← length2
endif
for (increase i from 1 to minLength by 1)
if (the i-th character of string s1 ___B___ the i-th character of string s2)
distance ← distance + 1
endif
endfor
if (length1 > length2)
remainingLength = length1 - length2
else
remainingLength = length2 - length1
endif
distance ← ___C___
return distance

- 25 -
Answer group
A B C
a) length2 < length1 is equal to remainingLength
b) length2 < length1 is equal to distance + remainingLength
c) length2 < length1 is not equal to distance + minLength
d) length2 < length1 is not equal to distance + remainingLength
e) length2 > length1 is equal to remainingLength
f) length2 > length1 is equal to distance + remainingLength
g) length2 > length1 is not equal to distance + minLength
h) length2 > length1 is not equal to distance + remainingLength

- 26 -
Q17. From the answer group below, select the most appropriate combination of answers to be
inserted into ____A____ and ____B____ in the description.

Company A is an e-commerce company specializing in sporting goods. One morning,


employee X of the company's accounting department starts up his PC to begin his work.
When he logged into his PC, he saw an unfamiliar screen with the following message:

*** Attention ***


Your files have been encrypted.

All of your important files have been encrypted. To restore these files, please follow
these steps:
1. transfer $500 worth of cryptcurrency to the currency address provided:
Address: 1ABCD.... EFGH
2. As soon as the transfer is confirmed, we will send you the key to decrypt the files.
3. If the transfer is not confirmed within 48 h, the decryption key will be deleted and
the files will be lost forever.
Contact: help@ransomware.example.com

The accounting department immediately requested the security team in company A to help
resolve the situation. The security team analyzed all the PCs in the accounting department,
including that of employee X, and noted the following:

1. A total of tow compromised PCs were found. One PC was used by Employee X and
the other PC was shared by multiple employees.

2. IDS/IPS was not installed in the accounting department LAN, delaying detection of
ransomware.

3. The shared PC was backed up daily, and important data could be restored from the
backup at the time when the PC was not compromised by the ransomware.

4. Employee X's PC was not backed up, and important data could not be restored.

5. The ransomware was saved on Employee X's PC as an attachment file of an email


sent by a company pretending to be a business partner. The email envelope and
content were sophisticatedly disguised and difficult to detect through enhanced spam
filters.

- 27 -
6. Employee X inadvertently executed the attached file and allowed the ransomware to
invade his PC.

7. After compromising Employee X's PC, the ransomware attempted to compromise


other PCs in the LAN by taking advantage of vulnerabilities in the target OS, but
succeeded only in compromising the shared PC, which had neglected to apply OS
security patches.

8. On both PCs, the anti-virus software versions and virus definition files were checked
for updates on a daily basis and maintained up-to-date.

9. Both PCs had OS storage encryption feature enabled, but it was not effective against
the ransomware attack in this incident.

The security team and the accounting department decided to take the following approaches
and specific measures as a plan to strengthen the measures against future ransomware attacks.

Table 1. Approaches and Specific Measures (excerpts)


Approaches Specific Measures
Prevention User education and training
____A ___

Detection Network monitoring with IDS/IPS


Data Protection ____B ___

Answer group
A B
a) SPAM filter enhancement Data backup
b) SPAM filter enhancement Data encryption
c) OS updates Data backup
d) OS updates Data encryption
e) Virus definition updates Data backup
f) Virus definition updates Data encryption

- 28 -
Q18. From the answer group below, select the correct answer to be inserted into ______ in
the description.

Company B runs several web services. Mr. Y is a software engineer in the company. He was
directed to develop a feature that prevents web service users from setting weak passwords.
Mr. Y investigated and found that “Password Entropy” is the important factor for the
password strength.

Password entropy measures the strength of a password based on the difficulty of cracking
the password through guessing or a brute-force attack. The entropy of a password is typically
based on the type of characters used—lowercase letters, uppercase letters, numerical digits,
or special characters—and the length of the password or total number of characters.

Password entropy formula:


You can measure the entropy of a password in bits using the following formula:

E = ⌊L ×Log2 (R)⌋

In this formula:
- E denotes the password entropy
- R denotes the possible range of character types in the password
- L denotes the number of characters in the password (its length)
- Log2 answers the question, "to what power 2 must be raised to equal this number"
- ⌊X⌋ denotes the greatest integer N such that N ≤ X

The following totals show the breakdown for each character set as they appear on a typical
American QWERTY keyboard:
Lowercase letters (a–z) = 26.
Uppercase letters (A–Z) = 26.
Numerical digits (0–9) = 10.
Special characters (!, @, #, $, %, ^, etc.) = 32.

The password vfssxfrb has a pool of 26 characters (lowercase letters);


Changing the password to JAAdMAdE would increase the pool to 52 characters (lowercase
letters and uppercase letters);
Changing it further to u7aHqsbt would increase the pool to 62 characters (lowercase letters,
uppercase letters along with numbers) and
Finally, Re*ct7$% has a pool of 26 + 26 + 10 + 32 = 94 characters (lowercase letters,

- 29 -
uppercase letters, numbers, and special characters).

In our example:

• For vfssxfrb, we have R = 26 and L = 8; thus,


E = ⌊8 × log2(26) ⌋ ≈ ⌊8 × 4.700⌋ ≈ ⌊37.60⌋ = 37 bits

• For JAAdMAdE, we have R = 52 and L = 8; thus,


E = ⌊8 × log2(52) ⌋ ≈ ⌊8 × 5.700⌋ ≈ ⌊45.60⌋ = 45 bits

• For u7aHqsbt, we have R = 62 and L = 8; thus,


E = ⌊8 × log2(62) ⌋ ≈ ⌊8 × 5.954⌋ ≈ ⌊47.63⌋ = 47 bits

• For Re*ct7$%, we have R = 94 and L = 8; thus,


E = ⌊8 × log2(94) ⌋ ≈ ⌊8 × 6.555⌋ ≈ ⌊52.44⌋ = 52 bits

Here, when the password is A6GmyVyOC (Using numerical digits, lowercase letters, and
uppercase letters. L = 9), the password entropy is ____ ___ bits.

Answer group
a) 42 b) 51 c) 52 d) 53 e) 58

- 30 -
Q19. From the answer group below, select the correct combination of answers to be inserted
into ___A___ and ___B___ in the description.

Company X is an investment company. Recently, one of their database servers was attacked
by an attacker.

Mr. L, the security team leader of company X, decided to ask Ms. A, a security analyst
working for the same company, to analyze the logs. Mr. L will extract log entries related to
database access from the log file of the attacked database server and send the extracted log
entries to Ms. A.

When sending access log data from Mr. L to Ms. A, the following conditions were agreed
upon in advance:

- Mr. L must encrypt the file such that only Ms. A can view it.
- Ms. A must confirm that the sender of the file is Mr. L.

They each have an RSA key pair and have already exchanged their public keys with each
other. They sign, verify, encrypt, and decrypt using those keys and a previously shared
cryptographic processing software.

This time, the log entries must be ___A___ and then ___B___ .

Answer group
A B
a) signed using Mr. L’s private key encrypted using Mr. L’s private key
b) signed using Mr. L’s private key encrypted using Mr. L’s public key
c) signed using Mr. L’s private key encrypted using Ms. A’s private key
d) signed using Mr. L’s private key encrypted using Ms. A’s public key
e) signed using Mr. L’s public key encrypted using Mr. L’s private key
f) signed using Mr. L’s public key encrypted using Mr. L’s public key
g) signed using Mr. L’s public key encrypted using Ms. A’s private key
h) signed using Mr. L’s public key encrypted using Ms. A’s public key

- 31 -
Q20. From the answer group below, select the most appropriate combination of answers to be
inserted into ___A___ and ___B___ in the description.

Company Y, a trading company, is developing an e-commerce web application for selling


products to customers directly. The web server hosting the web application is installed on-
premise and the web application is to be developed in-house. The communications to the
web server are allowed only with HTTPS and the server certificate is already signed by the
third party and installed on the web server. Company Y has an IT department comprising
three teams—Developer, Security, and Tech Support—and the requirements for the web
application are specified as follows (excerpt):

• The web application is user-friendly and easy to navigate.


• The web application is cost-effective to develop and maintain.
• The web application can prevent malicious inputs into the system.
• The web application is scalable and can handle a large number of customers.
• The purchase orders and invoices are digitally signed to confirm integrity and authenticity.

During the initial project meeting, the members from each department discuss their
respective tasks. The developer team requests the security team to derive specific tasks for
the above requirements related to security. Ms. B, a member of the security team, suggests
the following tasks:

• Set up a ___A___ to provide the infrastructure.


• Install a ___B___ in front of the web server.

Answer group
A B
a) PKI environment honeypot
b) PKI environment VPN gateway
c) PKI environment web application firewall
d) SPF record honeypot
e) SPF record VPN gateway
f) SPF record web application firewall

_ _
Company names and product names appearing in the test questions are trademarks or registered
trademarks of their respective companies. Note that the ® and ™ symbols are not used within the text.

- 32 -

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy