This repository contains questions about different aspects in programming and prblem solving skills that we check for during interviews in Motorola Solutions. The repository contains questions for various levels inlcuding junior, mid, and senior.
The following areas can be checked for when assessing the candidate problem solving skills:
A thought process can follow one or more of the following steps:
- Conceptualizing the problem.
- Going reduction in the problem to start easy.
- Dividing and conquering the problem.
- Explaining the problem in an easy and confident way.
- Approaching the problem using brute force and improving it after.
Programming concepts are a broad area which may containa a wide range of paradigms, practices, concepts, and so on. It also depends on whether the programming language is functional, object oriented, procedural, declaritive, etc.
However, we will mostly use Object-Oriented programming languages, therefore, the practices will be from there.
Fundamental concepts are what the design patterns and SOLID principles are built upon in OOP. They are:
- Composition
- Aggregation
- Inheritance
- Polymorphism
Using these concepts, we can implement other concepts in an object-oriented programming such as:
- Encapsulation
- Abstraction
- Single Responsibilty Principle
- Open/Closed Principle
- Liskov's Substituion Principle
- Interface Segregation Principle
- Dependency Injection Principle
The SOLID principles can be implemented using various Design Patterns. The SOLID principles define the goals, whereas, ta developer can use various design patterns to reach these goals.
Note: Many of these principles, concepts, and paradigms are language-agnostic, meaning that they can be used in almost any type of language as long as the language supports some of the vital constructs.
Problem Solving Skills | Data Structure | Algoritms | Programming Concepts | Personality |
---|---|---|---|---|
Conceptualizing the Problem | Linked List | Searching Algorithms | Design Patterns | Humble |
Problem Reduction | Queue | Sorting Algorithms | SOLID Principles | Open for Criticism |
Brute Forcing | Stack | Inheritance | Eager to Learn | |
Array | Abstraction & Encapsulation | Friendly | ||
Map | Calm |
As everyone usually agrees, the personality of a candidate is important factor to hire him. Some of the traits can be as follows (YourDictionary, n.d.):
- Being honest no matter what the consequences are is one personality trait people should aspire to.
- Having responsibility for all of your actions and being a little bit of a perfectionism are also personality traits.
- Adaptability and compatibility are great and can help you get along with others.
- Having the drive to keep going, and having compassion and understanding are positive personality traits.
- Patience is a virtue and also another trait.
- Getting up the courage to do what’s right in those tough situations and loyalty to your friends and loved ones are also personality traits.
Depending on the seniority level, what's being looked for can change. However, the personality is important in any case.
YourDictionary. (n.d.). Examples of personaliy traits. Retrieved from http://examples.yourdictionary.com/examples-of-personality-traits.html