In Go, make(map[string]int) creates a map with string keys and int values.
Step 2: Check other options
freq := map[int]string{} reverses key-value types, C and D create slices, not maps.
Final Answer:
freq := make(map[string]int) -> Option B
Quick Check:
Correct map syntax = make(map[string]int) [OK]
Hint: Use make(map[keyType]valueType) for maps [OK]
Common Mistakes:
Using slices instead of maps
Swapping key and value types
Forgetting to use make() for map initialization
3. What will be the output of the following Go code?
package main
import "fmt"
func main() {
words := []string{"apple", "banana", "apple", "orange", "banana", "apple"}
freq := make(map[string]int)
for _, w := range words {
freq[w]++
}
fmt.Println(freq["apple"])
}
medium
A. 1
B. 2
C. 3
D. 0
Solution
Step 1: Count occurrences of "apple" in the slice
"apple" appears at indices 0, 2, and 5, total 3 times.
Step 2: Check frequency map update and print
freq[w]++ increments count for each word; freq["apple"] is 3.
Final Answer:
3 -> Option C
Quick Check:
Count of "apple" = 3 [OK]
Hint: Count each occurrence, then print frequency [OK]
Common Mistakes:
Counting unique words instead of occurrences
Off-by-one errors in counting
Printing wrong key frequency
4. Identify the error in the following Go code that tries to count frequencies of integers:
package main
import "fmt"
func main() {
nums := []int{1, 2, 2, 3, 1}
freq := make(map[int]int)
for i := 0; i <= len(nums); i++ {
freq[nums[i]]++
}
fmt.Println(freq)
}
medium
A. Loop condition should be i < len(nums), not i <= len(nums)
B. Map initialization is incorrect
C. Frequency increment syntax is wrong
D. Slice nums is empty
Solution
Step 1: Check loop boundary conditions
Loop uses i <= len(nums), which causes index out of range error because last index is len(nums)-1.
Step 2: Correct loop condition
Change to i < len(nums) to avoid accessing invalid index.
Final Answer:
Loop condition should be i < len(nums), not i <= len(nums) -> Option A
Quick Check:
Index out of range fixed by i < len(nums) [OK]
Hint: Use i < len(slice) to avoid index errors [OK]
Common Mistakes:
Using <= instead of < in loops
Misinitializing the map
Incorrect frequency increment syntax
5. Given two slices of integers, a and b, which Go code snippet correctly checks if b contains the same frequency of elements as a using the Frequency Counter Pattern?
hard
A. freqA := make(map[int]int)
freqB := make(map[int]int)
for _, v := range a {
freqA[v]++
}
for _, v := range b {
freqB[v]++
}
for k, v := range freqA {
if freqB[k] != v {
fmt.Println(false)
return
}
}
fmt.Println(true)
B. freq := make(map[int]int)
for _, v := range a {
freq[v] = 1
}
for _, v := range b {
if freq[v] == 0 {
fmt.Println(false)
return
}
}
fmt.Println(true)
C. freq := make(map[int]int)
for i := 0; i < len(a); i++ {
freq[a[i]]++
freq[b[i]]++
}
for _, count := range freq {
if count%2 != 0 {
fmt.Println(false)
return
}
}
fmt.Println(true)
D. freq := make(map[int]int)
for _, v := range a {
freq[v]++
}
for _, v := range b {
freq[v]--
}
for _, count := range freq {
if count != 0 {
fmt.Println(false)
return
}
}
fmt.Println(true)
Solution
Step 1: Build frequency map for a
Increment counts for each element in a.
Step 2: Decrement frequency map for b
Decrement counts for each element in b.
Step 3: Check if all counts are zero
If any count is not zero, frequencies differ; otherwise, they match.
Final Answer:
freq := make(map[int]int)
for _, v := range a {
freq[v]++
}
for _, v := range b {
freq[v]--
}
for _, count := range freq {
if count != 0 {
fmt.Println(false)
return
}
}
fmt.Println(true) -> Option D
Quick Check:
Increment a, decrement b, check zero counts [OK]
Hint: Increment for a, decrement for b, then check zeros [OK]
Common Mistakes:
Only checking presence, not frequency
Using separate maps without comparing properly
Assuming counts add up without balancing increments and decrements
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.