< star⭐ this repo/>
📈📊 This repo is subject to periodic updates to reflect insights gathered from ongoing reviews of past technical interviews.
It's worth noting that interview questions are gradually transitioning from French to English with each passing year.
Therefore, it's essential to anticipate and prepare for this linguistic shift.
Being proficient in both languages will be crucial for navigating the evolving landscape of technical interviews effectively.
| Section | Link |
|---|---|
| IMPORTANT INTRODUCTION |
IMPORTANT INTRODUCTION |
| Using This Repository 🛠️ | Using This Repository 🛠️ |
| Software Engineer Interview Preparation | Software Engineer Interview Preparation |
| A/ Data Structure Categories | A/ Data Structure Categories |
| B/ Specific Questions Cagtegories | B/ Specific Questions Cagtegories |
| Algorithmic Arsenal🧱 : Essential Problem Categories | Algorithmic Arsenal🧱 : Essential Problem Categories |
| Additional Resources 📂 | Additional Resources 📂 |
| Practice Git By Contributing To This Repo 🤝 | Contributing Guidelines 🤝 |
In the field of software engineering, achieving a solid standing within the IT community often entails specialization in a specific sub-field. This means choosing a sub-job to increase our chances of expertise, while maintaining knowledge in other domains. It's essential to understand that specialization enhances our depth of knowledge and allows us to excel in a particular area, ultimately contributing to our professional growth.
To attain this specialization, it's common practice to pass through broader roles, such as a Full-Stack Developer, before choosing between more focused positions like Frontend or Backend Developer. This progression provides an overview of each field, fostering a broader vision and deeper understanding of other related domains.
The Software Development Life Cycle (SDLC) encompasses various phases, each vital to the successful creation and deployment of software products. By navigating through different job roles and phases of the SDLC, individuals gain comprehensive insights into the software development process, ultimately shaping them into well-rounded professionals within the IT industry. Here's a breakdown of each phase along with associated job titles, sub-jobs, and the companies in Morocco and France that commonly require them:
| Phase | Job Title | Sub-Jobs | Companies (Morocco & France) |
|---|---|---|---|
| 1. Planning | Project Manager, Product Manager | Project Coordinator, Business Analyst | Capgemini, CGI, SII (Morocco), Thales, Dassault Systèmes (France) |
| 2. Requirements Gathering | Business Analyst, Requirements Engineer | Systems Analyst, User Researcher | Atos, Alten, Oracle (Morocco), Ubisoft, Airbus (France) |
| 3. Design | Systems Architect, UX/UI Designer | Network Architect, Interaction Designer | Société Générale, Novencia (Morocco), Schneider Electric, Capgemini (France) |
| 4. Implementation | Software Engineer, Programmer | Frontend Engineer, Backend Engineer | Ubisoft, Accenture, Inetum (Morocco), OVHcloud, Thales (France) |
| Full-Stack Developer, Mobile Developer | Wipro, IBM (Morocco), Altran, Sopra Steria (France) | ||
| 5. Testing | Quality Assurance Engineer, Tester | Automation Tester, Manual Tester | Deloitte, HP, CGI (Morocco), Capgemini, Atos (France) |
| Performance Tester, Security Tester | Orange, Capgemini (Morocco), Orange, BNP Paribas (France) | ||
| 6. Deployment | DevOps Engineer, Deployment Specialist | Infrastructure Engineer, Release Manager | Atos, Amadeus, Sofrecom (Morocco), Thales, Orange (France) |
| Site Reliability Engineer, Continuous Integration Engineer | Capgemini, CGI (Morocco), Thales, Alten (France) | ||
| 7. Maintenance/Support | Software Maintenance Engineer, Support Engineer | Bug Fixer, Technical Support Specialist | CGI, SII, Atos (Morocco), Orange, Airbus (France) |
| Systems Administrator, Customer Success Manager | Alten, Altran (Morocco), Capgemini, OVHcloud (France) |
If you have an upcoming interview, especially an online technical test with a specific company, follow these steps to effectively prepare:
-
Review Technical Question Categories: Navigate to the "Technical Questions Categories For Some Companies" section. Locate the company you're preparing for in the table. If it's listed, proceed to the next step.
-
Practice Problem Categories: Focus on the problem categories listed for the company. Refer to the "Algorithmic Arsenal🧱" section for the most commonly asked questions in each category.
-
Explore Additional Resources: If the company you're preparing for isn't listed, explore the provided drive folder Google Drive Folder for supplementary materials.
-
Seek Assistance: If you're unable to find resources for your target company or have any questions, feel free to contact me directly. I'm here to assist you with your preparation journey. 😄 ( contact info in my github profile )
📈📊 This table is subject to periodic updates to reflect insights gathered from ongoing reviews of past technical interviews.
For more details about the problem categories check points A and B bellow. And for more examples of problems check Algorithmic Arsenal bellow.
| Company | Problem Categories |
|---|---|
| Novelis | Array Manipulation, Programming Language questions, String Manipulation, Two Pointers Technique, Bit Manipulation, Frameworks Specific Questions, DevOps Basic Questions(Git) |
| SQLI | Array Manipulation, String Manipulation, Sliding Window Technique, Trees, Programming Language questions |
| Oracle | String Manipulation, Graphs, Dynamic Programming, DevOps Questions |
| SII | Programming Language questions,Frameworks Specific Questions, DevOps Questions |
| Capgemini | String Manipulation, Arrays, Dynamic Programming, Trees |
| ... | ... |
- Array Manipulation:
- Practice problems related to array manipulation, such as Kadane's Algorithm, rotating arrays, and finding duplicates.
- String Manipulation:
- Focus on problems involving string manipulation, like reversing strings, checking for palindromes, and finding common prefixes.
- Sliding Window Technique:
- Study problems that require sliding window techniques, including finding maximum subarrays, longest substrings without repeating characters, and minimum window substrings.
- Two Pointers Technique:
- Explore problems that can be solved using two pointers, such as container with most water, three-sum problems, and removing duplicates from sorted arrays.
- Bit Manipulation:
- Learn about bit manipulation problems, including finding single numbers, counting bits, and solving XOR-related challenges.
- Dynamic Programming:
- Practice dynamic programming problems, like coin change, longest increasing subsequences, and edit distance.
- Trees:
- Understand tree-related problems, including binary tree traversals, validating binary search trees, and finding lowest common ancestors.
- Graphs:
- Explore graph-related problems, such as course scheduling, word ladders, and counting islands.
- Programming Languages Specific Questions :
- Java/C#/PHP Basics questions, OOP questions.
- Javascript questions.
- SQL questions.
- Frameworks Specific Questions :
- Spring Boot questions.
- .NET questions.
- Frontend questions: React or Angular.
- DevOps Basic Questions:
- Git
- Docker
📈📊 This table is subject to periodic updates to reflect insights gathered from ongoing reviews of past technical interviews.
| Category | Problem Title |
|---|---|
| Array Manipulation | Kadane's Algorithm |
| Rotate Array | |
| Finding Duplicates | |
| Product of Array Except Self | |
| Majority Element | |
| Container With Most Water | |
| Three Sum | |
| Trapping Rain Water | |
| Missing Number | |
| Best Time to Buy and Sell Stock | |
| String Manipulation | Reverse String |
| Valid Anagram | |
| Longest Palindromic Substring | |
| Valid Parentheses | |
| Group Anagrams | |
| Parenthesis Checker | |
| Longest Common Prefix | |
| Sliding Window Technique | Longest Substring Without Repeating Characters |
| Minimum Window Substring | |
| Longest Repeating Character Replacement | |
| Two Pointers Technique | Remove Duplicates from Sorted Array |
| Valid Palindrome | |
| Container With Most Water | |
| Bit Manipulation | Single Number |
| Counting Bits | |
| Maximum XOR of Two Numbers in an Array | |
| Dynamic Programming | Coin Change |
| Longest Increasing Subsequence | |
| Edit Distance | |
| Trees | Binary Tree Level Order Traversal |
| Validate Binary Search Tree | |
| Lowest Common Ancestor of a Binary Tree | |
| Graphs | Course Schedule |
| Word Ladder | |
| Number of Islands |
Last update : Added E-challenge Java 2024
more content will be added later ...
We welcome contributions to enhance the content and functionality of this repository. Whether it's fixing a typo, adding new content, or suggesting improvements, your contributions are valuable. Please follow these guidelines to ensure smooth collaboration:
Click on the "Fork" button at the top right corner of the repository's page to create a copy of the repository in your GitHub account.
Clone the forked repository to your local machine using the following command:
git clone https://github.com/your-username/IQC---Interview-Questions-Collection.gitReplace your-username with your GitHub username.
Create a new branch to work on your changes:
git checkout -b feature/your-feature-nameMake your desired changes to the repository. You can modify existing files, add new content, or fix bugs.
Once you've made your changes, commit them to your branch with descriptive commit messages:
git add .
git commit -m "Add your descriptive commit message here"Push your changes to your forked repository:
git push origin feature/your-feature-nameGo to your forked repository on GitHub and create a Pull Request (PR) from your branch to the main repository. Provide a clear title and description for your PR, detailing the changes you've made.
Your PR will be reviewed by the repository maintainers ( for instance : Salah Sbai ). Be responsive to any feedback or requests for changes.
Once your PR is approved, it will be merged into the main branch of the repository. Congratulations on your contribution 🎉!