Google OA Real Questions + Preparation Tips with Programhelp Remote Assistance Experience Sharing

1,235 Views
Google OA Real Questions + Preparation Tips with Programhelp Remote Assistance Experience Sharing

Google Software Engineer OA (Codility platform, 60 minutes, supports Python/Java/C++) consists of two programming questions, this article reproduces the meaning of the questions, analyzes the ideas, and shares the remote tutoring experience and preparation suggestions.

Topic 1: Minimum number of changes for rewording

Question meaning

given string s, which can be modified one character at a time. Ask the minimum number of modifications that can be made to the rearrangement of characters for the palindrome string.

Key observations

  • To be able to be rearranged into palindromes: a maximum of one character is allowed to appear an odd number of times, the other characters need to have an even number of times.
  • Counts how many characters appear an odd number of times odd_count, which needs to be altered only once for every two odd pairs.

formulas

cost = ⌊odd_count / 2⌋

Example

importation "aabcd" → frequency a:2 b:1 c:1 d:1 → odd_count=3 → cost=⌊3/2⌋=1

Topic 2: Total number of modifications for all substring palindromic rearrangements

Question meaning

given string dnaIn this case, we enumerate all substrings, calculate the modification cost in topic 1 for each substring, and finally return the sum.

Example

  • "abca" → sum of modification costs of all substrings = 6
  • "wwwww" → all are themselves rearrangable as palindromes, sum = 0

Violent Method Complexity

O(n³) (n² enumerated substrings × O(n) statistical frequency), n ≤ 2 × 105 It was unacceptable at the time.

Optimization Ideas

  • Quickly get the frequency of any substring character using a prefix count array
  • Combine sliding window or hashing tricks to reduce odd_count computation per substring to O(1)
  • Target complexity: O(n²) or better

Core Code Example (Topic 1)

from collections import Counter

def palindrome_transform_cost(s: str) -> int.
    freq = Counter(s)
    odd_count = sum(v & 1 for v in freq.values())
    return odd_count // 2

# Test
print(palindrome_transform_cost("aabcd")) # 1
print(palindrome_transform_cost("aaaabbbb")) # 0

Remote Assistance Experience

I completed the OA pre-test two rounds of simulations through Programhelp's untethered remote voice + on-line coaching mode:

  • Multi-pointer, greedy strategy walkthrough
  • String boundaries and input/output details
  • Python Quick Coding Tips

In the formal OA, my tutor only gave me micro-prompts by voice when I was stuck, which made the process smooth and did not interfere with my thinking, improving my efficiency and confidence.

Exam preparation advice

  • Brush LeetCode Medium (arrays, strings)
  • Practice common OA question sets
  • Do more 1v1 mock (preferably with voice + online environment)
  • Practice reading speed and boundary condition handling

Google OA requires you to output clear and complete solutions to common problems in less than 30 minutes. A combination of professional simulations and remote tutoring can help you do more with less!

-- Good luck with OA.
For one-on-one simulations and remote coaching, feel free to Contact us.

author avatar
Alex Ma Staff Software Engineer
Currently working at Google, with more than 10 years of development experience, currently serving as Senior Solution Architect. He has a bachelor's degree in computer science from Peking University and is good at various algorithms, Java, C++ and other programming languages. While in school, he participated in many competitions such as ACM and Tianchi Big Data, and owned a number of top papers and patents.
END