Bird
Raised Fist0
GCPcloud~20 mins

URL maps for routing in GCP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
URL Maps Routing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ service_behavior
intermediate
2:00remaining
How does a URL map route traffic based on host rules?

Consider a URL map configured with two host rules: one for example.com routing to backend service A, and another for test.com routing to backend service B. What happens when a request is sent to example.com?

AThe request is rejected because only test.com is configured in the URL map.
BThe request is routed to backend service B because test.com is the default host.
CThe request is routed to a random backend service because host rules do not affect routing.
DThe request is routed to backend service A because the host matches example.com.
Attempts:
2 left
💡 Hint

Think about how host rules match the domain name in the request.

❓ Configuration
intermediate
2:00remaining
What is the effect of path matchers in a URL map?

A URL map has a path matcher that routes requests with path /images/* to backend service Images, and all other paths to backend service Default. What backend service handles a request to /images/logo.png?

ABackend service Default, because /images/logo.png is not an exact match.
BBackend service Images, but only if the host matches a specific host rule.
CBackend service Images, because the path matches /images/*.
DThe request is rejected because no exact path match exists.
Attempts:
2 left
💡 Hint

Consider how path matchers use wildcard patterns.

❓ Architecture
advanced
3:00remaining
How to design a URL map for multi-region backend routing?

You want to route users to backend services in different regions based on URL path prefixes: /us/* to US backend, /eu/* to EU backend, and all others to a global backend. Which URL map configuration achieves this?

ACreate separate URL maps for each region and use DNS to route users.
BCreate path matchers for /us/* routing to US backend, /eu/* routing to EU backend, and a default path matcher routing to global backend.
CUse host rules to route /us/* and /eu/* paths to respective backends.
DConfigure backend services to detect user location and redirect requests.
Attempts:
2 left
💡 Hint

Think about how path matchers can route based on URL paths.

❓ security
advanced
2:00remaining
What happens if a URL map has no default backend service configured?

A URL map is created with host and path rules but no default backend service. What is the expected behavior when a request does not match any host or path rule?

AThe request is rejected with a 404 Not Found error.
BThe request is routed to the first backend service defined in the URL map.
CThe request is routed to a global default backend service automatically.
DThe request is redirected to the root path of the first host rule.
Attempts:
2 left
💡 Hint

Consider what happens when no matching rule exists and no default is set.

✅ Best Practice
expert
3:00remaining
How to optimize URL map configuration for minimal latency in global load balancing?

You manage a global HTTP(S) load balancer with multiple backend services worldwide. Which URL map design best reduces latency for users worldwide?

AUse host and path rules to route requests to backend services closest to the user's region, combined with Cloud CDN for caching.
BRoute all requests to a single global backend service to simplify configuration.
CUse only host rules without path matchers to reduce URL map complexity.
DConfigure URL maps to route based on IP address ranges instead of URL paths.
Attempts:
2 left
💡 Hint

Think about combining routing and caching to improve latency.

Practice

(1/5)
1. What is the main purpose of a URL map in Google Cloud Platform's load balancing?
easy
A. To store user data for web applications
B. To create virtual machines automatically
C. To route incoming web traffic to different backend services based on URL paths or hosts
D. To monitor network traffic usage

Solution

  1. Step 1: Understand URL map role

    A URL map directs web traffic to backend services depending on URL patterns.
  2. Step 2: Identify correct function

    Routing based on URL paths or hosts matches the description of URL maps.
  3. Final Answer:

    To route incoming web traffic to different backend services based on URL paths or hosts -> Option C
  4. Quick Check:

    URL maps route traffic = B [OK]
Hint: URL maps decide backend by URL pattern [OK]
Common Mistakes:
  • Confusing URL maps with storage or VM services
  • Thinking URL maps monitor traffic instead of routing
  • Assuming URL maps create resources automatically
2. Which of the following is the correct syntax to define a path matcher in a GCP URL map configuration?
easy
A. "pathMatcher": {"name": "pm1", "defaultService": "backend1"}
B. "pathMatchers": [{"name": "pm1", "defaultService": "backend1"}]
C. "pathMatchers": {"name": "pm1", "defaultService": "backend1"}
D. "pathMatcher": [{"name": "pm1", "defaultService": "backend1"}]

Solution

  1. Step 1: Identify correct key for multiple path matchers

    The key for multiple path matchers is plural: "pathMatchers" with an array value.
  2. Step 2: Confirm value type

    The value must be an array of objects, so square brackets [] are needed.
  3. Final Answer:

    "pathMatchers": [{"name": "pm1", "defaultService": "backend1"}] -> Option B
  4. Quick Check:

    Multiple path matchers use "pathMatchers" array = A [OK]
Hint: Use plural "pathMatchers" with array brackets [OK]
Common Mistakes:
  • Using singular "pathMatcher" for multiple entries
  • Using object instead of array for pathMatchers
  • Mixing singular/plural keys incorrectly
3. Given this URL map snippet, which backend service will handle the request to https://example.com/images/logo.png?
{
  "defaultService": "backend-default",
  "pathMatchers": [
    {
      "name": "pm-images",
      "defaultService": "backend-images",
      "pathRules": [
        {"paths": ["/images/*"], "service": "backend-images"}
      ]
    }
  ]
}
medium
A. backend-images
B. No backend matches, request fails
C. backend-logo
D. backend-default

Solution

  1. Step 1: Check path rules for "/images/*"

    The path matcher "pm-images" has a path rule matching "/images/*" directing to "backend-images".
  2. Step 2: Match request URL path

    The request path "/images/logo.png" matches the "/images/*" pattern, so it routes to "backend-images".
  3. Final Answer:

    backend-images -> Option A
  4. Quick Check:

    Path "/images/*" matches request = backend-images [OK]
Hint: Match URL path to pathRules first, else defaultService [OK]
Common Mistakes:
  • Choosing defaultService without checking pathRules
  • Assuming no match causes failure instead of default routing
  • Confusing path patterns with exact matches
4. You have this URL map configuration snippet:
{
  "defaultService": "backend-default",
  "pathMatchers": [
    {
      "name": "pm1",
      "defaultService": "backend1",
      "pathRules": [
        {"paths": ["/app/*"], "service": "backend-app"}
      ]
    }
  ]
}
Why does a request to https://example.com/app go to backend-default instead of backend-app?
medium
A. The defaultService overrides all pathRules
B. The path matcher name "pm1" is invalid
C. The backend service "backend-app" is not defined
D. The path "/app" does not match the pattern "/app/*" which requires a trailing slash

Solution

  1. Step 1: Understand path pattern matching

    The pattern "/app/*" matches paths starting with "/app/" but not "/app" exactly.
  2. Step 2: Check request path against pattern

    The request path "/app" lacks the trailing slash, so it does not match "/app/*" and falls back to defaultService.
  3. Final Answer:

    The path "/app" does not match the pattern "/app/*" which requires a trailing slash -> Option D
  4. Quick Check:

    Trailing slash matters in path patterns = C [OK]
Hint: Path patterns with * need trailing slash to match [OK]
Common Mistakes:
  • Assuming "/app" matches "/app/*" without slash
  • Thinking defaultService always overrides pathRules
  • Believing backend service must be explicitly defined to route
5. You want to route requests to https://example.com/api/v1/users to backend-v1 and requests to https://example.com/api/v2/users to backend-v2. Which URL map configuration correctly achieves this?
hard
A. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-default", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"}, {"paths": ["/api/v2/*"], "service": "backend-v2"} ] } ] }
B. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-v1", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"}, {"paths": ["/api/v2/*"], "service": "backend-v2"} ] } ] }
C. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-v2", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"} ] } ] }
D. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-default", "pathRules": [ {"paths": ["/api/*"], "service": "backend-v1"}, {"paths": ["/api/*"], "service": "backend-v2"} ] } ] }

Solution

  1. Step 1: Check path rules for specific version routing

    { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-default", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"}, {"paths": ["/api/v2/*"], "service": "backend-v2"} ] } ] } defines two distinct path rules: "/api/v1/*" to "backend-v1" and "/api/v2/*" to "backend-v2" which matches requirements.
  2. Step 2: Verify defaultService and pathRules consistency

    { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-default", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"}, {"paths": ["/api/v2/*"], "service": "backend-v2"} ] } ] } uses "backend-default" as defaultService, so unmatched paths go there, which is correct.
  3. Step 3: Identify issues in other options

    { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-v1", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"}, {"paths": ["/api/v2/*"], "service": "backend-v2"} ] } ] } sets defaultService to "backend-v1" which may misroute unmatched paths. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-v2", "pathRules": [ {"paths": ["/api/v1/*"], "service": "backend-v1"} ] } ] } misses "/api/v2/*" pathRule. { "defaultService": "backend-default", "pathMatchers": [ { "name": "pm-api", "defaultService": "backend-default", "pathRules": [ {"paths": ["/api/*"], "service": "backend-v1"}, {"paths": ["/api/*"], "service": "backend-v2"} ] } ] } duplicates "/api/*" paths causing conflict.
  4. Final Answer:

    Option A correctly routes /api/v1/* and /api/v2/* to respective backends -> Option A
  5. Quick Check:

    Distinct pathRules for versions = A [OK]
Hint: Use distinct pathRules for each version prefix [OK]
Common Mistakes:
  • Setting defaultService to one version backend
  • Missing pathRule for one version
  • Duplicating same path pattern causing conflicts
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard