cswork / libraryOpen practice workspace

Interview guides · Fulton County Schools

Fulton County Schools Software Engineer Interview Guide

Fulton County Schools Software Engineer interview guide: reported rounds, questions and how candidates describe the process.

The 60-second brief

As a Software Engineer at Fulton County Schools (FCS), you are stepping into a role that directly impacts one of the largest and most dynamic school districts in Georgia. Your work goes beyond traditional corporate software development; you are building, maintaining, and optimizing the digital infrastructure that empowers educators, administrators, and students daily. This position places you at the intersection of public service and technology. You will contribute to critical internal systems, student information portals, and data management platforms that require high reliability, security, and scalability. Because the district relies heavily on accurate data and seamless user experiences, your engineering decisions have a tangible effect on the educational ecosystem. Expect a role that balances complex technical challenges with a strong mission-driven culture.

This guide is scoped to a Software Engineer candidate at Fulton County Schools.

Focus areas

  • SQL
  • Database Querying
  • Relational Databases

The Fulton County Schools interview process

Fulton County Schools candidates report 3 rounds over 3-5 weeks. The stages below are what candidates describe, not a published process.

Initial Screening

A brief, non-technical conversation focusing on your background, relevant occupations, and understanding of public education obligations.

What to demonstrate

  • A brief, non-technical conversation focusing on your background, relevant occupations, and understanding of public education obligations
  • Depth in SQL

How to prepare

  • Be able to walk your CV end to end in two minutes, and say why this company specifically.
  • Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.

Panel Interview

A rigorous onsite or virtual panel interview with multiple superiors assessing your past projects and technical scenarios.

What to demonstrate

  • A rigorous onsite or virtual panel interview with multiple superiors assessing your past projects and technical scenarios
  • Depth in SQL

How to prepare

  • Answer aloud and timed: Describe a past project where you had to take ownership from start to finish.
  • Answer aloud and timed: What are the obligations and duties you believe are associated with working for a public school district?

Technical Assessment

A practical computer-based SQL test to evaluate your database management skills and query writing abilities.

What to demonstrate

  • A practical computer-based SQL test to evaluate your database management skills and query writing abilities
  • Depth in SQL

How to prepare

  • Answer aloud and timed: Tell us about a time you had to learn a new technology quickly to complete a project.
  • Answer aloud and timed: Scenario: You are tasked with building a tool for teachers to input grades, but the requirements provided are very vague. What are your next steps?

Where candidates lose points

Prepare for the Panel Dynamic

You will likely walk into a room with several superiors. Practice making eye contact with everyone on the panel, not just the person who asked the question. Stay composed even if some interviewers seem less conversational than others.

Brush Up on Raw SQL

Do not rely solely on your knowledge of ORMs (like Entity Framework or Hibernate). Spend time on platforms like LeetCode or HackerRank specifically practicing raw SQL queries, joins, and aggregations.

Do not underestimate the computer-based SQL test

Even if your daily work involves heavy backend coding, the specific syntax and logic of raw database querying will be strictly evaluated.

Connect Work to Impact

Whenever you discuss a past project, tie it back to the end-user. In the context of Fulton County Schools, demonstrating that you understand how software impacts administrative efficiency or student success will set you apart.

Questions & practice

Scenario: You are tasked with building a tool for teachers to input grades, but the requirements provided are

Medium · Scenario-Based Problem Solving

Scenario: You are tasked with building a tool for teachers to input grades, but the requirements provided are very vague. What are your next steps?

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Scenario: A user reports that a specific internal application is running extremely slowly. How do you go about

Medium · Scenario-Based Problem Solving

Scenario: A user reports that a specific internal application is running extremely slowly. How do you go about diagnosing the issue?

Approach

  1. Restate the input: its shape, its size, and what is guaranteed about it.
  2. Name the brute-force solution and its complexity before improving on it.
  3. Choose the data structure from the access pattern, not from familiarity.
  4. State the target complexity and say which constraint rules the naive version out.

Follow-up

  • How does this change if the input no longer fits in memory?
  • What is the worst case, and how likely is it on real data?

Canonicalise a request body into a stable idempotency fingerprint

Medium · parsing · canonicalisation · hashing

idempotency_key.request_fingerprint is a SHA-256 over the method, path and canonicalised body, and a retry whose fingerprint differs must be rejected with 422 rather than served the stored response. Write the canonicaliser. Bodies are JSON up to 256 KB nested at most 32 levels; clients vary key order, whitespace and unicode escaping, and some send 64-bit ids as JSON numbers. Produce a deterministic byte string such that semantically identical bodies match and any semantic difference does not. State your complexity and name two normalisations you refuse to perform.

Approach

  1. Parse once into a tree, then re-serialise under fixed rules: object keys sorted, array order preserved, one escaping convention, no insignificant whitespace. Parsing is O(n) and sorting keys is O(k log k) per object, so O(n log n) overall with O(depth) stack, and the 32-level cap is enforced during parsing because hostile nesting is how a canonicaliser becomes a stack overflow.
  2. Sort keys by their UTF-8 bytes and say why the obvious implementation is wrong in some runtimes: a default string comparison that orders by UTF-16 code units places surrogate pairs, meaning code points from U+10000 up, below U+E000 to U+FFFF, which is not UTF-8 byte order, so two services written in different languages disagree on the same document.
  3. Do not re-encode numbers through a double. IEEE-754 binary64 represents integers exactly only up to 2^53, so normalising a 19-digit id through a float changes it, and 1 against 1.0 cannot be reconciled without deciding whether they are the same value. Preserve the literal token, and require ids as strings at the API boundary if you want them comparable.
  4. Reject duplicate keys rather than picking one. JSON permits them and parsers disagree, most keeping the last, so any choice you make ties the fingerprint to a parser detail that the code handling the request does not necessarily share.

Follow-up

  • A client sends the same logical request with an extra field your API ignores. Same key, different fingerprint, so you return 422. Is that the right answer?
  • Where does the fingerprint get computed relative to request decompression and the body-size limit?

Write a SQL query to join three tables and return a summarized report of the data.

Medium · Database and SQL (Practical Testing)

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

Explain how you would optimize a query that is causing a bottleneck in an application.

Medium · Database and SQL (Practical Testing)

Approach

  1. Name the grain you start from and join outward from it.
  2. Check whether any join is one-to-many before aggregating, or the sums inflate.
  3. Say which index the query would use, and what makes it unusable.
  4. Handle the rows that do not match: that is usually the actual question.

Follow-up

  • How does the query change if that join becomes one-to-many?
  • What happens to this when the table is ten times larger?

Walk us through your resume and highlight the projects most relevant to our organization.

Medium · Background and Career Trajectory

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

Where do you see yourself in the future, and how does this role fit into those goals?

Medium · Background and Career Trajectory

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

Describe a past project where you had to take ownership from start to finish.

Medium · Background and Career Trajectory

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

What are the obligations and duties you believe are associated with working for a public school district?

Medium · Background and Career Trajectory

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

Tell us about a time you had to learn a new technology quickly to complete a project.

Medium · Background and Career Trajectory

Approach

  1. Clarify what is being asked and what a complete answer contains.
  2. State your assumptions explicitly before working the problem.
  3. Say what you would check first and why it is the highest-information step.
  4. Work from the requirement backwards to the design.

Follow-up

  • What assumption would you test first?
  • How would you know your answer was wrong?

How do you balance the need to deliver a project quickly with the need to write clean, scalable code?

Medium · Scenario-Based Problem Solving

Approach

  1. Fix the scope first: who calls this, how often, and what they do when it fails.
  2. Name the read and write paths separately; they rarely have the same bottleneck.
  3. Choose a partition key and say what query it makes expensive.
  4. State the consistency you need, and where you are willing to be stale.

Follow-up

  • What breaks first when traffic grows ten times?
  • How does this behave when that dependency is down for an hour?

One log partition stops advancing while the others drain

Easy · poison message · head-of-line blocking · consumer lag

Search results for a subset of tenants are hours stale; the rest are current. The projection consumer reports lag of zero on 15 of 16 partitions and 400,000 on one. Its error rate is flat and its CPU is idle. outbox_event has no pending rows older than a second, so the relay has published everything it holds. Identify the mechanism, give the ordered checks, and state what you do in the first ten minutes versus what you change permanently.

Approach

  1. Read the lag distribution first. A slow consumer lags everywhere; zero on fifteen partitions and 400,000 on one is not throughput. Idle CPU on the stuck partition means the consumer is not advancing its offset at all, which points at one message it cannot get past rather than at a rate problem.
  2. Exonerate the producer before touching the consumer. No pending outbox rows older than a second means the relay published, so the event exists in the log. This separates never sent from sent and never applied, which are different code paths and usually different owners.
  3. Read the message at the stuck offset and the handler's log lines for its event_id. A flat error rate with no progress has two explanations and you must distinguish them: the handler is throwing and the retry loop is swallowing it, or the handler is blocking on something and never returning. Idle CPU with no error lines favours the second.
  4. Mitigate before diagnosing further. Move the offending event to a dead-letter store and commit the offset past it. Adding consumers does nothing here, because a partition is consumed by exactly one member of the group, and the blast radius is every aggregate hashed to that partition, not only the aggregate that produced the bad event.

Follow-up

  • The dead-lettered event carried aggregate_version 7 and the projection had applied 6. What must the replay do differently if 8 and 9 landed in the meantime?
  • How do you show staleness to the user while the partition is behind, given the API already returns the projection's watermark?

Suggested practice checklist

Built from the rounds and topics Fulton County Schools candidates report.

Day 1 — Map the Fulton County Schools loop

  • Write out the reported sequence: Initial Screening, Panel Interview, Technical Assessment.
  • For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.

Deliverable: A one-page map of the 3 reported rounds, with the weakest marked.

Day 2 — Work SQL

  • Spend the session on SQL, which Fulton County Schools candidates report being tested on.
  • Write one worked example in SQL and time yourself on it.

Deliverable: One timed worked example in SQL.

Day 3 — Work Database Querying

  • Spend the session on Database Querying, which Fulton County Schools candidates report being tested on.
  • Write one worked example in Database Querying and time yourself on it.

Deliverable: One timed worked example in Database Querying.

Day 4 — Work Relational Databases

  • Spend the session on Relational Databases, which Fulton County Schools candidates report being tested on.
  • Write one worked example in Relational Databases and time yourself on it.

Deliverable: One timed worked example in Relational Databases.

Day 5 — Answer out loud: Background and Career Trajectory

  • Answer aloud, timed: Walk us through your resume and highlight the projects most relevant to our organization.
  • Answer aloud, timed: Where do you see yourself in the future, and how does this role fit into those goals?

Deliverable: Spoken answers to 2 reported Background and Career Trajectory question(s), under time.

Day 6 — Answer out loud: Scenario-Based Problem Solving

  • Answer aloud, timed: Scenario: You are tasked with building a tool for teachers to input grades, but the requirements provided are very vague. What are your next steps?
  • Answer aloud, timed: Scenario: A user reports that a specific internal application is running extremely slowly. How do you go about diagnosing the issue?

Deliverable: Spoken answers to 2 reported Scenario-Based Problem Solving question(s), under time.

Day 7 — Answer out loud: Database and SQL (Practical Testing)

  • Answer aloud, timed: Write a SQL query to join three tables and return a summarized report of the data.
  • Answer aloud, timed: How do you handle duplicate records in a database?

Deliverable: Spoken answers to 2 reported Database and SQL (Practical Testing) question(s), under time.

Behavioural preparation

Behavioural rounds judge the decision you made and what it cost.

Describe a time when you disagreed with a superior or team member about a technical decision. How did you reso

Medium · Scenario-Based Problem Solving

Describe a time when you disagreed with a superior or team member about a technical decision. How did you resolve it?

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

How do you handle duplicate records in a database?

Medium · Database and SQL (Practical Testing)

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?

What is your experience with writing and maintaining stored procedures?

Medium · Database and SQL (Practical Testing)

Approach

  1. Pick a story where you made the decision, not one where you watched it.
  2. State the situation in two sentences and spend the rest on the reasoning.
  3. Give the blast radius: what could have broken, and what you measured.
  4. Name the disagreement and how you resolved it with evidence.

Follow-up

  • What would you do differently if you ran that again?
  • How did you know your change caused the improvement?