Google TSE · Storage & Databases

Interview #1 (RRK) — Oct 27 · 10-day sprint Oct 17–26 · Built from your printable plan. Prep only — no AI during the interview.

Today: Day 1 — Frameworks

All days & topics

Tap any day to open it — past days included, for days you couldn't study. Your last-opened day is remembered on this device. Use the tabs above for Listen, Flashcards, and drills for that topic.

Day 1 — Frameworks + Foundations

Fri Oct 17 · Own the rubric. GCP resource hierarchy, IAM, VPC, PSA vs PSC.

0 of 10 days checked off

Protect these days if time slips: Day 3 (Cloud SQL), Day 4 (AlloyDB/Spanner), Day 8 (Behavioral), Day 9 (Full mocks). Never cut the aloud drill.

The 4 words they score

Understand → Prepare → Identify a solution → Support your solution.

Say: “Give me just a minute to collect my thoughts.” → restate the problem → clarify scope / onset / changes / impact → name the data and where it lives → rank hypotheses → “My recommendation is…” → name the metric.
Bridge (once, early): “At Oracle we clarify, verify, collect data, analyze, then solve and verify. I'll apply that here, mapped to Cloud SQL / Monitoring / Logging.” Then use Google's words.

Behavioral = STAR: Situation (2–3 sentences) → Task (“I owned…”) → Action (longest) → Result (X as measured by Y by doing Z + what you changed so it wouldn't recur).

Listen while you move

12 episodes (E1–E8 study + E9–E12 daily repetition). Play the MP3 (works in the car / Files app) or tap Read aloud to use your phone's voice. After each episode, pause and say the key line out loud — that repetition is the study. New: MOCK_PROMPTS.md (Gemini Live S1–S10) · HANDOFF_NOTE.md (Day 8 drill) · see STUDY_PLAN_V2.md for the persona-improved daily repetition stack.

DECISION MATRIX

Tap the card to flip · Say your answer out loud before flipping

Scenario drill (6–8 min each)

Pick a scenario. Start the timer. Work the 4 steps out loud, checking each off. Only then open the model outline.

08:00
Model outline (open only after your aloud attempt)

Code drills — narrate before you edit

Shared-doc round: clarifying questions + test cases, Big-O, malformed input, tradeoffs. The narration is what's scored.

Drill 1 · Log parser — top 5 errors/min + p50/p95/p99

import re, collections
pat = re.compile(r'(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}):\d{2}.*?(ERROR|WARN):(\w+).*?latency=(\d+)ms')
buckets = collections.defaultdict(list)
errors  = collections.defaultdict(collections.Counter)
for line in open('db.log'):
    m = pat.search(line)
    if not m: continue  # malformed: skip + count
    minute, level, code, lat = m.group(1), m.group(2), m.group(3), int(m.group(4))
    buckets[minute].append(lat)
    if level == 'ERROR': errors[minute][code] += 1
for minute in sorted(buckets):
    lats = sorted(buckets[minute])
    pct = lambda p: lats[min(len(lats)-1, int(len(lats)*p))]
    print(minute, errors[minute].most_common(5), pct(.5), pct(.95), pct(.99))

Talk track: regex → bucket by minute → Counter → sort for percentiles. O(n log n). Then say the BigQuery version: TIMESTAMP_TRUNC(ts, MINUTE) + GROUP BY + window functions.

Drill 2 · Health check — connections + replica lag

SELECT count(*) FROM pg_stat_activity;
SELECT EXTRACT(EPOCH FROM (now() - pg_last_xact_replay_timestamp()));

Alert after 3 consecutive breaches (no flapping). Backoff with jitter — never hammer a sick DB. Run as cron / Cloud Run / Monitoring alert.

Drill 3 · Auditor — flag public buckets & no-backup instances

gcloud storage buckets list --format=json   # iamConfiguration.publicAccessPrevention
gcloud sql instances list --format=json     # backupConfiguration.enabled / PITR

Parse defensively (.get with defaults). This is the JD's “build investigation tools” in Python.

Drill 4 · Buggy client — name all 5 before editing

Sentence shape: “I see X, the risk is Y, the fix is Z — test case: …”

Cheat sheet

Decision matrix — 30-second answers

NeedPickTrap
Objects / lakeCloud StorageLifecycle deletes by surprise
Managed MySQL/PG/SQL SvrCloud SQLHA = active-standby; replicas ≠ HA; mostly connectivity
Hi-perf PG + analyticsAlloyDBNot “Exadata on GCP”
Global, strongly consistentSpannerMonotonic keys hotspot
Documents, mobile/webFirestoreComposite indexes; 500/50/5 ramp; sequential IDs
Massive wide-columnBigtableRow key is everything; single-row atomicity
Cache / sessionMemorystorePrivate-only; watch eviction/memory
Analytics over logsBigQueryWarehouse — answer by access pattern
Stay on OracleOracle DB@GCOracle-operated; not GCP-native

Checklists

Can't connect (Cloud SQL): IAM → PSA/PSC → Proxy/connector → SSL → limits → pool math.
Disappearing objects: lifecycle → retention/Bucket Lock → soft delete → versioning → Data Access audit log.
Hotspot: Key Visualizer → leading key field → UUID / bit-reversed / hash prefix / promote high-cardinality field.
GKE→DB: DNS → sidecar → Workload Identity → DB limit → network policy. Capture: no SYN = local/policy · SYN+RST = refused · SYN+retransmits = path drop · TLS alert = SSL mode.

Gap line — never bluff

“I haven't run GKE in production — here's how I'd isolate pod vs proxy vs IAM vs limits, and where I'd pull in the platform owner.”

Resources (official first)

TSE Prep Guide · Database Engineer Learning Path · Google Cloud Tech (YouTube) · SRE Books (free)
Full day-by-day watch/read/do list: open RESOURCES.md in this folder.