Interview guides · Texas Education Agency
Texas Education Agency Software Engineer Interview Guide
Texas Education Agency Software Engineer interview guide: reported rounds, questions and how candidates describe the process.
The 60-second brief
The Texas Education Agency (TEA) is the state agency responsible for overseeing primary and secondary public education across Texas, serving more than five million students. As a Software Engineer at TEA, you do not just write code; you build, maintain, and secure the foundational digital infrastructure that powers Texas public schools. Your work directly impacts student tracking, academic testing, school finance administration, and state-mandated reporting systems like the Texas Student Data System (TSDS). Engineers at TEA work across several highly specialized tracks to support the agency's vast data ecosystem.
This guide is scoped to a Software Engineer candidate at Texas Education Agency.
Focus areas
- SAS Programming
- Web Architecture
- Java Development
The Texas Education Agency interview process
Texas Education Agency candidates report 4 rounds over 3-5 weeks. The stages below are what candidates describe, not a published process.
Initial Screening
Human resources verifies that you meet the minimum qualifications listed in the job posting.
What to demonstrate
- Human resources verifies that you meet the minimum qualifications listed in the job posting
- Depth in SAS Programming
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.
Technical Panel Interview
A panel of three to five interviewers asks pre-scripted questions and takes notes on your responses.
What to demonstrate
- A panel of three to five interviewers asks pre-scripted questions and takes notes on your responses
- Depth in SAS Programming
How to prepare
- Answer aloud and timed: Describe a scenario where you had to debug a memory leak in a Java application. What tools did you use, and how did you resolve the issue?
- Answer aloud and timed: What are the key differences between a relational database and a non-relational database, and when would you choose one over the other for a state reporting system?
Practical Technical Exercise
Candidates may complete a practical technical exercise or system design discussion.
What to demonstrate
- Candidates may complete a practical technical exercise or system design discussion
- Depth in SAS Programming
How to prepare
- Answer aloud and timed: How do you implement transactional management in a Spring Boot application to ensure data consistency across multiple database operations?
- Answer aloud and timed: How do you use the SAS Macro facility to automate repetitive data processing tasks, and how do you debug a macro that is failing silently?
Second-Round Interview
A second-round interview with senior agency leadership to discuss team fit and long-term career goals.
What to demonstrate
- A second-round interview with senior agency leadership to discuss team fit and long-term career goals
- Depth in SAS Programming
How to prepare
- Answer aloud and timed: Describe your approach to optimizing a PROC SQL step that is running slowly on a dataset containing millions of student records.
- Answer aloud and timed: What is the difference between a SAS merge and a SQL join, and under what circumstances would you choose one over the other?
Where candidates lose points
Emphasize Data Security and Privacy
Always highlight your awareness of data security. Mentioning familiarity with FERPA, HIPAA, or general data encryption practices will show that you understand the responsibilities of handling sensitive public data.
Structure Your Answers Using the STAR Method
For behavioral and situational questions, clearly outline the Situation, Task, Action, and Result. This structured approach aligns perfectly with the formal evaluation matrices used by state interview panels.
Demonstrate Familiarity with Public Sector Challenges
Show that you understand the unique constraints of working in state government, such as working with legacy systems, managing tight compliance deadlines, and collaborating with diverse public stakeholders.
Be Prepared to Discuss Legacy Modernization
Many projects at TEA involve migrating legacy systems to modern, cloud-based architectures. Be ready to discuss how you have successfully refactored old code or migrated data in your past roles.
Questions & practice
Track a rolling failure rate per destination for circuit decisions
Easy · sliding window · ring buffer · circuit breaker
The egress service delivers about 1,500 webhooks per second across roughly 40,000 destinations, each call bounded by a 10 second timeout. Maintain, per destination, the failure rate over the trailing 60 seconds so a caller can ask before dispatch whether the circuit should open. Attempts arrive as (destination_id, finished_at_ms, outcome). Requirement: amortised O(1) per attempt, with total memory bounded by the destination count rather than by traffic. Give the structure, its exact memory, and the rule that stops a destination with three attempts from opening a circuit.
Approach
- Name the exact-deque version and then reject it as the default. Holding timestamps and advancing a tail pointer past anything older than now minus 60 seconds is a correct two-pointer window at amortised O(1) per attempt, but its memory tracks in-window traffic, so one destination in a retry storm holds hundreds of thousands of entries while thousands of quiet destinations hold none.
- Use a ring of 60 one-second buckets per destination, each bucket a pair of counters for attempts and failures. On an attempt, advance the ring by the elapsed whole seconds, zeroing at most min(elapsed, 60) buckets, then increment the head. That is amortised O(1) with a fixed footprint per destination.
- State the footprint: 60 buckets times two 4-byte counters is 480 bytes of payload per destination, so 40,000 destinations is roughly 20 to 25 MB with per-entry overhead, bounded by the catalogue rather than by the rate. The cost is granularity, since the oldest bucket ages out in whole seconds, which is far tighter than the decision needs.
- Require a minimum sample before the circuit may open. A destination with three attempts and three failures reads as 100 percent and is not evidence; a floor of roughly 20 attempts in the window makes the ratio meaningful, and below that floor use a run of consecutive failures as the trigger instead.
Follow-up
- The fleet is 30 instances and each sees roughly a thirtieth of a destination's traffic. Where does the rate actually live, and what does a per-instance answer get wrong?
- A destination answers in 9.5 seconds and succeeds. It is not failing but it is consuming your per-destination concurrency. What signal should open the circuit here?
Collapse a redelivered event batch into per-aggregate high-water marks
Easy · hashing · at-least-once · aggregation
You drain a batch of up to 5,000,000 events, each (aggregate_id BIGINT, aggregate_version INT, event_type, payload). The log guarantees order within one aggregate only; the batch merges 64 partitions, and a relay failover has redelivered a range, so an older version for an aggregate can appear after a newer one. Given a map of last_applied_version per aggregate, produce the events worth applying, at most one per (aggregate_id, version), plus the count discarded. Target O(n) time. State the memory for 2,000,000 distinct aggregates and what you do when it does not fit.
Approach
- One pass, one hash map from aggregate_id to the highest version kept, and a discard counter. An event whose version is at or below last_applied_version for its aggregate is dropped without further work, which is the whole reason the event carries its version rather than a delta. O(n) expected time, O(d) space in distinct aggregates.
- Keep the maximum, never the last occurrence. The redelivered range means the final appearance of an aggregate in the batch can be an older version than one seen earlier in the same batch, so last-wins applies stale state over newer state and the projection regresses with no error anywhere.
- Cost the memory instead of calling it large: an 8-byte key plus a 4-byte version is 12 bytes of payload, and an open-addressed table held at a 0.7 load factor costs roughly 17 bytes per entry before per-slot metadata, so 2,000,000 aggregates is tens of megabytes in a native layout and several times that in a runtime that boxes both key and value.
- If the distinct set exceeds memory, partition on hash(aggregate_id) mod P and reduce each partition independently. Every event for one aggregate hashes to the same partition, so the per-partition result is exact and the merge is concatenation rather than a second reduction.
Follow-up
- The payload is a patch rather than a snapshot, so applying only the highest version loses the intermediate changes. What changes in your reduction?
- How do you detect that version 7 arrived while version 6 was never delivered, and what should the consumer do about the gap?
Find overlapping job attempts and peak concurrency from lease records
Medium · sweep line · intervals · leases
A day of job_run history yields about 50,000,000 attempt records: (job_run_id, job_type, attempt, started_at, finished_at which is NULL when the worker died, lease_expires_at). Leases expire on a clock, so a job that outran its lease ran twice. Produce (a) every job_run_id whose attempts overlapped in wall-clock time and (b) the peak number of simultaneously running attempts per job_type with the minute it occurred. Target O(n log n). State how you treat a NULL finished_at and what clock skew does to your answer.
Approach
- Define the interval before sorting anything: an attempt occupies [started_at, COALESCE(finished_at, lease_expires_at)). finished_at is observed and lease_expires_at is only a promise, so every attempt without a finish contributes an estimate and the whole result is a lower bound on overlap rather than an exact count.
- For peak concurrency, sweep: emit 2n endpoints, sort by (timestamp, kind) with ends ordered before starts at equal timestamps, then walk the sequence maintaining a counter per job_type and record each type's maximum with its timestamp. O(n log n) dominated by the sort, O(n) space, or O(1) extra if the sort is external and the walk streams.
- For overlap detection, do not compare attempts pairwise. A single global sort by (job_run_id, started_at) gives both the grouping and the order; within a group, keep the maximum end seen so far and report an overlap exactly when the next start is less than that running maximum, which is one linear pass after the sort.
- Half-open intervals matter and are easy to get wrong: with closed intervals an attempt ending at the same millisecond another begins reads as concurrency two, and across 50,000,000 records that artefact swamps the real signal.
Follow-up
- A handler is not idempotent and you have found 400 overlapping jobs. Which of them actually caused damage, and what would you query to find out?
- Peak concurrency for one job_type is 4 against a configured cap of 4. Is the cap working, or is the data hiding attempts that never started?
Explain the difference between Hibernate's first-level and second-level cache, and how you would configure the
Medium · Java Development & Systems Analysis
Explain the difference between Hibernate's first-level and second-level cache, and how you would configure them to optimize a high-traffic database query.
Approach
- Name the grain you start from and join outward from it.
- Check whether any join is one-to-many before aggregating, or the sums inflate.
- Say which index the query would use, and what makes it unusable.
- 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?
Describe your approach to optimizing a PROC SQL step that is running slowly on a dataset containing millions o
Medium · SAS Programming & Data Analytics
Describe your approach to optimizing a PROC SQL step that is running slowly on a dataset containing millions of student records.
Approach
- Name the grain you start from and join outward from it.
- Check whether any join is one-to-many before aggregating, or the sums inflate.
- Say which index the query would use, and what makes it unusable.
- 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?
What is the difference between a SAS merge and a SQL join, and under what circumstances would you choose one o
Medium · SAS Programming & Data Analytics
What is the difference between a SAS merge and a SQL join, and under what circumstances would you choose one over the other?
Approach
- Name the grain you start from and join outward from it.
- Check whether any join is one-to-many before aggregating, or the sums inflate.
- Say which index the query would use, and what makes it unusable.
- 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?
Describe the steps you would take to secure a web server against common vulnerabilities such as SQL injection,
Medium · Web Architecture & Infrastructure
Describe the steps you would take to secure a web server against common vulnerabilities such as SQL injection, cross-site scripting (XSS), and DDoS attacks.
Approach
- Name the grain you start from and join outward from it.
- Check whether any join is one-to-many before aggregating, or the sums inflate.
- Say which index the query would use, and what makes it unusable.
- 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?
How do you secure a RESTful API in a enterprise Java application, and what protocols do you use to manage user
Medium · Java Development & Systems Analysis
How do you secure a RESTful API in a enterprise Java application, and what protocols do you use to manage user authorization?
Approach
- Say who the caller is and what they do when the call fails halfway.
- Define the identity of a request so a retry cannot double-apply it.
- Separate accepted, pending, failed and confirmed; they are different facts.
- Design the error taxonomy before the success shape; callers branch on it.
Follow-up
- What happens if the caller retries after a timeout?
- How does a client discover it is on an old version of this contract?
What are the key differences between a relational database and a non-relational database, and when would you c
Medium · Java Development & Systems Analysis
What are the key differences between a relational database and a non-relational database, and when would you choose one over the other for a state reporting system?
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- 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 implement transactional management in a Spring Boot application to ensure data consistency across m
Medium · Java Development & Systems Analysis
How do you implement transactional management in a Spring Boot application to ensure data consistency across multiple database operations?
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- Work from the requirement backwards to the design.
Follow-up
- What assumption would you test first?
- How would you know your answer was wrong?
Explain how you would generate a standardized, highly formatted PDF or Excel report using SAS Output Delivery
Medium · SAS Programming & Data Analytics
Explain how you would generate a standardized, highly formatted PDF or Excel report using SAS Output Delivery System (ODS).
Approach
- Clarify what is being asked and what a complete answer contains.
- State your assumptions explicitly before working the problem.
- Say what you would check first and why it is the highest-information step.
- 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 configure a load balancer to ensure high availability and session persistence for a multi-tier web
Medium · Web Architecture & Infrastructure
How do you configure a load balancer to ensure high availability and session persistence for a multi-tier web application?
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- 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?
How do you manage SSL/TLS certificates across a large enterprise web infrastructure, and how do you automate t
Medium · Web Architecture & Infrastructure
How do you manage SSL/TLS certificates across a large enterprise web infrastructure, and how do you automate the renewal process?
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- 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?
Explain the role of a reverse proxy server and how you would configure it to optimize web application performa
Medium · Web Architecture & Infrastructure
Explain the role of a reverse proxy server and how you would configure it to optimize web application performance.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- 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?
Describe a scenario where you had to debug a memory leak in a Java application. What tools did you use, and ho
Medium · Java Development & Systems Analysis
Describe a scenario where you had to debug a memory leak in a Java application. What tools did you use, and how did you resolve the issue?
Approach
- Establish what changed and when, before forming any theory.
- Pick a bisection that eliminates candidates whichever way it turns out.
- Check the instrumentation before believing the symptom.
- Separate the trigger from the cause; the deploy is rarely the bug.
Follow-up
- What would you look at first, and what would it rule out?
- How would you tell a cause from a coincidence here?
How do you use the SAS Macro facility to automate repetitive data processing tasks, and how do you debug a mac
Medium · SAS Programming & Data Analytics
How do you use the SAS Macro facility to automate repetitive data processing tasks, and how do you debug a macro that is failing silently?
Approach
- Establish what changed and when, before forming any theory.
- Pick a bisection that eliminates candidates whichever way it turns out.
- Check the instrumentation before believing the symptom.
- Separate the trigger from the cause; the deploy is rarely the bug.
Follow-up
- What would you look at first, and what would it rule out?
- How would you tell a cause from a coincidence here?
Suggested practice checklist
Built from the rounds and topics Texas Education Agency candidates report.
Day 1 — Map the Texas Education Agency loop
- Write out the reported sequence: Initial Screening, Technical Panel Interview, Practical Technical Exercise, Second-Round Interview.
- 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 4 reported rounds, with the weakest marked.
Day 2 — Work SAS Programming
- Spend the session on SAS Programming, which Texas Education Agency candidates report being tested on.
- Write one worked example in SAS Programming and time yourself on it.
Deliverable: One timed worked example in SAS Programming.
Day 3 — Work Web Architecture
- Spend the session on Web Architecture, which Texas Education Agency candidates report being tested on.
- Write one worked example in Web Architecture and time yourself on it.
Deliverable: One timed worked example in Web Architecture.
Day 4 — Work Java Development
- Spend the session on Java Development, which Texas Education Agency candidates report being tested on.
- Write one worked example in Java Development and time yourself on it.
Deliverable: One timed worked example in Java Development.
Day 5 — Answer out loud: Java Development & Systems Analysis
- Answer aloud, timed: Explain the difference between Hibernate's first-level and second-level cache, and how you would configure them to optimize a high-traffic database query.
- Answer aloud, timed: How do you secure a RESTful API in a enterprise Java application, and what protocols do you use to manage user authorization?
Deliverable: Spoken answers to 2 reported Java Development & Systems Analysis question(s), under time.
Day 6 — Answer out loud: SAS Programming & Data Analytics
- Answer aloud, timed: How do you use the SAS Macro facility to automate repetitive data processing tasks, and how do you debug a macro that is failing silently?
- Answer aloud, timed: Describe your approach to optimizing a PROC SQL step that is running slowly on a dataset containing millions of student records.
Deliverable: Spoken answers to 2 reported SAS Programming & Data Analytics question(s), under time.
Day 7 — Answer out loud: Web Architecture & Infrastructure
- Answer aloud, timed: How do you configure a load balancer to ensure high availability and session persistence for a multi-tier web application?
- Answer aloud, timed: Describe the steps you would take to secure a web server against common vulnerabilities such as SQL injection, cross-site scripting (XSS), and DDoS attacks.
Deliverable: Spoken answers to 2 reported Web Architecture & Infrastructure question(s), under time.
Behavioural preparation
Behavioural rounds judge the decision you made and what it cost.
How do you handle missing values, data anomalies, and data validation when importing external files into a SAS
Medium · SAS Programming & Data Analytics
How do you handle missing values, data anomalies, and data validation when importing external files into a SAS environment?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- 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 containerization, and how would you migrate a legacy web application to a Docker-
Medium · Web Architecture & Infrastructure
What is your experience with containerization, and how would you migrate a legacy web application to a Docker-based environment?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- 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 manage technical debt while ensuring that your team continues to deliver new features and complianc
Medium · Leadership & Software Management
How do you manage technical debt while ensuring that your team continues to deliver new features and compliance updates on schedule?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- 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?
Describe a time when you had to resolve a significant technical disagreement between two senior engineers on y
Medium · Leadership & Software Management
Describe a time when you had to resolve a significant technical disagreement between two senior engineers on your team. What was your process?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- 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 estimate project timelines and resource requirements for a complex, multi-month software developmen
Medium · Leadership & Software Management
How do you estimate project timelines and resource requirements for a complex, multi-month software development initiative?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- 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 strategies do you use to mentor junior developers and foster a culture of continuous learning and code qu
Medium · Leadership & Software Management
What strategies do you use to mentor junior developers and foster a culture of continuous learning and code quality within your team?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- 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 manage stakeholder expectations when a critical project faces unexpected technical delays or scope
Medium · Leadership & Software Management
How do you manage stakeholder expectations when a critical project faces unexpected technical delays or scope changes?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- 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?