Interview guides · The City Of Providence
The City Of Providence Software Engineer Interview Guide
The City Of Providence Software Engineer interview guide: reported rounds, questions and how candidates describe the process.
The 60-second brief
A Software Engineer at The City Of Providence plays a critical role in building, maintaining, and scaling the digital infrastructure that powers public services and internal operations. Engineers in this position are responsible for developing robust applications, optimizing database performance, and ensuring that civic platforms remain highly available and secure. The work directly impacts the daily lives of citizens and municipal workers, requiring a strong commitment to engineering excellence, reliability, and user-centric design. As a Software Engineer, you will collaborate with cross-functional teams, including product managers, system administrators, and department heads, to translate complex civic requirements into clean, maintainable code.
This guide is scoped to a Software Engineer candidate at The City Of Providence.
Focus areas
- Coding (Problem Solving / DSA-style questions)
- Data Structures & Algorithms (DSA)
- SQL
The The City Of Providence interview process
The City Of Providence candidates report 5 rounds over 4-6 weeks. The stages below are what candidates describe, not a published process.
Initial Screening
Begins with an automated screening or a brief phone conversation with a recruiter to verify background and technical alignment.
What to demonstrate
- Begins with an automated screening or a brief phone conversation with a recruiter to verify background and technical alignment
- Depth in Coding (Problem Solving / DSA-style questions)
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.
Online Assessment
Includes multiple-choice questions on computer science fundamentals, SQL queries, and coding challenges.
What to demonstrate
- Includes multiple-choice questions on computer science fundamentals, SQL queries, and coding challenges
- Depth in Coding (Problem Solving / DSA-style questions)
How to prepare
- Answer aloud and timed: Given an array of integers, write a program to find the first non-repeating character.
- Answer aloud and timed: Explain the difference between bubble sort and quicksort. Under what conditions would you prefer one over the other?
Technical Interviews
One or two rounds focusing on live coding, resume-based project discussions, and core computer science concepts.
What to demonstrate
- One or two rounds focusing on live coding, resume-based project discussions, and core computer science concepts
- Depth in Coding (Problem Solving / DSA-style questions)
How to prepare
- Answer aloud and timed: Write a SQL query to find the second-highest salary from an employee table.
- Answer aloud and timed: Explain the differences between an INNER JOIN, LEFT JOIN, and RIGHT JOIN with practical examples.
Managerial Interview
Assesses situational decision-making, team collaboration, and architectural thinking.
What to demonstrate
- Assesses situational decision-making, team collaboration, and architectural thinking
- Depth in Coding (Problem Solving / DSA-style questions)
How to prepare
- Answer aloud and timed: How do you optimize a slow-running SQL query? Discuss indexing and query execution plans.
- Answer aloud and timed: What is database normalization, and what are the advantages of third normal form (3NF)?
HR Interview
Focuses on cultural fit, motivation, and compensation.
What to demonstrate
- Focuses on cultural fit, motivation, and compensation
- Depth in Coding (Problem Solving / DSA-style questions)
How to prepare
- Answer aloud and timed: Explain the four pillars of Object-Oriented Programming (OOP) and how you have applied them in your past projects.
- Answer aloud and timed: What is the difference between a process and a thread in an Operating System?
Where candidates lose points
Master the STAR Method
When answering behavioral and situational questions, always structure your responses using the Situation, Task, Action, and Result framework. This keeps your answers concise and impactful.
Know Your Resume Inside Out
Our interviewers will ask highly detailed questions about your past projects, technical choices, and resume details. Be prepared to explain and defend every technology and architectural decision you have listed.
Practice Speaking Aloud
During technical rounds, explain your thought process clearly as you write code or design queries. Interviewers value your approach to problem-solving just as much as the final correct answer.
Questions & practice
Write a function to reverse a string in-place, and discuss its time and space complexity.
Medium · Data Structures & Algorithms
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- 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?
How would you implement a queue using two stacks? Explain the complexity of enqueue and dequeue operations.
Medium · Data Structures & Algorithms
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- 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?
Given an array of integers, write a program to find the first non-repeating character.
Medium · Data Structures & Algorithms
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- 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?
Explain the difference between bubble sort and quicksort. Under what conditions would you prefer one over the
Medium · Data Structures & Algorithms
Explain the difference between bubble sort and quicksort. Under what conditions would you prefer one over the other?
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- 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?
What is the difference between a process and a thread in an Operating System?
Medium · Computer Science Fundamentals
Approach
- Say what the runtime actually does before reasoning about the code.
- Name what is shared across threads and what owns each piece of state.
- Identify the window where an invariant is briefly untrue.
- Distinguish a value from a reference to it, and say which one you handed out.
Follow-up
- What happens if two callers reach this at the same time?
- Where could this allocate more than you expect?
Write a SQL query to find the second-highest salary from an employee table.
Medium · Databases & SQL
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?
Explain the differences between an INNER JOIN, LEFT JOIN, and RIGHT JOIN with practical examples.
Medium · Databases & SQL
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 optimize a slow-running SQL query? Discuss indexing and query execution plans.
Medium · Databases & SQL
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 database normalization, and what are the advantages of third normal form (3NF)?
Medium · Databases & SQL
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?
Explain the four pillars of Object-Oriented Programming (OOP) and how you have applied them in your past proje
Medium · Computer Science Fundamentals
Explain the four pillars of Object-Oriented Programming (OOP) and how you have applied them in your past projects.
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?
Describe the TCP/IP three-way handshake process. How does it ensure reliable communication?
Medium · Computer Science Fundamentals
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?
What are the differences between LAN, WAN, and wireless networking protocols, and how do they handle packet lo
Medium · Computer Science Fundamentals
What are the differences between LAN, WAN, and wireless networking protocols, and how do they handle packet loss?
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?
Read latency spikes on a sixty-second sawtooth
Medium · cache stampede · single-flight · ttl
The cached listing read path serves about 14k reads/second at an 85% hit rate. p99 sits at 35 ms for 57 seconds, jumps to 900 ms for 3, and repeats. During each spike the primary shows several hundred identical listing queries starting within the same millisecond, all carrying one large tenant's id. Cache entries use a 60-second TTL. Give the mechanism, the ordered checks, the fix, and the correctness hazard your fix must not introduce.
Approach
- Match the period to a configured number before theorising about load. A spike every 60 seconds against a 60-second TTL is an entry expiring, and you confirm it by correlating spike timestamps with the entry's write time rather than with the traffic curve. If the period had matched a cron or a GC interval instead, this is a different investigation.
- Establish the concurrency of the miss. Several hundred identical queries in one millisecond means the miss path has no coalescing: every request that arrives between expiry and repopulation recomputes. The herd size is that key's arrival rate times its recompute time, so at 1.2k reads/second for the hot key and a 250 ms recompute you expect about 300 concurrent misses, which matches what is observed.
- Add single-flight on the miss path so one caller per key recomputes under a short-lived lock while the rest wait for its result. Prefer stale-while-revalidate where the read tolerates it: return the expired value immediately and refresh asynchronously, which removes the latency spike rather than serialising it into a queue of waiters.
- De-synchronise the keys. Write TTLs with jitter, for example 60 seconds plus or minus 10%, so a deploy or a mass invalidation does not align every key on the same second and turn a per-key herd into a fleet-wide one.
Follow-up
- The same sawtooth appears on a key that is invalidated on write rather than expired. Is that the same bug?
- How does your answer change if the recompute takes 4 seconds instead of 250 ms?
Suggested practice checklist
Built from the rounds and topics The City Of Providence candidates report.
Day 1 — Map the The City Of Providence loop
- Write out the reported sequence: Initial Screening, Online Assessment, Technical Interviews, Managerial Interview, HR 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 5 reported rounds, with the weakest marked.
Day 2 — Work Coding (Problem Solving / DSA-style questions)
- Spend the session on Coding (Problem Solving / DSA-style questions), which The City Of Providence candidates report being tested on.
- Write one worked example in Coding (Problem Solving / DSA-style questions) and time yourself on it.
Deliverable: One timed worked example in Coding (Problem Solving / DSA-style questions).
Day 3 — Work Data Structures & Algorithms (DSA)
- Spend the session on Data Structures & Algorithms (DSA), which The City Of Providence candidates report being tested on.
- Write one worked example in Data Structures & Algorithms (DSA) and time yourself on it.
Deliverable: One timed worked example in Data Structures & Algorithms (DSA).
Day 4 — Work SQL
- Spend the session on SQL, which The City Of Providence candidates report being tested on.
- Write one worked example in SQL and time yourself on it.
Deliverable: One timed worked example in SQL.
Day 5 — Answer out loud: Data Structures & Algorithms
- Answer aloud, timed: Write a function to reverse a string in-place, and discuss its time and space complexity.
- Answer aloud, timed: How would you implement a queue using two stacks? Explain the complexity of enqueue and dequeue operations.
Deliverable: Spoken answers to 2 reported Data Structures & Algorithms question(s), under time.
Day 6 — Answer out loud: Databases & SQL
- Answer aloud, timed: Write a SQL query to find the second-highest salary from an employee table.
- Answer aloud, timed: Explain the differences between an INNER JOIN, LEFT JOIN, and RIGHT JOIN with practical examples.
Deliverable: Spoken answers to 2 reported Databases & SQL question(s), under time.
Day 7 — Answer out loud: Computer Science Fundamentals
- Answer aloud, timed: Explain the four pillars of Object-Oriented Programming (OOP) and how you have applied them in your past projects.
- Answer aloud, timed: What is the difference between a process and a thread in an Operating System?
Deliverable: Spoken answers to 2 reported Computer Science Fundamentals question(s), under time.
Behavioural preparation
Behavioural rounds judge the decision you made and what it cost.
Describe a time when you had to work on an ambiguous project with limited requirements. How did you proceed?
Medium · Behavioral & Situational
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 handle a disagreement with a team member regarding a technical decision or system architecture?
Medium · Behavioral & Situational
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?
Tell me about a challenging technical bug you encountered in a past project. How did you diagnose and resolve
Medium · Behavioral & Situational
Tell me about a challenging technical bug you encountered in a past project. How did you diagnose and resolve it?
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?
Why do you want to work as a Software Engineer for The City Of Providence, and how do you see your work impact
Medium · Behavioral & Situational
Why do you want to work as a Software Engineer for The City Of Providence, and how do you see your work impacting the community?
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?