Interview guides · CGI
CGI Software Engineer Interview Guide
CGI Software Engineer interview guide: reported rounds, questions and how candidates describe the process.
The 60-second brief
A Software Engineer at CGI plays a pivotal role in driving digital transformation across enterprise clients in government, financial services, healthcare, utilities, and commercial sectors. Operating as a technology consultant and hands-on developer (internally referred to as a "Member"), you will design, build, and maintain mission-critical applications that support complex business operations globally. The impact of this role extends from modernizing legacy systems to architecting cloud-native solutions using frameworks like Java Spring Boot,.NET Core, Node.js, Python, Angular, and React. Because CGI delivers end-to-end technology services to client organizations, software engineers frequently work at the intersection of enterprise software development, system design, and strategic consulting. What makes this role compelling is the sheer breadth of problem spaces you will encounter.
This guide is scoped to a Software Engineer candidate at CGI.
Focus areas
- Java
- Coding interviews (data structures/algorithms)
- AWS
The CGI interview process
CGI candidates report 3 rounds over 3-5 weeks. The stages below are what candidates describe, not a published process.
Online Assessment
Initial assessment to evaluate fundamental aptitude, communication skills, and salary/location expectations.
What to demonstrate
- Initial assessment to evaluate fundamental aptitude, communication skills, and salary/location expectations
- Depth in Java
How to prepare
- Answer aloud and timed: What are the four pillars of Object-Oriented Programming (OOP), and how have you applied polymorphism in a recent project?
- Answer aloud and timed: What is the purpose of the
hashCodemethod in Java, and how does it interact withequalswhen storing objects in hash-based collections?
Technical Rounds
One or two technical sessions with CGI technical leads or senior engineers focusing on software development principles and problem-solving.
What to demonstrate
- One or two technical sessions with CGI technical leads or senior engineers focusing on software development principles and problem-solving
- Depth in Java
How to prepare
- Answer aloud and timed: What is the difference between an Abstract Class and an Interface, and when would you choose one over the other?
- Answer aloud and timed: How does garbage collection work in Java or.NET, and how can you prevent memory leaks in managed code environments?
Techno-Managerial Round
Evaluation of how well you structure technical solutions and respond to operational challenges.
What to demonstrate
- Evaluation of how well you structure technical solutions and respond to operational challenges
- Depth in Java
How to prepare
- Answer aloud and timed: What are C# extension methods, and how do async/await mechanisms manage thread execution under heavy loads?
- Answer aloud and timed: How do you implement Dependency Injection in Spring Boot or.NET Core, and what are the benefits of maintaining loose coupling?
Where candidates lose points
Know Your Resume Inside and Out
The majority of technical interviewers build their questions directly around the projects, libraries, and tools you have listed on your resume. Be ready to explain your exact contributions to every project.
Master the OOP Basics
Be prepared to whiteboard or code fundamental object-oriented patterns, explain the four pillars of OOP with concrete real-world examples, and discuss memory management in your primary language.
Practice Live SQL Writing
Expect to write database queries involving multi-table joins, grouping, filtering, and indexing live on screen or in a plain text document.
Emphasize Client Readiness
Highlight your soft skills, teamwork, and ability to handle shifting requirement scopes professionally. CGI values engineers who represent the company well in front of clients.
Questions & practice
What are the four pillars of Object-Oriented Programming (OOP), and how have you applied polymorphism in a rec
Medium · Core OOP & Language Fundamentals
What are the four pillars of Object-Oriented Programming (OOP), and how have you applied polymorphism in a recent project?
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?
What is the purpose of the hashCode method in Java, and how does it interact with equals when storing obje
Medium · Core OOP & Language Fundamentals
What is the purpose of the hashCode method in Java, and how does it interact with equals when storing objects in hash-based collections?
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?
What is the difference between an Abstract Class and an Interface, and when would you choose one over the othe
Medium · Core OOP & Language Fundamentals
What is the difference between an Abstract Class and an Interface, and when would you choose one over the other?
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?
How does garbage collection work in Java or.NET, and how can you prevent memory leaks in managed code environm
Medium · Core OOP & Language Fundamentals
How does garbage collection work in Java or.NET, and how can you prevent memory leaks in managed code environments?
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?
What are C# extension methods, and how do async/await mechanisms manage thread execution under heavy loads?
Medium · Core OOP & Language 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?
What is the difference between Entity Framework / Hibernate ORM and writing raw SQL queries in terms of perfor
Medium · Frameworks, Microservices & Cloud Archit
What is the difference between Entity Framework / Hibernate ORM and writing raw SQL queries in terms of performance and control?
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 are the different types of SQL Joins (Inner, Left, Right, Full Outer), and how do you optimize a query wi
Medium · Databases & Data Manipulation
What are the different types of SQL Joins (Inner, Left, Right, Full Outer), and how do you optimize a query with missing indexes?
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 IEnumerable and IQueryable in.NET, and how does lazy loading impact databas
Medium · Databases & Data Manipulation
What is the difference between IEnumerable and IQueryable in.NET, and how does lazy loading impact database query execution?
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 implement Dependency Injection in Spring Boot or.NET Core, and what are the benefits of maintaining
Medium · Frameworks, Microservices & Cloud Archit
How do you implement Dependency Injection in Spring Boot or.NET Core, and what are the benefits of maintaining loose coupling?
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?
What are the core principles of a RESTful API, and how do HTTP status codes reflect request lifecycle outcomes
Medium · Frameworks, Microservices & Cloud Archit
What are the core principles of a RESTful API, and how do HTTP status codes reflect request lifecycle outcomes?
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?
How do microservices communicate asynchronously using messaging queues like Apache Kafka or RabbitMQ?
Medium · Frameworks, Microservices & Cloud Archit
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 deployment configurations and secrets when running applications in AWS or Microsoft Azure en
Medium · Frameworks, Microservices & Cloud Archit
How do you manage deployment configurations and secrets when running applications in AWS or Microsoft Azure environments?
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 difference between a Primary Key and a Foreign Key, and demonstrate how to structure a many-to-man
Medium · Databases & Data Manipulation
Explain the difference between a Primary Key and a Foreign Key, and demonstrate how to structure a many-to-many database relationship.
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?
Walk me through the architecture of the primary project listed on your resume. What was your specific coding r
Medium · Resume & Project Deep Dives
Walk me through the architecture of the primary project listed on your resume. What was your specific coding responsibility?
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?
What was the most challenging bug or technical bottleneck you encountered in your previous application, and ho
Medium · Resume & Project Deep Dives
What was the most challenging bug or technical bottleneck you encountered in your previous application, and how did you resolve it?
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 step-by-step process you followed to implement a key feature from requirements gathering to produ
Medium · Resume & Project Deep Dives
Describe the step-by-step process you followed to implement a key feature from requirements gathering to production release.
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 have you integrated automated testing (Unit tests, Integration tests) into your development workflow?
Medium · Resume & Project Deep Dives
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?
Edge instances grow 400 MB per hour until the nightly restart
Hard · memory leak · heap analysis · metric cardinality
Edge API instances start at 700 MB resident and grow about 400 MB/hour; a nightly rolling restart has hidden it for weeks. Growth continues unchanged when request rate halves overnight, p99 degrades in the last hours before an instance is recycled, and heap used immediately after a forced full GC rises monotonically. The service holds no product state. Name the discriminating measurement that separates the plausible causes, give the most likely cause, and give the fix and how you would verify it.
Approach
- Separate resident memory from live heap first, because they fail differently. Resident size can grow from fragmentation, native buffers or thread stacks while the heap is flat; heap used after a full GC rising monotonically is the measurement that says objects are reachable and not being released. You already have it, so this is retention, not fragmentation, and that closes off half the candidate list.
- Use the rate's independence from traffic as the discriminator. Growth that continues at half the request rate rules out per-request objects that are merely slow to collect and points at a structure that grows with distinct values observed rather than with call volume. Write the candidates that have that property: a metrics registry keyed on a high-cardinality label, an unevicted cache, an interner, a per-key lock map.
- Take two heap snapshots an hour apart and diff by retained size, reading the dominator tree, not by allocation count or instance count. Expect one root holding a map with millions of entries, then follow the reference chain to the code that inserts and never removes. Allocation profilers point at churn, which is the wrong signal here.
- The candidate that fits this service is an observability label carrying an identifier, such as a request path recorded before templating so that /v1/resources/48213 becomes its own metric series. That grows with distinct ids seen, is independent of rate, and explains the late p99 degradation, since GC cost rises with the size of the live set.
Follow-up
- Post-GC heap is now flat but resident size still creeps. What are you looking at, and does it matter?
- How would you have detected this before an OOM, given the nightly restart masked the trend?
Suggested practice checklist
Built from the rounds and topics CGI candidates report.
Day 1 — Map the CGI loop
- Write out the reported sequence: Online Assessment, Technical Rounds, Techno-Managerial Round.
- 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 Java
- Spend the session on Java, which CGI candidates report being tested on.
- Write one worked example in Java and time yourself on it.
Deliverable: One timed worked example in Java.
Day 3 — Work Coding interviews (data structures/algorithms)
- Spend the session on Coding interviews (data structures/algorithms), which CGI candidates report being tested on.
- Write one worked example in Coding interviews (data structures/algorithms) and time yourself on it.
Deliverable: One timed worked example in Coding interviews (data structures/algorithms).
Day 4 — Work AWS
- Spend the session on AWS, which CGI candidates report being tested on.
- Write one worked example in AWS and time yourself on it.
Deliverable: One timed worked example in AWS.
Day 5 — Answer out loud: Core OOP & Language Fundamentals
- Answer aloud, timed: What are the four pillars of Object-Oriented Programming (OOP), and how have you applied polymorphism in a recent project?
- Answer aloud, timed: What is the purpose of the
hashCodemethod in Java, and how does it interact withequalswhen storing objects in hash-based collections?
Deliverable: Spoken answers to 2 reported Core OOP & Language Fundamentals question(s), under time.
Day 6 — Answer out loud: Frameworks, Microservices & Cloud Architecture
- Answer aloud, timed: How do you implement Dependency Injection in Spring Boot or.NET Core, and what are the benefits of maintaining loose coupling?
- Answer aloud, timed: What are the core principles of a RESTful API, and how do HTTP status codes reflect request lifecycle outcomes?
Deliverable: Spoken answers to 2 reported Frameworks, Microservices & Cloud Architecture question(s), under time.
Day 7 — Answer out loud: Databases & Data Manipulation
- Answer aloud, timed: What are the different types of SQL Joins (Inner, Left, Right, Full Outer), and how do you optimize a query with missing indexes?
- Answer aloud, timed: Explain the difference between a Primary Key and a Foreign Key, and demonstrate how to structure a many-to-many database relationship.
Deliverable: Spoken answers to 2 reported Databases & Data Manipulation question(s), under time.
Behavioural preparation
Behavioural rounds judge the decision you made and what it cost.
How do you handle database transaction management and rollback mechanisms during service failures?
Medium · Databases & Data Manipulation
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 situation where you had a technical disagreement with a senior engineer or project manager. How did
Medium · Behavioral & Client Delivery Scenarios
Describe a situation where you had a technical disagreement with a senior engineer or project manager. How did you handle 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?
How do you prioritize tasks when working under tight client deadlines with shifting project requirements?
Medium · Behavioral & Client Delivery Scenarios
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 time you had to learn a new technology or framework quickly to deliver a critical project requ
Medium · Behavioral & Client Delivery Scenarios
Tell me about a time you had to learn a new technology or framework quickly to deliver a critical project requirement.
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?
Where do you see your technical career progressing over the next 3 to 5 years within a consulting organization
Medium · Behavioral & Client Delivery Scenarios
Where do you see your technical career progressing over the next 3 to 5 years within a consulting organization?
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?