Citizens · Software Engineer
Updated · 2026-10-02

Citizens Software Engineer
Interview Guide

THE 60-SECOND BRIEF

Citizens appears in these reports as a banking and financial-services employer. The Software Engineer role is described as building and maintaining applications for its banking and financial services. Candidates describe the daily work as gathering requirements with product managers, quality assurance staff and other engineers, implementing features, reviewing code, testing, resolving production issues, and following a change from requirements through deployment and maintenance. The requirements candidates describe list at least one language (Java, Python and C# are the examples), Agile and DevOps ways of working, SQL and NoSQL databases, and AWS or Azure as a plus. Front-end skills (JavaScript, React, Angular), design patterns and awareness of security practice are listed as nice to have. Reports mention no specific team, product line or internal technology beyond these.

This guide is for engineers applying to the Software Engineer role at Citizens; candidates describe a typical background of 2-5 years in software development. It covers every question candidates report: five security fundamentals, six behavioral prompts, four case-study prompts and three coding prompts. It also covers the two reported rounds, the stack the requirements list, and a seven-day plan. It cannot tell you which team you will meet or which exact question you will be asked, so it trains breadth across the reported question types.

Candidates report two rounds, Preliminary Assessments and In-depth Discussions, over about 2-4 weeks. The reported questions are grouped by type (security, behavioral, case study, coding) and are not tied to a particular round.

Confidentiality, Integrity, Availability (CIA)TLS (Transport Layer Security)Authentication vs Authorization

36 min read

Browse Software Engineer questions

See the practice prompts

20Practice promptsAcross five skill areas

The reported technical questions are about security fundamentals rather than a particular framework: symmetric versus asymmetric encryption, how digital certificates are validated, TLS 1.1 against TLS 1.2, encryption versus hashing, and the CIA triad with authentication versus authorization. For a role that maintains banking and financial-services applications, that is a sensible place for questions to cluster, and it is where a general software engineer is most likely to be under-prepared. Each of these is a definition-plus-example question, so the preparation is to hold a short, correct answer for each and to know how they connect: hashing and signatures serve integrity, encryption serves confidentiality, and TLS uses certificates, asymmetric key exchange and symmetric bulk encryption together.

Beyond security, candidates report two classic coding prompts (reverse a linked list, find two numbers that add up to a target) and a prompt about explaining your thought process on a coding challenge on a platform like HackerRank. The case-study prompts are about process: how you work through a given software issue, how you would redesign a legacy system to improve efficiency, and what you would do when a critical bug is found in production. These map onto responsibilities candidates describe for the role, such as troubleshooting production issues and working through the full development lifecycle, so answer them with a sequence of steps you have actually used.

The behavioral set is conventional: a challenging project, prioritising under tight deadlines, a conflict with a team member, what motivates you, handling feedback, and learning a new technology quickly. Candidates also describe the second round as discussions with team members and stakeholders about technical capability and cultural fit, so have stories ready that show collaboration with product managers, QA and other engineers, not only your own coding.

On the stack, choose one language from the examples the requirements give (Java, Python or C#) and be ready to write the coding prompts in it without autocomplete. Review SQL and the difference between relational and NoSQL storage, and read up on whichever of AWS or Azure you have used. If you have front-end or design-pattern experience, prepare one example each, since they are listed as nice to have.

01

Preliminary Assessments

reported

Candidates report that the Preliminary Assessments stage may include coding challenges or technical interviews. The reported coding prompts (reverse a linked list, find two numbers that add up to a target, narrate a HackerRank-style challenge) and the five security fundamentals are the technical material to practise. Treat it as a stage where working code and clear spoken technical answers both matter: write the code in your chosen language without autocomplete, say the approach and its complexity aloud as you go, and keep each security answer to a definition, a concrete example and one trade-off.

What to demonstrate

  • Working code on a coding challenge, since the stage may include one
  • Spoken technical answers, since the stage may be a technical interview
  • Command of security fundamentals such as encryption, hashing and TLS, which candidates report as technical questions

How to prepare

  • Write the linked-list reversal (iterative, with prev, current and next pointers) and the two-sum problem (one pass with a hash map) in Java, Python or C# from a blank file, with empty and single-element inputs handled.
  • Practise narrating a coding challenge on a HackerRank-style editor: restate the problem, name the brute force, choose the data structure, state complexity, then test with your own cases.
  • Record short spoken answers to the symmetric versus asymmetric, certificate validation, TLS 1.1 versus 1.2 and encryption versus hashing questions, and check each against a reference.
Citizens Software Engineer candidate reports ↗
02

In-depth Discussions

reported

Candidates report In-depth Discussions with team members and stakeholders, covering technical capabilities and cultural fit. That format is conversational: expect to explain your own work in depth, discuss how you collaborate with product managers, QA and other engineers, and talk through the case-study and behavioral prompts candidates report. Prepare stories from your resume in enough detail to survive follow-up questions, and bring a few questions of your own about the team and its work.

What to demonstrate

  • Depth of your technical experience as you describe it, including the technologies you have used
  • Collaboration and communication with team members and non-engineering stakeholders
  • Fit with the team and its way of working, as the stage is reported to cover cultural fit

How to prepare

  • Build a story bank for the six behavioral prompts (challenging project, deadline prioritisation, conflict, motivation, feedback, learning a technology quickly), each anchored in a real project from your resume.
  • Prepare a legacy-redesign answer and a production-bug answer from your own experience: what you measured first, how you limited risk, and how you verified the fix or the migration.
  • Write three questions for the team about code review, testing and release practice, and about how requirements move from product managers to engineers.
Citizens Software Engineer candidate reports ↗

PracHub editorial advice for the preparation topics above.

01

Calling hashing one-way encryption, or saying encryption and hashing are interchangeable

Keep the contrast precise: encryption is reversible with a key and protects confidentiality; a hash has no key, is not meant to be reversed, and supports integrity checks and password storage. For passwords, add that a slow salted hash (bcrypt, Argon2 or PBKDF2) is used rather than a fast general-purpose hash, and that signatures combine a hash with asymmetric keys.

02

Describing TLS as encrypting all traffic with the server's public key

Explain the hybrid design: the certificate and asymmetric operations authenticate the server and establish a shared secret, and a symmetric cipher then protects the bulk data because it is far faster. Draw the handshake once on paper so you can say where the certificate is checked and where the session key appears.

03

Answering the certificate-validation question with only 'check that it is signed'

List the checks: the signature chain up to a root the client already trusts, validity dates, a hostname match against the certificate's names, key usage, and a revocation check through CRL or OCSP. Add that the server must prove it holds the private key during the handshake.

04

Typing the linked-list reversal or two-sum solution in silence, or losing the next pointer

Say the plan and complexity first (reversal in O(n) time and O(1) space; two-sum in one pass with a hash map, O(n) time and O(n) space), save the next node before re-pointing, and test with an empty list, one node and duplicate values before declaring it done.

05

Telling behavioral and case-study stories entirely in 'we', with no personal decision and no result

For every story, write down what you personally decided, what you did, the outcome and what you would change. For the production-bug and legacy-redesign prompts, give an ordered sequence: assess impact, mitigate or roll back, find the cause, fix, add a test, then review how it happened.

Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.

14 technical prompts0 include a worked solution

Write a function to reverse a linked list.

medium
Coding / Algorithms

Write a function to reverse a linked list.

Approach
  1. Use the iterative three-pointer reversal: prev = null, curr = head. While curr is not null: save next = curr.next, set curr.next = prev, advance prev = curr and curr = next. Return prev as the new head. This runs in O(n) time and O(1) extra space.
  2. Walk through the edge cases out loud: an empty list returns null, a single node returns itself, and two nodes check the pointer swap. The original head's next must end up null, or the list contains a cycle.
  3. Mention the recursive version: reverse the rest of the list, then set head.next.next = head and head.next = null. It is O(n) time but uses O(n) call stack, so a long list can overflow (CPython's default recursion limit is 1000).
  4. Test by building a list from an array, reversing it, and reading it back. Cover length 0, 1, 2 and an odd length, and reverse twice to check that you get the original back.
  5. For a doubly linked list, swap each node's prev and next pointers and return the last node visited.
Follow-up
  • Reverse only the nodes between positions m and n in one pass.
  • Reverse the list in groups of k nodes, leaving a final short group as it is.
  • Check whether a linked list is a palindrome using O(1) extra space.

Given a list of integers, find the two numbers that add up to a specific target.

medium
Coding / Algorithms

Given a list of integers, find the two numbers that add up to a specific target.

Approach
  1. Clarify the contract first: return indices or values; is exactly one answer guaranteed; can the same element be used twice; are there duplicates or negative numbers; is the input sorted?
  2. State the brute force (check every pair, O(n^2) time, O(1) space), then improve it with a hash map from value to index. For each x, look up target - x before inserting x. This is O(n) time and O(n) space.
  3. Explain why lookup comes before insert: it stops an element pairing with itself and still handles duplicates correctly, for example [3, 3] with target 6 returns both indices.
  4. Give the alternative for sorted input: two pointers from both ends, moving left up when the sum is too small and right down when it is too large. That is O(n) after an O(n log n) sort with O(1) extra space, but sorting loses the original indices unless you sort (value, index) pairs.
  5. Cover the edge cases: no valid pair (return an empty result or raise, as agreed), fewer than two elements, and integer overflow of target - x in Java or C# (use long).
Follow-up
  • Return every unique pair that sums to the target, without duplicate pairs.
  • Extend it to three numbers summing to a target. What complexity can you reach?
  • How would you solve it if the numbers arrive as a stream or do not fit in memory?

Explain your thought process while solving a coding challenge on a platform like HackerRank.

medium
Coding / Algorithms

Explain your thought process while solving a coding challenge on a platform like HackerRank.

Approach
  1. Read the statement and the constraints before coding. Constraints set the target complexity: around 10^5 elements rules out O(n^2) (about 10^10 operations) and points to O(n log n) or O(n), and value ranges tell you whether 32-bit integers overflow.
  2. Work the sample by hand, then write your own small cases from the constraints: minimum size, maximum values, duplicates, negatives, and an empty or all-equal input.
  3. Get a correct brute force first if the better idea is not clear, then optimise by choosing the data structure that fits the access pattern (hash map for lookups, heap for repeated min or max, prefix sums for range totals).
  4. Handle the platform details: read stdin exactly as the input format specifies, use fast input for large inputs, and run custom test input before submitting.
  5. Read the hidden-test results as a diagnosis: a timeout means the complexity is wrong, and a wrong answer on hidden cases usually means a missed edge case or overflow. Be ready to narrate one real problem you solved this way.
Follow-up
  • Your solution passed the sample but failed hidden tests. What did you check, and in what order?
  • With several problems on a timer, how do you decide when to submit a partial solution and move on?
  • Walk me through the complexity of the last assessment problem you solved.

The plan follows the reported question types: security fundamentals first, then coding, case studies, the stack, and behavioral stories, ending with a mixed run-through. Practice-library items are PracHub exercises, not reported Citizens questions.

Small steps. Visible outcomes.0 / 7 completed
ONE WEEK · YOUR PACE

Prepare, practise & reflect

One practical outcome each day. Spend longer where you need it.

0 / 7 done
01Encryption fundamentals: symmetric, asymmetric, hashing
  • Write a one-page table covering symmetric ciphers (for example AES), asymmetric algorithms (RSA, elliptic-curve), general hashes (SHA-256) and password hashes (bcrypt, Argon2, PBKDF2): key or no key, reversible or not, one application each.
  • Answer the symmetric versus asymmetric question aloud, with an example for each, then explain hybrid use: asymmetric to agree or wrap a key, symmetric for the bulk data.
  • Answer the encryption versus hashing question aloud, including why passwords are hashed rather than encrypted and where signatures fit.

Deliverable: The one-page table plus two recorded spoken answers (symmetric versus asymmetric, encryption versus hashing).

Practice prompt ↗Practice prompt ↗
02TLS handshake and certificate validation
  • Draw the TLS 1.2 handshake (ClientHello, ServerHello, certificate, key exchange, Finished) and mark where the certificate is checked and where the symmetric session key comes into use.
  • Write the certificate validation checklist: signature chain to a trusted root, validity dates, hostname match, key usage, revocation through CRL or OCSP.
  • From a reference such as the TLS 1.2 specification, write the differences between TLS 1.1 and 1.2 (cipher suites, hash and signature algorithms, authenticated encryption modes) and note that both older versions are now deprecated and that TLS 1.3 exists. Look up how session resumption affects handshake cost for the performance half of the question.

Deliverable: A handshake diagram, a validation checklist and a spoken TLS 1.1 versus 1.2 comparison that cites its reference.

Practice prompt ↗Practice prompt ↗
03CIA triad, authentication and authorization
  • Map each CIA property to concrete controls: encryption for confidentiality, hashes, signatures and checksums for integrity, redundancy and failover for availability, and give one example of each failing.
  • Write the difference between authentication and authorization with web examples: logging in versus checking permission on a resource, a 401 versus a 403 response, and where each check lives in an API.
  • Practise a spoken answer that joins the day's material to the earlier days, for example how a login over TLS touches all of confidentiality, integrity, authentication and authorization.

Deliverable: A CIA-to-controls table, an authn versus authz example sheet and one recorded answer to the CIA question.

Practice prompt ↗
04Coding: linked list, two-sum and narrating a challenge
  • Write the linked-list reversal iteratively in Java, Python or C# with no autocomplete, then write the recursive version and state its stack cost.
  • Write two-sum with a hash map in one pass, state the brute-force O(n^2) alternative, and decide what to return when no pair exists or values repeat.
  • Solve one more problem on a HackerRank-style editor while saying your reasoning aloud: restate, brute force, data structure, complexity, tests.

Deliverable: Three working solutions in one language, each with a one-line complexity statement and a list of edge cases you tested.

Practice prompt ↗Practice prompt ↗Practice prompt ↗
05Case studies: problem solving, legacy redesign, production bugs
  • Write a reusable sequence for a software issue: reproduce, narrow the cause, form a hypothesis, test it, fix, add a regression test, and say what you would check first and why.
  • Write an incident sequence for a bug found in production: assess customer impact, mitigate or roll back, communicate, fix the cause, then review. Use PracHub's practice debugging exercise to rehearse the diagnosis itself; it is a practice item, not a reported Citizens question.
  • Outline a legacy-redesign answer: measure where the inefficiency is, pick a small seam to replace first, keep behaviour pinned with tests, migrate in steps with a rollback, and define the metric that shows the improvement.

Deliverable: Three written step sequences (issue, production bug, legacy redesign), each rehearsed aloud once.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
06Behavioral story bank
  • Write one story each for the challenging project, deadline prioritisation, conflict, feedback and learning a technology quickly prompts, with the decision you made, your own actions, the result and what you would change.
  • Write a short, honest answer for what motivates you, with two supporting episodes.
  • Say each story aloud and cut anything that is background rather than decision.

Deliverable: Six written story outlines, one per reported behavioral prompt, each marking your personal decision and a verifiable result.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗
07Stack check and mixed run-through
  • Work the two SQL exercises from PracHub's practice library (window functions, and avoiding join fan-out), since the requirements list SQL and NoSQL; these are practice items, not reported Citizens questions. Add a short note on when you would pick NoSQL over a relational store.
  • Run a mixed mock: explain the CIA triad and authentication versus authorization, solve two-sum aloud, give your production-bug sequence, and tell the conflict story.
  • Write three questions to ask the team, and list the one topic you still feel weakest on for a final review.

Deliverable: Completed SQL practice, a recorded mixed mock covering four question types, and a list of three questions plus the weakest topic.

Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗Practice prompt ↗

Expand any day for tasks and deliverables. Your progress is saved on this device.

Candidates report these prompts as a set, and also report that the second round is discussions with team members and stakeholders about technical capability and cultural fit. For this role, stories about working with product managers, QA and other engineers on shipped software, reviewing code, and fixing production issues fit the work candidates describe. Build each answer around a decision you personally made and a result you can verify.

Describe a challenging project you have worked on. What was your role, and how did you contribute to its succe

medium
Behavioral / Leadership

Describe a challenging project you have worked on. What was your role, and how did you contribute to its success?

Approach
  1. Pick a project from your own work where you owned a defined piece, such as a service, a migration or a release, and can name the decisions you made. Open with the scope, the constraint and your role in two sentences, then spend the answer on decisions.
  2. Say what made it hard, technical (a legacy integration, a data migration, a performance problem) or organisational (changing requirements, a dependency on another team), and the options you weighed before choosing one.
  3. Separate I from the team: what you designed, wrote, reviewed or unblocked yourself. The common failure is a tour of the architecture in which nothing is attributable to you.
  4. Close with a result you can verify (defects found before release, a deadline met, an incident avoided) using only figures you actually know, and say what you would change if you ran it again. Mention testing and code review where they were part of how you reduced risk.
Follow-up
  • What was the hardest trade-off in the project, and who disagreed with your choice?
  • How did you test or review the change before it reached production?
  • What would you do differently if you ran the project again?

How do you prioritize tasks when faced with tight deadlines?

medium
Behavioral / Leadership

How do you prioritize tasks when faced with tight deadlines?

Approach
  1. Name your method first, then prove it with one real case. A workable method: list everything due, separate what must ship from what can slip by customer or business impact and risk, order by dependencies, then agree the cut line with whoever owns the priorities.
  2. Tell one concrete story: the deadline, the items you cut or deferred, and who you told. Negotiating scope with a product manager is a stronger answer than simply working longer.
  3. Show what you protect. Cut features or polish before cutting tests and review on paths that touch customer data or account actions, and say why.
  4. Show early communication: you raised the risk when you saw it and offered options (reduce scope, move the date, add help) rather than announcing a miss on the last day. Finish with how deferred items were tracked afterwards.
Follow-up
  • Two stakeholders each say their item is the top priority. How do you decide?
  • Tell me about a time a deadline slipped anyway. What did you do?
  • Which checks would you never skip under time pressure, and why?

Tell me about a time you had a conflict with a team member. How did you resolve it?

medium
Behavioral / Leadership

Tell me about a time you had a conflict with a team member. How did you resolve it?

Approach
  1. Choose a disagreement about substance, such as a technical approach, review feedback or ownership of a task, with real stakes, and avoid a story that is about personality. State the other person's position fairly, in words they would accept.
  2. Walk through your steps in order: you spoke to them directly and privately first, clarified the shared goal, then brought evidence (a benchmark, a small prototype, the spec or a design note) rather than opinion.
  3. Say how it was resolved: a compromise, their approach winning, or yours, and involve a lead or tiebreaker only if direct discussion failed. Name the outcome for the project and for the working relationship afterwards.
  4. The sinking mistakes are casting the other person as the villain, claiming you have never had a conflict, or telling a story where a manager decided and you simply complied.
Follow-up
  • What if you had later found that the other person was right?
  • What did you change about how you handle disagreement after that?
  • How would this differ if the conflict was with a product manager or QA colleague rather than another engineer?

What motivates you to perform your best work?

medium
Behavioral / Leadership

What motivates you to perform your best work?

Approach
  1. Name two or three motivators you can back with episodes, for example hard debugging, shipping something users depend on, learning from stronger peers or owning a system end to end. Each claim needs a concrete moment when you were at your best.
  2. Connect them to the work candidates describe for the role: building and maintaining banking applications, code reviews, testing, production troubleshooting and cross-team collaboration. Link motivators to those activities without asserting what the employer values.
  3. Describe the environment that brings out your best (clear ownership, quick feedback, a review culture) in terms of behaviours, not slogans.
  4. Avoid answers that are only about pay, only about passion without an example, or so generic that they fit any company. Briefly say what drains your motivation and how you manage it.
Follow-up
  • Tell me about a time you were not motivated by a task. What did you do?
  • What kind of team environment do you do your best work in?
  • What would make you want to leave a role?

How do you handle feedback and criticism of your work?

medium
Behavioral / Leadership

How do you handle feedback and criticism of your work?

Approach
  1. Pick specific, substantive feedback that was uncomfortable to hear, such as pushback in a code review, a performance review point or a lesson from an incident. A disguised strength ("I care too much") will not hold up.
  2. Show your process: you listened, asked for a concrete example, restated it to confirm you understood, decided what to change, and then made a visible change such as smaller pull requests, a test checklist or earlier design reviews.
  3. Close the loop: you went back to the person to check the change worked, and you can point to a result such as fewer review rounds or fewer escaped bugs.
  4. Include or be ready for a case where you disagreed with feedback: you tested it against evidence and either adopted it or explained your reasoning politely. The sinking mistakes are sounding defensive or saying you take feedback well with no example.
Follow-up
  • Tell me about feedback you disagreed with. What did you do?
  • How do you give feedback to a colleague in a code review?
  • What feedback are you working on right now?

Discuss a time when you had to learn a new technology quickly. How did you approach it?

medium
Problem-Solving / Case Studies

Discuss a time when you had to learn a new technology quickly. How did you approach it?

Approach
  1. Choose a case where a deadline forced the learning, name the technology and say where you started (for example, a framework similar to one you knew, or a language you had never used). This makes the scale of the jump clear.
  2. Describe a method, not just effort: scope what the task actually needs, read the official documentation and existing code, build a small throwaway spike, pair with someone experienced, and ask targeted questions only after you have tried something.
  3. Show how you checked your understanding: you wrote tests, had an experienced colleague review the result, and handled failure cases, which matters more in code that touches customer data or accounts.
  4. Finish with what shipped and what you left behind, such as notes or a short runbook. A story that ends at 'I watched tutorials' with no delivered artifact is the usual weak answer. If you can, pick an example close to the listed stack (Java, Python, C#, AWS, Azure, React or Angular).
Follow-up
  • How did you decide how deep to go in the time you had?
  • What mistake did you make while learning it, and how did you catch it?
  • How would you ramp up on a codebase written in a language you have never used?
  • 01

    Describe a challenging project you have worked on. What was your role, and how did you contribute to its success?

  • 02

    How do you prioritize tasks when faced with tight deadlines?

  • 03

    Tell me about a time you had a conflict with a team member. How did you resolve it?

  • 04

    What motivates you to perform your best work?

  • 05

    How do you handle feedback and criticism of your work?

  • 06

    Discuss a time when you had to learn a new technology quickly. How did you approach it?

PracHub preparation framework ↗
How many rounds are there and how long does the process take?

Candidates report two rounds, Preliminary Assessments followed by In-depth Discussions, over about 2-4 weeks. Another passage in the same reports gives 4-6 weeks from first screen to offer, so treat the timeline as variable and ask your recruiter for the schedule.

PracHub Software Engineer practice ↗
What technical topics do candidates report?

Five security fundamentals: symmetric versus asymmetric encryption, certificate validation, TLS 1.1 versus 1.2, encryption versus hashing, and the CIA triad with authentication versus authorization. Candidates also report coding prompts (reverse a linked list, two numbers that add up to a target), case-study prompts on problem solving, legacy redesign and production bugs, and behavioral questions.

PracHub Software Engineer practice ↗
Which programming language should I use?

The requirements candidates describe ask for proficiency in at least one language and give Java, Python and C# as examples. Use the one you can write a linked-list reversal and a hash-map solution in without autocomplete or documentation.

PracHub Software Engineer practice ↗
I am not a security specialist. How do I prepare for the security questions?

Learn each topic as a short answer with an example and one trade-off, then connect them: TLS uses certificates to authenticate the server, asymmetric operations to agree a key and symmetric encryption for the data, while hashes support integrity. Draw the handshake on paper and say each answer aloud, because these questions are explanations rather than code.

PracHub Software Engineer practice ↗
Is there a take-home assignment?

Reports mention coding challenges or technical interviews in the preliminary stage and a prompt about narrating a coding challenge on a platform like HackerRank. No take-home is reported, so prepare for timed coding in an online editor and for spoken explanations.

PracHub Software Engineer practice ↗
Is the role remote or in the office?

Candidates report a hybrid arrangement, with expectations that can vary by role and team. Confirm the arrangement for your specific position with the recruiter.

PracHub Software Engineer practice ↗
Sources & methodology 3 sources ↗

No official company page is cited. Rounds and questions come from candidate reports and PracHub editorial material; each source shows the date it was read.