Created
August 25, 2024 20:14
-
-
Save codephillip/9c7568a2d86294cc511af5e66b6b9d7c to your computer and use it in GitHub Desktop.
Revisions
-
codephillip created this gist
Aug 25, 2024 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,1634 @@ DSA books ------------ Cracking the Coding Interview - The holy grail of coding interview books. It's a must read. 2. Programming Interviews Exposed - by John Mongan, Noah Kindler and Eric Giguere, covers common coding problems and solutions, along with a thorough walkthrough of each solution. 3. The Complete Coding Interview Guide in Java - Very helpful for your DSA prep in Java. 4. Coding Interviews: Questions, Analysis & Solutions - Covers basics , code optimisations , different methods of tackling difficult problems , and also soft skills. 5. Elements of Programming Interviews in C++ - Its a good book , if you are more keen to learn DSA using C++. 6. Introduction to Algorithms by CLRS - Though it is a bit theoretical , it would clear a lot of your core concepts on DSA , including time complexity analysis. 7. Elements of Programming Interviews in Python - by Aziz , Lee , Prakash , is a must read book , for people who is trying to learn DSA and is comfortable using Python 8. Coding Interview Questions by Narasimha Karumanchi - It covers DSA , design interview questions and a lot more. The author is the founder of Career Monk , and is himself a Principal Software Engineer at Microsoft. 9. The Big Book of Coding Interviews in Python - by Druid , contains over 300 coding interview questions , covering some of the very important questions asked in FAANG type of companies. 10. Daily Coding Problem - by Alex Miller and Lawrence Wu is a very good pick , if you want to stay consistent with your problem solving. The book will give you one coding problem a day , which you have to solve. There are almost 300 pages of coding problems. If this is a bit overwhelming for you , I would definitely recommend you to try going through the 1st book at least , along with your regular Leetcode solving. -------------------------------------------------------- Asked basics oops questions and coding question and a puzzle. alternatives of docker compose in production? event loop ? Questions around confidence, creativity and Leadership ------------ Formal application, short phone call with HR about motivation, then longer discussion with HR and the specialist department. Content: Presentation of my curriculum vitae, then technical questions were asked about my past and various challenges that arose in the course of it and how these were solved. Estimation questions (e.g. how many marbles in the jar) to demonstrate approach to problem ---------- The Interview process was fairly easy. The process consisted of 3 rounds. 1 Online round followed by Technical and HR Round. The technical questions asked were related to Object Oriented Programming. They also discussed about Projects and Internship ------- First there was an online test that included questions on Data structure, DBMS, and some HR essay type questions as well. Then the shortlisted students were interviewed. They asked a mixed bag of personality related and technical questions. 2 rope burning puzzle. How to measure 15min of time. ------------ first round was aptitude test 15 out of 50 students were selected for next round second round was coding round two question based on mathemetics (basic level) 8 student qualified for technical interview in technical round they asked question based on project on which u have worked what is bigdata and its application? what is encapsulation, interface, and constructor why we use python in machine learning? --------------- About architecture, agile practices etc. ---------- Lead developer of Aficion360 Ticketing and partners platform. Parts of the platform: The frontend is distributed in 4 SPA's and 2 PWA's built using Angular 9+ The backend is based on microservices built using nestJS (expressJS + typescript) On my daily basis my work is: - Lead a team of 4 developers - Code review following best practices - Design architectures - And coding, a lot of coding!! Some of the technologies I used are: - ExpressJS, Node.js, Angular 9+, React, StencilJS - HTML5, CSS3 (RWD), SASS, VANILLA JS, ES6 + BABEL, TYPESCRIPT - Jenkins, Docker, Verdaccio - Jest, Cypress, Puppeteer - MYSQL, REDIS, MONGODB ==================== Travelperk ==================== Whats your greatest strength/weakness? How do you prioritize? The interview process consists of 5 steps: - Initial call with a tech recruiter from the company. - Interview about general iOS knowledge. - Coding challenge based on an exercise completion in less than 2 hours (with the help of an interviewer). -System Design Interview. Design a system based on given requirements. -Culture. Meeting the team. Behavioral questions. I want to give kudos to the recruiting team which makes the difference compared to other companies. They are very responsive and give constant feedback about the process. About the team, I can say that all engineers I met during the interviews were kind to me and in general very communicative. In my case, I took all interviews but failed in not providing a strong solution in the system design exercise. As for how the company can improve the processes, I would say the system design interview has room for improvement. Concretely: -Refrain from educating the candidate. While the candidate can miss some knowledge or not respond to something the interviewer is expecting, educating the candidate does not help any of the parties. -Try to not enforce a narrow path: While it can be seen that there has been a good effort defining the system design exercise, the fact that interviewers screened it a lot of times may affect how they assess the candidate. There was very little to no room to discuss different approaches, being more about saying in a very short time the "correct" solution rather than letting the candidate expose solutions and choose a path. Designing a component or an API rather than responding perfectly to security domain questions may as well be fairer for candidates. ---------------- What are the ways to scale a database? Which ways provide .NET to synchronise threads? Which one would you use in which situation? How would you improve a query that goes slow? Tell me something about a technology you know Complexity of searching a binary search tree? Given a set of numbers and a number K, return all combinations from the set of size K What the keyword yield does in Python? -------------- The interviewing process took more or less 3 weeks. The process is pretty long but it makes a lot of sense, then you see the result: You work with very senior and dedicated people (not only in Engineering but in the whole company). The first stages were mainly online with the recruiting team. After completing a preliminary coding test I spoke directly with the heads of Engineering. Finally I was invited to a couple of inhouse tests. First architecture, second a coding test. Above all it was fun. The Engineering leaders are very hands on and this is something you see since you are interviewing with them. The last stages consist in meeting the team and the CEO of the company. Some of the guys I met have been in the company for more than 2 years, something that is a very good sign nowadays. The conversation with the CEO is very insightful. Actually I was interviewing with other companies and never had the opportunity to meet one of the C level execs. ---------------- It was long and exhausting, it lasted almost 6 months mostly because of my availability and back and forth communication, it consisted of: - Quick interview with recruiter - Quick chat with technical interviewer - Home assignment using Codility After the home assignment I was flown over to Barcelona for the onsite interview, it is a full day that starts with another HR interview, then a long whiteboard systems design and architecture exercise(it changes, for me it was a Google Analytics application), then a coding challenge. Overall it was a long process but the feedback throughout was very good, the whiteboard and coding challenge also have help from the interviewers and it made it a bit better and an overall positive experience. --------------- Lengthy, well structured process: first a Codility test screening, then interviews with HR, VP of engineering and CTO thought a video call (separately). On these interviews they basically try to gauge your level/experience with some questions. If everything goes fine, they invite you to an onsite interview in Barcelona. This one is a bit more challenging, and takes almost the whole day: - A whiteboard system design interview - They give you an algorithm focused problem and a computer to code the solution. They change the requirement a little bit to see how you handle design/requirement changes. - Interview with Head of HR - Cultural fit interview with future team members - CEO interview looking for culture fit ----------- ======== Glovo ======== In this interview you will be expected to solve small problems. The interview focuses on algorithms and data structures. You’ll be expected to know and apply: lists, maps, stacks, priority queues, trees, graphs, bags, and sets. You’ll need to be able to talk about how they’re implemented and why you’d choose one implementation or data structure instead of another. For algorithms, you’ll need to know greedy algorithms, divide and conquer, dynamic programming, recursion, backtracking, and brute force search. You’ll definitely need to be familiar with Big O notation, running time and space complexity 6 interviews as described in other posts (algo, experience, system design, behavioral, architecture), imitating Google interview Bike rent system Leetcode easy question ------------ Design system - it was a poor silent meeting. I got a few requirements on chat then I ask plenty of questions about requirements. After that I've started talking about architecture, unfortunately, the recruiter don't ask any questions after 15min talking about LB and Database I ask should I continue and I received an answer as you wish you can. Any follow up questions. They thought that in 45 min I design a perfect system without conversation. -------------- Interview HR interview then 3 technical interviews: - normal technical interview - system design - live coding then personal and behavioral interview with a manager. The process is well organized but it can feel lengthy. Interview Questions data structure memory management design patterns swift new features solid principles clean architecture -------------- Interview 1. Pre-screen with a recruiter (~1h) 2. Coding interview (~1.30h) 3. Call with a recruiter on feedback and what to expect (~30min) 4. Behavioral interview (~1h) 5. Call with a recruiter on feedback and what to expect (~30min) 6. Architecture interview (system design + application design) (~1.30h) 7. Call with a recruiter on feedback and offer/rejection (~30min) Interview Questions - Experience - Data structures fundamentals - Easy leetcode problems - "What mistakes have you made?" - "Describe a good project manager" - Design a "blabla" system - Draw a class diagram for the main entities of the system --------------- Interview I have participated in the full interview process of multiple companies, including FAANG, and I want to say that Glovo's interview process was my favorite. The recruiters were really nice and were always available to clarify any questions that I had. The interviewers were really nice, and gave me feedback at the end of each interview (something that did not happen with other companies). All interviews were done via Zoom and the whole process took 2 months. The process was divided into different stages: 1 - HR interview with the recruiter (45 minutes). The recruiter asked about my background and also asked some technical questions ("what's the time and space complexity of a HashTable", "what sorting algorithms do you know", "what's the time complexity of bubble sort",etc.) 2 - Live coding with an engineer (1.5 hours). I was asked to solve three coding questions, perform the time and space complexity analysis and write the unit tests for these algorithms. The coding questions were: - Return the first non-repeated character in a string - Given an array of integers, find if there is a subarray (of size at-least one) with 0 sum - Given a sorted array arr[] and a number x, write a function that counts the occurrences of x in arr[] 3 - Backend Techical screen with an engineer (1.5 hours): The interviewer asked questions about multiple topics. These are some of the questions that were asked: - What is the CAP theorem - What does ACID mean - Differences between relational vs non-relational databases - How is a HashTable implemented - How does java internally implement an ArrayList, etc. 4.1 - System Architecture (1 hour). - Provide a high level design spotify - How would you handle scalability? - How would a user be able to listen to songs if he didn't have an internet connection 4.2 - Application Architecture Design (1 hour). - Design a bike rental system - Design a UML like diagram of the classes and how they would interact with each other. Note that I didn't actually need to know everything about UML and I omitted some information from the diagram, such as the relationships between entities to save time, but I would verbally explain their relationship. - What design patterns would you use? 4.3 - Behavioral interview (1 hour). Asked typical behavioral questions. Most of these can be found on the internet. Some of the questions asked were: - Questions about my background - Tell me about a time when you had a conflict with a teammate and how you handled it - What are, in your opinion, the most important charateristics that a good software engineer must have? - Why do you want to work at Glovo? 5 - Call with the recruiter to discuss the offer (45 minutes) ------------------- screening with recruiter, he tried to ask some standard questions, than technical screening with theoretical questions (what is garbage collector, how does it work, circuit breaker etc), coding interview (the interviewer didnt have any idea what he was doing or asking, I basically had to explain to him how to interview), systems desing (design spotify, describe how an artist will upload a song, store indifferent qualities, think about storing metadata separately, then the second use case is the user consuming the songs, searching for them etc. if you do the encoding async they will be happy), then application design, they ask about a bike system, you have to model entities for bike, the station, the user, than an entity for the rental. They extend the question asking about different ways of charging for the rental (per distance or per subscription, think about inheritance for example) last questions is to tell them the REST APIs for docking/undocking the bike, to search for bikes using some filter (example radius or electrical bike). Basically they want to evaluate if you know which resource you are using (station, bike), if you know how to use the verbs (GET, PUT, POST, DELETE), if you can use filters, if you understand a tiny bit about pagination and authentication. They will throw you confetis with you mention token and headers. Pretty mediocre interview I'd say. what is garbage collector, circuit breaker, design spotify (system architecture), design a bike system (low level/application design) i don't remember the coding ones, but use leetcode you will find the questions there -------------- At first Human resource interview with general questions and some easy technical questions 1-Live coding interview with 3 medium tests 2-Technical interview focused on microservices and distributed systems 3-Application design interview focused on object oriented design 4-System design interview 5-Behavioral interview ---------- Interview 1. Initial call with interviewer to explain about the role and the company. 2. Problem Solving Round . 3 Coding challanges(Medium LeetCode Level). 3. Technical assessment Test. They asked about JVM, Java Collections Questions, Networking questions,Microservice architecture, CI/CD process. 4.1 Behavioural Interview -Asked lot of questions on how to handle conflicts in team, how to articulate your approach and convince others in team to accept your approach 4.2 Application Architecture -> Design Bike Rental System. I was asked to create Class Diagram, various method, API structure. I struggled in this round 4.3 System Architecture -> Design Food Ordering System. Was asked to design High Level Diagram regarding it. Had discussion on how different parts would interact with each other, handle failure scenarios, live tracking design. Got a feedback from the recruiter that all rounds went great except Application Architecture which led to my rejection. However overall it was very positive experience Interview Questions Explain JVM Memory Model Java Collections Framework in depth ============= Adidas ============= web architectures, scalability, observability and situational How to detect bottlenecks in microservice architectures. Describe any improvement implemented in my previous position. Technical and leadership framework. More focus on confidence creativity and collaboration. Specific tech details on project worked and overall tech stack experience on automation programming languages. Team lead experience and external teams coordinations How do you find memory leaks? Where do you see yourself in 5 years? 1- screening interview 2- coding challenge - which requires a lot of work to make system with multiple microservices takes up tp 6 days 3- when passed from coding challenge and has positive feedback there is meeting call and meeting from HR to explain next step which will be technical interview with tech lead and someone from business and it will include technical questions and reviewing technical challenge 4- but in technical interview surprised that it was with tech lead and senior developer and ask one question about docker and then moved to online challenge which is not aligned with me before that it will happen and before 10 min from starting online challenge tech lead decided to finish it and ask one question about event loop so it is very bad experience to spend 6 days for coding challenge and only one question about it in tech meeting also not communicates that it will be online challenge in the interview specially that i asked if it will be or not alternatives of docker compose in production? event loop ? Tell me about past projects? What is the big O of merge sort vs bubble sort? What User Experience Solution would you use when Server went down or a Http request took too long to respond? After the "you all know" phone screen and behaviour interview, there's coding challenge to test my problem solving skill, which I attend to make it better, then there's a technical interview with tech lead from other tech hubs. The technical questions weren't hard, mostly, and I think I out-performed myself, so I had it. The Interview process was fairly easy. The process consisted of 3 rounds. 1 Online round followed by Technical and HR Round. The technical questions asked were related to Object Oriented Programming. They also discussed about Projects and Internship First there was an online test that included questions on Data structure, DBMS, and some HR essay type questions as well. Then the shortlisted students were interviewed. They asked a mixed bag of personality related and technical questions. ========================== ========================== For instance, we frequently ask candidates about past projects with different angles. If we ask about accomplishments, we want to hear something that they are proud of, maybe with quantifiable results. If we ask about mistakes, we’re interested in what they learned. So if we ask about an accomplishment, and we get a story that was a complete disaster and from which the candidate learned nothing, that's enough to determine the outcome of the interview. In the same line of thoughts, in these interviews sometimes we get the exact opposite of the aptitude we try to evaluate. =================== Interview questions =================== Could you tell me what it looks like to get a performance review?* How do you measure performance and success in this role?* What would my day-to-day routine look like if I got the job? What’s the next step in the interview/hiring process? How long does your recruitment process usually take? What is the work culture like here?* What is the onboarding process like for new hires?* What kind of leadership/management style do you promote in the company?* ################### Glovo Computer Science or similar degree 5+ years of relevant full-time experience Strong Java skills Extensive knowledge of object-oriented programming and software architecture Ability to write good unit tests is a must Knowledge of relational databases and other approaches to data management Knowledge of concurrency and Event Driven Development Ability to write good unit tests is a must Analytical and problem-solving skills Vivid interest in at least one area outside of coding (architecture, algorithms, optimization, automation, scalability, etc.) Experience with Spring framework Experience with AWS Experience with micro-services or service-oriented architectures in general Experience with containers Experience with Vue.js or other modern frontend technologies Participation in open source projects ========================= Day 1 Binary Search 704. Binary Search Array Binary Search Easy Acceptance 55.3% Start Now 278. First Bad Version Binary Search Interactive Easy Acceptance 41.5% Start Now 35. Search Insert Position Array Binary Search Easy Acceptance 42.3% Start Now Day 2 Two Pointers 977. Squares of a Sorted Array Array Two Pointers Sorting Easy Acceptance 71.6% Start Now 189. Rotate Array Array Math Two Pointers Medium Acceptance 38.5% Start Now Day 3 Two Pointers 283. Move Zeroes Array Two Pointers Easy Acceptance 60.6% Start Now 167. Two Sum II - Input Array Is Sorted Array Two Pointers Binary Search Medium Acceptance 58.6% Start Now Day 4 Two Pointers 344. Reverse String Two Pointers String Recursion Easy Acceptance 74.8% Start Now 557. Reverse Words in a String III Two Pointers String Easy Acceptance 78.6% Start Now Day 5 Two Pointers 876. Middle of the Linked List Linked List Two Pointers Easy Acceptance 72.6% Start Now 19. Remove Nth Node From End of List Linked List Two Pointers Medium Acceptance 38.2% Start Now Day 6 Sliding Window 3. Longest Substring Without Repeating Characters Hash Table String Sliding Window Medium Acceptance 33.0% Start Now 567. Permutation in String Hash Table Two Pointers String Sliding Window Medium Acceptance 44.8% Start Now Day 7 Breadth-First Search / Depth-First Search 733. Flood Fill Array Depth-First Search Breadth-First Search Matrix Easy Acceptance 58.2% Start Now 695. Max Area of Island Array Depth-First Search Breadth-First Search Union Find Matrix Medium Acceptance 69.6% Start Now Day 8 Breadth-First Search / Depth-First Search 617. Merge Two Binary Trees Tree Depth-First Search Breadth-First Search Binary Tree Easy Acceptance 77.9% Start Now 116. Populating Next Right Pointers in Each Node Linked List Tree Depth-First Search Breadth-First Search Binary Tree Medium Acceptance 56.8% Start Now Day 9 Breadth-First Search / Depth-First Search 542. 01 Matrix Array Dynamic Programming Breadth-First Search Matrix Medium Acceptance 43.8% Start Now 994. Rotting Oranges Array Breadth-First Search Matrix Medium Acceptance 51.7% Start Now Day 10 Recursion / Backtracking 21. Merge Two Sorted Lists Linked List Recursion Easy Acceptance 60.2% Start Now 206. Reverse Linked List Linked List Recursion Easy Acceptance 70.1% Start Now Day 11 Recursion / Backtracking 77. Combinations Backtracking Medium Acceptance 63.7% Locked 46. Permutations Array Backtracking Medium Acceptance 72.1% Locked 784. Letter Case Permutation String Backtracking Bit Manipulation Medium Acceptance 72.3% Locked Day 12 Dynamic Programming 70. Climbing Stairs Math Dynamic Programming Memoization Easy Acceptance 51.0% Locked 198. House Robber Array Dynamic Programming Medium Acceptance 47.1% Locked 120. Triangle Array Dynamic Programming Medium Acceptance 50.7% Locked Day 13 Bit Manipulation 231. Power of Two Math Bit Manipulation Recursion Easy Acceptance 44.9% Locked 191. Number of 1 Bits Bit Manipulation Easy Acceptance 60.3% Locked Day 14 Bit Manipulation 190. Reverse Bits Divide and Conquer Bit Manipulation Easy Acceptance 48.7% Locked 136. Single Number Array Bit Manipulation #################################################################### Common interview questions +++++++++++++++++ +++++++++++++++++ - Tell me about yourself HINT: Look out for opportunities to use specifics, especially if they’re at all quirky, funny, surprising, or otherwise memorable. I am Phillip Kigenyi, a software engineer with 5 years experience working mostly on the backend with python, javascript and java. I have worked with a couple of companies from chapchap, a fintech company, sellio an online marketing platform and outbox a consultancy. There I have built products in health, ecommerce and fintech which include safepal, getin, mane, weyonje and UNMC online system +++++++++++++++++ +++++++++++++++++ - Why do you want to work here? HINT: tell a story from your life that shows how those values benefited you or taught you something. - What’s your biggest strength? HINT: Use someone else’s voice. When you respond with a story, you can refer to what other people have said about your best qualities. In this case, a ten-year tech veteran said you made a project feel less awful Glovo cs theory ================== - Hazelcast, Cassandra, MongoDb, RabbitMq, ActiveMQ, Scala, Guava, Spring, Spark Java, Angular and JQuery - NodeJs, Python, PHP, Perl - batch distributed applications, system and API design Docker, Kubernetes, React. Architectural questions e.g. monolithic vs microservices; strengths and weaknesses and a bit about React and state management. screening with recruiter, he tried to ask some standard questions, than technical screening with theoretical questions (what is garbage collector, how does it work, circuit breaker etc), coding interview (the interviewer didnt have any idea what he was doing or asking, I basically had to explain to him how to interview), systems desing (design spotify, describe how an artist will upload a song, store indifferent qualities, think about storing metadata separately, then the second use case is the user consuming the songs, searching for them etc. if you do the encoding async they will be happy), then application design, they ask about a bike system, you have to model entities for bike, the station, the user, than an entity for the rental. They extend the question asking about different ways of charging for the rental (per distance or per subscription, think about inheritance for example) last questions is to tell them the REST APIs for docking/undocking the bike, to search for bikes using some filter (example radius or electrical bike). Basically they want to evaluate if you know which resource you are using (station, bike), if you know how to use the verbs (GET, PUT, POST, DELETE), if you can use filters, if you understand a tiny bit about pagination and authentication. They will throw you confetis with you mention token and headers. Pretty mediocre interview I'd say. Glovo interview sections ========================== 1) Concurrency 2) Parallelism 3) SQL/NOSQL # https://www.freecodecamp.org/news/nosql-databases-5f6639ed9574/ https://www.mongodb.com/nosql-explained 4) Performance 5) QA Stages 6) Various data structure 7) OOPs principles # https://www.freecodecamp.org/news/object-oriented-programming-concepts-21bb035f7260/#:~:text=The%20four%20principles%20of%20object,abstraction%2C%20inheritance%2C%20and%20polymorphism. https://www.youtube.com/watch?v=UI6lqHOVHic&ab_channel=Lucidchart 8) SOLID Principle # https://www.pluralsight.com/guides/solid-design-microservices https://stackoverflow.com/questions/1913098/what-is-the-difference-between-an-interface-and-abstract-class#:~:text=The%20key%20technical%20differences%20between,have%20constants%20and%20methods%20stubs. https://blog.cleancoder.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html https://www.freecodecamp.org/news/solid-principles-single-responsibility-principle-explained/ https://www.digitalocean.com/community/conceptual_articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design 9) Design pattern # https://refactoring.guru/design-patterns 10) Unit testing 11) REST API- various methods, error mechanisms 12) Idempotent or non-idempotent # 13) About various projects that I have done 14) Basic concepts of docker, spring — dependency injections and all 15) Microservice architecture — distributed systems — pros and cons 16) How to improve performance bug 17) various types of testing 18) How to tackle non reproducible bugs 19) About ACID property # https://cloudxlab.com/assessment/displayslide/1419/acid-properties-in-dbms#:~:text=ACID%20(Atomicity%2C%20Consistency%2C%20Isolation,errors%2C%20power%20failures%2C%20etc. https://www.ibm.com/docs/en/cics-ts/5.4?topic=processing-acid-properties-transactions 20) Caching 21) CAP theorem # 22) Pros and cons about the Monolithic and Microservice Architecture 23) Logging mechanisms 24) Thread and Process 25) Inter communication and intra communication X) system design https://www.youtube.com/watch?v=gf8R7sgme6o&ab_channel=AmazonWebServices https://www.freecodecamp.org/news/systems-design-for-interviews/ System Design Interview by Alex Xu https://www.freecodecamp.org/news/systems-design-for-interviews/#section-7-consistent-hashing https://www.educative.io/path/scalability-system-design 8) SOLID Principle - The Single Responsibility Principle: Do one thing or do relatively few related things - Open/Closed Principle: open for extension but closed for modification - Liskov's substitution principle: states that if objects of type T are replaced with objects of type S, when S is a subtype of T, in a program, the program’s characteristics should not change (e.g. correctness). In summary, if a class inherits another, it should do so in a manner that all the properties of the inherited class would remain relevant to its functionality. - Interface Segregation Principle (ISP): The interface segregation principle states that the interface of a program should be split in a way that the user/client would only have access to the necessary methods related to their needs. Martin explains this principle by advising, “Make fine grained interfaces that are client-specific. Clients should not be forced to implement interfaces they do not use.” https://www.bmc.com/blogs/solid-design-principles/#:~:text=SOLID%20is%20an%20acronym%20that,some%20important%20benefits%20for%20developers. - Dependency Inversion Principle: High-level modules should not import anything from low-level modules. Both should depend on abstractions “depend on abstractions, not on concretions.” .” Further, “abstractions should not depend on details. Details should depend upon abstractions.” https://blog.logrocket.com/dependency-inversion-principle-typescript/#:~:text=The%20dependency%20inversion%20principle%20is,affecting%20the%20high%2Dlevel%20ones. Abstract class vs Interface - Abstract classes can have constants, members, method stubs (methods without a body) and defined methods, whereas interfaces can only have constants and methods stubs. - Methods and members of an abstract class can be defined with any visibility, whereas all methods of an interface must be defined as public (they are defined public by default). * - When inheriting an abstract class, a concrete child class must define the abstract methods, whereas an abstract class can extend another abstract class and abstract methods from the parent class don't have to be defined. - Similarly, an interface extending another interface is not responsible for implementing methods from the parent interface. This is because interfaces cannot define any implementation. - A child class can only extend a single class (abstract or concrete), whereas an interface can extend or a class can implement multiple other interfaces. * - A child class can define abstract methods with the same or less restrictive visibility, whereas a class implementing an interface must define the methods with the exact same visibility (public). 19) About ACID property Atomicity All changes to data are performed as if they are a single operation. That is, all the changes are performed, or none of them are. For example, in an application that transfers funds from one account to another, the atomicity property ensures that, if a debit is made successfully from one account, the corresponding credit is made to the other account. Consistency Data is in a consistent state when a transaction starts and when it ends. For example, in an application that transfers funds from one account to another, the consistency property ensures that the total value of funds in both the accounts is the same at the start and end of each transaction. Isolation The intermediate state of a transaction is invisible to other transactions. As a result, transactions that run concurrently appear to be serialized. For example, in an application that transfers funds from one account to another, the isolation property ensures that another transaction sees the transferred funds in one account or the other, but not in both, nor in neither. Durability After a transaction successfully completes, changes to data persist and are not undone, even in the event of a system failure. For example, in an application that transfers funds from one account to another, the durability property ensures that the changes made to each account will not be reversed. BASE (Basically Available, Soft state, Eventual consistency). 12) Idempotent or non-idempotent An HTTP method is idempotent if an identical request can be made once or several times in a row with the same effect while leaving the server in the same state 7) OOPs principles Encapsulation: Information hiding Abstraction: This mechanism should hide internal implementation details. It should only reveal operations relevant for the other objects. Expose a standard set of functionality and prevent breaking changes Inheritance: children inherit functionality from parent(code reusability) Polymophysm: different forms. a child ask like the parent ie a function that takes in shape should also take in square, triange or rectangle 3) SQL/NOSQL SQL: AWS aurora, GC sql, spanner NOsql: mongodb, cassandra, couchdb, elasticsearch, redis, dynamodb, firebase, GC datastore Key value Stores — Riak, Voldemort, Amazon SimpleDB, and Redis Wide Column Stores — Cassandra and HBase. Document databases — MongoDB, couchdb Graph databases — Neo4J and HyperGraphDB. System design ----------------- Keep in mind some interviewers look for you to ask clarifying questions at the beginning more than Tim did here. Questions on: 1. who are the users? 2. how are they going to use it? 3. what use cases are there? 4. what are the inputs and outputs? 5. how much data do we expect to handle? 6. how many requests per second do we expect? As a hiring manager, here is one tweak I'd add to this interview. When asked if you'd like to improve your design, always say yes. Have a few simple concepts in your backpocket. E.g redis clustering, queueing, analytics using nosql etc. Non functional requirements - Availability vs consistency - Scale: How many users - Latency: How do you manage background processes/Use of local storage SD steps For every requirement you get, list out the functional and non functional requirements. Capacity estimate and find the scope / constraints / trade-offs. Design the APIs Design the database models and right database choice. Data Partitioning and Replication Caching Data cleanup Synchronous vs Asynchronous Usage LoadBalancers Security and Permissions Telemetry /Notifications/Dashboards Strings https://leetcode.com/problems/valid-palindrome/ https://leetcode.com/problems/reverse-string/ https://leetcode.com/problems/reverse-words-in-a-string-iii/ Arrays https://leetcode.com/problems/move-zeroes/ https://leetcode.com/problems/binary-search/ https://leetcode.com/problems/flipping-an-image/ https://leetcode.com/problems/fibonacci-number/ https://leetcode.com/problems/valid-parentheses/ This is the pool of questions for the technical interview Strings https://leetcode.com/problems/valid-palindrome/ https://leetcode.com/nvproblems/reverse-string/ https://leetcode.com/problems/reverse-words-in-a-string-iii/ Arrays https://leetcode.com/problems/move-zeroes/ https://leetcode.com/problems/binary-search/ https://leetcode.com/problems/flipping-an-image/ https://leetcode.com/problems/fibonacci-number/ https://leetcode.com/problems/valid-parentheses/ - Why do you want to work here? - What’s your biggest strength? - what did you learn in the last 6 months? - what is heroku? - what is a conditional statement? - why use react? - Tell me your biggest weakness as an engineer. - Describe a tricky bug you’ve encountered. - What’s the biggest project you’ve shipped? - What’s your favorite programming language? Why? - How do you overcome interpersonal conflicts with coworkers? - Can you give an example of a valuable piece of feedback that you have received? - Can you describe a situation where you had to work with a decision that you didn’t agree with? - Describe a technical mistake you have made? - How would your coworkers describe you in one word? Interview blog points ======================== - Keep response below 2 mins - Understand the technologies you have listed - Expect suprises - Skip certain naratives STAR - have direction - limit the edge cases github key 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 google https://www.glassdoor.com/Interview/Google-Software-Engineer-Interview-Questions-EI_IE9079.0,6_KO7,24.htm#InterviewReview_4168541 resume screening, phone screenings, on-site interviews, hiring committee reviews, and executive reviews. The most difficult parts were phone screenings (2 rounds), and on-site interviews (4 rounds). These interviews lasted 45 minutes on average Interview Direct onsite because I interviewed in the past and did well that time. From the time I sent my resume to interview day: 2 weeks. From interview day to offer over the phone: 2 weeks. The syllabus for the interviews is very clear and simple: 1) Dynamic Programming 2) Super recursion (permutation, combination,...2^n, m^n, n!...etc. type of program. (NP hard, NP programs) 3) Probability related programs 4) Graphs: BFS/DFS are usually enough 5) All basic data structures from Arrays/Lists to circular queues, BSTs, Hash tables, B-Trees, and Red-Black trees, and all basic algorithms like sorting, binary search, median,... 6) Problem solving ability at a level similar to TopCoder Division 1, 250 points. If you can consistently solve these, then you are almost sure to get in with 2-weeks brush up. 7) Review all old interview questions in Glassdoor to get a feel. If you can solve 95% of them at home (including coding them up quickly and testing them out in a debugger + editor setup), you are in good shape. 8) Practice coding--write often and write a lot. If you can think of a solution, you should be able to code it easily...without much thought. 9) Very good to have for design interview: distributed systems knowledge and practical experience. 10) Good understanding of basic discrete math, computer architecture, basic math. 11) Coursera courses and assignments give a lot of what you need to know. 12) Note that all the above except the first 2 are useful in "real life" programming too! Interview 1: Graph related question and super recursion Interview 2: Design discussion involving a distributed system with writes/reads going on at different sites in parallel. Interview 3: Array and Tree related questions Interview 4: Designing a simple class to do something. Not hard, but not easy either. You need to know basic data structures very well to consider different designs and trade-offs. Interview 5: Dynamic programming, Computer architecture and low level perf. enhancement question which requires knowledge of Trees, binary search, etc. At the end, I wasn't tired and rather enjoyed the discussions. I think the key was long term preparation and time spent doing topcoder for several years (on and off as I enjoy solving the problems). Conclusion: "It's not the best who win the race; it's the best prepared who win it." Java 8 - lambda - mapreduce, functional style operations - date and time api update - Difference java 8 and 11 - file access and manupilation - java file.java Leetcode guide Study Tip: After solving a problem, it's natural to want to move on to the next problem quickly. However, we highly recommend that you check out the discuss section and/or the official solution article, even if you solved the problem with ease. https://dou.ua/lenta/articles/google-interview/ https://www.educative.io/courses/grokking-the-system-design-interview?utm_medium=cpc&utm_source=google_ars https://habr.com/ru/post/419945/ https://haseebq.com/how-to-break-into-tech-job-hunting-and-interviews/ https://www.bigocheatsheet.com/ https://adidas.github.io/ https://hackernoon.com/14-patterns-to-ace-any-coding-interview-question-c5bb3357f6ed https://seanprashad.com/leetcode-patterns/ https://www.youtube.com/watch?v=KLlXCFG5TnA&list=PLot-Xpze53lfQmTEztbgdp8ALEoydvnRQ https://www.youtube.com/watch?v=JSraCdiwd1U https://www.educative.io/path/ace-python-coding-interview https://cult.honeypot.io/reads/8-best-react-courses-2022 https://orrsella.gitbooks.io/soft-eng-interview-prep/content/ https://leetcode.com/discuss/general-discussion/250063/AlgorithmandData-structures-booksrecommendations https://leetcode.com/discuss/study-guide/1268965/Book-recommendation-thread-for-LC-community https://leetcode.com/articles/two-pointer-technique/ https://leetcode.com/discuss/study-guide/1688903/Solved-all-two-pointers-problems-in-100-days. https://www.coursera.org/specializations/algorithms?action=enroll https://www.offerzen.com/ https://hackernoon.com/10-data-structure-algorithms-and-programming-courses-to-crack-any-coding-interview-e1c50b30b927?source=---------42------------------ https://smilecs.github.io/ https://spring.io/projects/spring-cloud-netflix https://docs.python.org/3/glossary.html https://github.com/Nnadozieomeonu/adidas-technical-code-challange https://adidas.github.io/contributing/javascript-coding-guidelines/ https://github.com/RuairiSpain/adidas https://www.youtube.com/watch?v=RBSGKlAvoiM&ab_channel=freeCodeCamp.org https://leetcode.com/tssovi/ https://docs.google.com/spreadsheets/d/1A2PaQKcdwO_lwxz9bAnxXnIQayCouZP6d-ENrBz_NXc/edit#gid=0 https://leetcode.com/study-plan/algorithm/?progress=7ftnucr https://www.educative.io/courses/grokking-the-behavioral-interview/3YlB29JmYzx https://learning.edx.org/course/course-v1:StanfordOnline+CSX0003+1T2020/home https://www.30dayscoding.com/process https://www.youtube.com/watch?v=NqKkxQamroo&ab_channel=Nerd%27slesson https://app.codility.com/programmers/lessons/2-arrays/ https://github.com/orrsella/soft-eng-interview-prep/blob/master/topics/system-architecture.md https://www.youtube.com/watch?v=ft0owvS5tQA&ab_channel=NeetCode https://betterprogramming.pub/6-signs-that-you-are-misusing-leetcode-d15d7532eaa4 https://backtobackswe.com/pricing https://www.youtube.com/channel/UCmJz2DV1a3yfgrR7GqRtUUA https://designgurus.org/course/grokking-the-coding-interview https://medium.com/interviewnoodle/grokking-leetcode-a-smarter-way-to-prepare-for-coding-interviews-e86d5c9fe4e1 https://github.com/seanprashad/leetcode-patterns#tips-to-consider https://towardsdatascience.com/five-things-i-have-learned-after-solving-500-leetcode-questions-b794c152f7a1 https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html https://www.youtube.com/watch?v=p65AHm9MX80&ab_channel=freeCodeCamp.org https://www.youtube.com/watch?v=Peq4GCPNC5c&ab_channel=freeCodeCamp.org https://towardsdatascience.com/everything-about-javascript-object-part-1-854025d71fea https://leetcode.com/discuss/career/449135/how-to-effectively-use-leetcode-to-prepare-for-interviews https://www.toptal.com/resume/dany-farina#Skills https://github.com/donnemartin/system-design-primer https://www.youtube.com/watch?v=z_96KlOS92o&ab_channel=codebasics https://leetcode.com/discuss/interview-experience?currentPage=1&orderBy=hot&query= https://leetcode.com/discuss/interview-experience/1260613/microsoft-engineering-manager-hyderabad-may-2021-offer/969476 https://leetcode.com/discuss/interview-experience/1959175/Google-or-L4-or-Bangalore-or-May-Passed https://www.youtube.com/channel/UCRPMAqdtSgd0Ipeef7iFsKw https://get.interviewready.io/course-preview https://mail.google.com/mail/u/0/#search/takealo/FMfcgzGmvTwLpGSBkxLwQvLvfcwzkvSF https://www.youtube.com/watch?v=KEEKn7Me-ms&list=PLI1t_8YX-ApvMthLj56t1Rf-Buio5Y8KL&ab_channel=HackerRank https://www.youtube.com/watch?v=IhJGJG-9Dx8&list=PLI1t_8YX-Apv-UiRlnZwqqrRT8D1RhriX&ab_channel=HackerRank https://www.youtube.com/watch?v=fAAZixBzIAI&ab_channel=freeCodeCamp.org https://www.youtube.com/watch?v=Ge0Udbws1kc&ab_channel=Cl%C3%A9mentMihailescu https://teams.microsoft.com/_#/pre-join-calling/19:meeting_ODZjMGMzMWQtZjhhNS00OWQ5LTk4NmQtNGQxMDg3ZTQ0MDBi@thread.v2 https://leetcode.com/explore/interview/card/wix-engineering/653/trees-and-graphs/4168/ https://www.youtube.com/c/CoderbyteDevelopers/featured https://coderbyte.com/challenges https://www.youtube.com/watch?v=oBt53YbR9Kk&ab_channel=freeCodeCamp.org https://www.geeksforgeeks.org/dynamic-programming/ https://realtoughcandy.com/best-book-for-google-interview-preparation/ https://realtoughcandy.com/algomonster-review/#AlgoMonster_Review_AlgoMonster_vs_LeetCode https://algomonster.medium.com/stop-doing-leetcode-until-youve-read-this-c22822c76b4d https://www.hackerrank.com/interview/preparation-kits?h_l=domains&h_r=hrw&utm_source=hrwCandidateFeedback https://algomonster.medium.com/how-to-conquer-the-coding-interview-a63539f8d8f0 https://medium.com/office-hours/get-your-resume-startup-ready-92e63164023c https://github.com/gastonfournier/resources-for-projects https://medium.com/@prajapatikunal7/interview-experience-at-glovo-senior-back-2e52b6b47208 https://blog.cleancoder.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html https://www.freecodecamp.org/news/solid-principles-single-responsibility-principle-explained/ https://dev.to/apoorvtyagi/introduction-to-asynchronous-processing-and-message-queues-27od https://www.twilio.com/blog/asynchronous-javascript-choosing-the-right-asynchronous-tool https://www.ibm.com/docs/en/cics-ts/5.4?topic=processing-acid-properties-transactions https://cloudxlab.com/assessment/displayslide/1419/acid-properties-in-dbms#:~:text=ACID%20(Atomicity%2C%20Consistency%2C%20Isolation,errors%2C%20power%20failures%2C%20etc. https://www.freecodecamp.org/news/object-oriented-programming-concepts-21bb035f7260/#:~:text=The%20four%20principles%20of%20object,abstraction%2C%20inheritance%2C%20and%20polymorphism. https://developer.mozilla.org/en-US/docs/Glossary/Idempotent https://www.youtube.com/watch?v=gf8R7sgme6o&ab_channel=AmazonWebServices https://www.youtube.com/watch?v=mjZpZ_wcYFg&ab_channel=InsideAmazonVideos https://www.mongodb.com/scale/types-of-nosql-databases https://www.youtube.com/watch?v=XMpchIp746s&ab_channel=TheTechGranth https://www.youtube.com/watch?v=NtMvNh0WFVM&t=12s&ab_channel=Exponent https://www.youtube.com/watch?v=Z-0g_aJL5Fw&ab_channel=Exponent https://www.youtube.com/watch?v=q0KGYwNbf-0&ab_channel=Cl%C3%A9mentMihailescu https://www.freecodecamp.org/news/nosql-databases-5f6639ed9574/ https://www.youtube.com/watch?v=tv-_1er1mWI&ab_channel=Fireship https://www.freecodecamp.org/news/systems-design-for-interviews/ https://www.digitalocean.com/community/conceptual_articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design https://www.freecodecamp.org/news/systems-design-for-interviews/#section-7-consistent-hashing https://www.mongodb.com/nosql-explained https://medium.com/@avushakov/lists https://medium.com/@avushakov/list/system-design-5b7b42355086 https://itnext.io/system-design-concepts-that-helped-me-get-sr-frontend-offers-from-amazon-linkedin-9e100f3ce7d2 https://itnext.io/frontend-interview-cheatsheet-that-helped-me-to-get-offer-on-amazon-and-linkedin-cba9584e33c7 https://medium.com/@divya.venu/how-to-prepare-for-system-design-interviews-part-1-33b962c45798 https://www.youtube.com/playlist?list=PLMCXHnjXnTnvo6alSjVkgxV-VH6EPyvoX https://www.youtube.com/c/codeKarle https://leetcode.com/discuss/career/229177/My-System-Design-Template https://www.quora.com/Anyone-here-use-LeetCode-premium-How-is-your-experience/answer/Nishad-8?ch=10&oid=214574555&share=961939d2&srid=udxpv&target_type=answer https://www.youtube.com/playlist?list=PLifX7FLW45Ncn-YnaBPSsVz2HYsW8mfAX https://docs.google.com/spreadsheets/d/1-wKcV99KtO91dXdPkwmXGTdtyxAfk1mbPXQg81R9sFE/edit#gid=0 https://medium.com/interviewnoodle https://github.com/jwasham/coding-interview-university/blob/main/README.md#google-interview-university https://roadmap.sh/ SOLID Principle The Single Responsibility Principle: Do one thing or do relatively few related things Open/Closed Principle: open for extension but closed for modification Liskov's substitution principle: states that if objects of type T are replaced with objects of type S, when S is a subtype of T, in a program, the program’s characteristics should not change (e.g. correctness). In summary, if a class inherits another, it should do so in a manner that all the properties of the inherited class would remain relevant to its functionality. Interface Segregation Principle (ISP): The interface segregation principle states that the interface of a program should be split in a way that the user/client would only have access to the necessary methods related to their needs. Dependency Inversion Principle: High-level modules should not import anything from low-level modules. Both should depend on abstractions ACID property Atomicity All changes to data are performed as if they are a single operation. That is, all the changes are performed, or none of them are. For example, in an application that transfers funds from one account to another, the atomicity property ensures that, if a debit is made successfully from one account, the corresponding credit is made to the other account. Consistency Data is in a consistent state when a transaction starts and when it ends. For example, in an application that transfers funds from one account to another, the consistency property ensures that the total value of funds in both the accounts is the same at the start and end of each transaction. Isolation The intermediate state of a transaction is invisible to other transactions. As a result, transactions that run concurrently appear to be serialized. For example, in an application that transfers funds from one account to another, the isolation property ensures that another transaction sees the transferred funds in one account or the other, but not in both, nor in neither. Durability After a transaction successfully completes, changes to data persist and are not undone, even in the event of a system failure. For example, in an application that transfers funds from one account to another, the durability property ensures that the changes made to each account will not be reversed. BASE (Basically Available, Soft state, Eventual consistency). OOPs principles Encapsulation: Information hiding Abstraction: This mechanism should hide internal implementation details. It should only reveal operations relevant for the other objects. Expose a standard set of functionality and prevent breaking changes Inheritance: children inherit functionality from parent(code reusability) Polymophysm: different forms. a child ask like the parent ie a function that takes in shape should also take in square, triange or rectangle SQL/NOSQL SQL: AWS aurora, GC sql, spanner NOsql: mongodb, cassandra, couchdb, elasticsearch, redis, dynamodb, firebase, GC datastore Key value Stores — Riak, Voldemort, Amazon SimpleDB, and Redis Wide Column Stores — Cassandra and HBase. Document databases — MongoDB, couchdb Graph databases — Neo4J and HyperGraphDB. Soft skills -------------- - have a story for your departure? - why do you why to join the company? - read and understand the job description? - why did you leave your previous job? I was let go from my previous job due to a situation where I had a disagreement with my manager that escalated into an altercation. While I regret my behavior in that situation, I have learned a lot from it and have taken steps to improve my communication and conflict resolution skills. I recognize that it's important to remain professional and respectful even in difficult situations, and I am committed to bringing those values to this role. I'm excited to be here and to have the opportunity to show you what I can bring to the team Software architecture plan ---------------------------- Courses: Udemy - Software Architecture: Complete Beginner's Guide (https://www.udemy.com/course/software-architecture-complete-beginners-guide/) Pluralsight - Software Architecture Fundamentals (https://www.pluralsight.com/courses/software-architecture-fundamentals) Coursera - Software Design and Architecture Specialization (https://www.coursera.org/specializations/software-design-architecture) YouTube channels: Tech Primers (https://www.youtube.com/channel/UCf8wJzxnKlTtT-r-kmVvK2A) - provides tutorials and guides on software architecture TechLead (https://www.youtube.com/c/TechLead) - offers insights into software engineering and career advice for software architects Books: Software Architecture in Practice (https://www.amazon.com/Software-Architecture-Practice-3rd-SEI/dp/0321815734) by Len Bass, Paul Clements, and Rick Kazman - provides an overview of software architecture concepts and principles Clean Architecture (https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164) by Robert C. Martin - offers guidance on designing clean and maintainable software architectures Building Microservices (https://www.amazon.com/Building-Microservices-Designing-Fine-Grained-Systems/dp/1491950358) by Sam Newman - focuses on designing and building microservices-based architectures "Software Architecture: Complete Guide" on Udemy by Paulo Dichone: This course covers a wide range of software architecture topics, including enterprise application architecture and design patterns. "Architecting Applications for the Real World in .NET" on Pluralsight by Scott Allen: This course focuses on building real-world applications using architectural patterns and best practices. https://careers.adyen.com/formula https://www.adyen.com/about Soft skills ============== - have a story for your departure? - why do you why to join the company? - read and understand the job description? what skills are you bringing to the team - new perspective thinking - fault detection, detecting flaws - leadership what skills make you unique? - soft skills: new perspective thinking, changing the status quo - coding: methodical, measure twice cut once why did you leave your previous job, have a story for your departure?/why did you leave your previous job? - I left Adidas due to company restructuring as a result of changing global trends like recession. This left me with a job that wasn't adding much value as most of the work was maintainence I was let go from my previous job due to a situation where I had a disagreement with my manager that escalated into an altercation. While I regret my behavior in that situation, I have learned a lot from it and have taken steps to improve my communication and conflict resolution skills. I recognize that it's important to remain professional and respectful even in difficult situations, and I am committed to bringing those values to this role. I'm excited to be here and to have the opportunity to show you what I can bring to the team Why do you want to work for us? Having researched your company you are clearly a leader within the industry and I feel I would be able to excel within the role and put all of my skills, qualities and experience to good use. Whilst studying your company online, it is clear to see you have strong and exciting plans for the future and I would like to be a part of your journey through the role I am being interviewed for today. Finally, it is also clear that you support your employees, so they can excel within their roles. There’s lots of positive comments online about your company and, if I am successful at interview, I would feel quite proud to have your name on my CV/resume. how do you learn Interviewer questions https://www.indeed.com/career-advice/interviewing/good-questions-to-ask-at-the-end-of-an-interview ===================== What qualities and attributes make for a successful employee in this company? What is your favorite thing about working for this company? How would you describe the company's culture? ---- What I didn't like about the last team? - bloated slack meetings How did you resolve a challenge with a team mate? How do you learn new things? - watch videos to grab the 80/20 - find the books and courses - if immediately, narrow down to the chapter - create a demo Klarna ========= purpose: the aim of making it easier for people to shop online services: direct payments, pay after delivery options and instalment plans values: customer obsession, deliver quality results, let the team shine, *challenge the status quo, start small and learn fast, hire and develop exceptional talent, *courage, *detailed thinkers pointers ---------- - never be negative about your employer - keep reason short and precise https://www.youtube.com/watch?v=_i9I7Y09t6U&ab_channel=CareerVidz https://passmyinterview.com/top-30-interview-questions-answers/ ################################################### ################################################### ################################################### Tips for Answering the 30 Most Common Job Interview Questions! Q1. Tell me about yourself. TIP – Use the format SET when answering this first interview question: S – Skills and qualities you have that match the role. E – Experience and/or educational qualifications. T – The type of person you are. ------------- I am Phillip Kigenyi, a hard-working and professional software engineer with 5 years of experience building large-scale software systems in various industries like healthcare, e-commerce and advertisement using tools like python, javascript, AWS and GCP. I also possess leadership skills and enjoy working closely with other people within the team to translate business requirements into working software I am loyal, hard-working, professional and conscientious and, having studied the job description for this role in detail, I feel the attributes I possess are a strong match. Whilst at work, I am someone who takes pride in delivering each task to a high standard and I achieve this by working closely with other people within the team. I also make sure I obtain a clear brief from my manager or supervisor as to what they want to me to achieve whilst working in the role I am employed. If successful, I am looking forward to learning the role quickly and getting to know as much about your products and services, so I can start contributing and making a positive impact within the organization. Q2. Why do you want to work for us? TIP – Tell them you are seeking long-term employment with a positive, forward-thinking company and that you want to be part of a team that are all striving to achieve the same goal. ------------- I am seeking long-term employment with a positive, forward-thinking company and would allow me to realise my full potential and ultimately make an impact on the people's lives Q3. How would you deal with conflict with a co-worker? TIP – Don’t fall into the trap of saying you would leave the conflict for your manager to resolve. The interviewer wants to hear that you would sort out the problem yourself. ----------- - analyse the conflict and write my observations - create a list of actions to resolve the situation - compose my message in a way respectable and non-instigative way - set a meeting with the co-worker and listen to their side of the story - adjust my list of actions - tell them my side of the story and the action points - compromise on what actions to take Q4. Why do you want this job? TIP – They will ask all the other candidates this same question too, so it is imperative you give the interviewer an answer that makes you stand out. Make sure you talk about how you want to work for their company because they are a bright, forward-thinking organization that will support you in your work! Q5. Tell me about a time when you provided excellent customer service. TIP – This is a behavioral interview question and my advice is to use the S.T.A.R technique to structure your response. The S.T.A.R technique stands for: SITUATION – Briefly outline the situation you were in. TASK – Explain the task that needed to be done. ACTION – Give details about the action you took, and the action others took. RESULT – Tell the interviewer the results following your actions. (Make sure the results are positive!) Q6. What’s your greatest achievement? TIP – Where possible, give an answer that explains something you achieved with a previous employer. Perhaps you helped a previous employer successfully launch a new product, or even break previous company sales figures for a particular year. If this is your first job, talk about either your educational qualifications, something you did for charity, or how you won a team sporting event. Q7. Tell me about a time when you were under pressure at work. What was the situation, and how did you get through it? TIP – The best way to answer this difficult behavioral interview question is to give a situation you were in when you had to work to a strict timescale. If you add a time pressure to the answer, it will be appealing to the vast majority of employers and hiring managers. Q8. Where do you see yourself in five years? TIP – When answering this common interview question, put yourself in the shoes of the employer. What do they want to hear from your answer? They want to hear three things: That you will still be working for them in five years’ time. That you will have developed to become a highly-trusted and productive member of their team. That you will help other people to get up to speed when they join the company. ------------- I see myself grately improving my craft, leading a one of the development team/department at [company] and becoming an expert software architect whilst mentoring up and coming software engineers Q9. What did you like and dislike about your previous job? TIP – Do not say you disliked your boss or your work colleagues! Be respectful, but don’t be afraid to say you disliked a particular aspect of your work, especially if it demonstrates you are a driven and enthusiastic person. ------------- Disliked: strict and narrow release cycles which cost alot of time in planning and managing all the people involved Liked: alot of learning resources, great employee review and a clear plan to grow within the company Q10. Describe a time when you disagreed with your boss. TIP – Again, use the S.T.A.R technique to give a great answer here. Do not say… “I would never disagree with my boss!” This interview question is assessing your ability to disagree with your manager or supervisor in a constructive and beneficial way. Q11. What’s your least favorite task? TIP – Be careful not to say something that is part of the job description. It is important that you do give something you dislike doing at work, but don’t let it be an issue for you! Q12. Tell me about a time you took the initiative to solve a difficult problem. TIP – Taking the initiative is one of the most important qualities needed at work. It means you are not afraid to take the lead when something needs resolving and you can come up with solutions to difficult problems. Q13. What are your strengths and weaknesses? TIP – Give four or five strengths that are a good match for the job you are applying for (refer to the job description if there is one), and then give just one weakness that is not a requirement of the role. It is important to say you are always seeking to improve on your weakness at the end of your answer. ----------------- 3 words: Methodical, inquisitive, kind Strength - Architecture - Leadership - Methodical - Resolving incidencies - Kind and helpful Weakness - Devops - Frontend Q14. Tell me about a time when you did something at work that had a positive impact on your team or the organization. TIP – Doing something positive at work could include saving the business money, providing great customer service that goes above and beyond, increasing sales, making a suggestion that improves systems or processes, or undertaking a training course that improves working efficiency. Q15. Why should we hire you? TIP – When you answer this common but difficult interview question, it is important to use the following three phrases: #1. Add value. #2. Commercially-aware. #3. Fast-learner. Q16. Talk about a time when you had to work closely with someone whose personality was very different from yours. TIP – This question is assessing your ability to willingly and cooperatively work with anyone within a team. It takes all types of personality to make a strong team, so give a specific example (using the S.T.A.R technique) where you worked with someone who had a very different personality to yours. Q17. Describe a time when the team you were a part of was undergoing some change. How did the change impact you, and how did you adapt? TIP – Change is a very important part of all successful organizations. For a business or company to stay at the forefront of its industry, change must be embraced by everyone within the team. Give a specific answer that demonstrates you always embrace change positively and you adapt to it quickly. Q18. What motivates you? TIP – Give a mixture of personal and professional motivators and do not say you are motivated by the weekends! Q19. Tell me about a time when you had to collaborate with a coworker who was difficult to work with. TIP – This is a difficult interview question to answer correctly. It is assessing your ability to put differences aside and focus on the task in hand. It also assesses your ability to build positive relationships with your co-workers. Q20. Describe a time when you had to be flexible in a work situation. TIP – The most effective way to answer this question to gain the highest scores possible is to give a situation where you volunteered to help your employer when asked to. Q21. Describe a time you had to give a person difficult feedback? TIP – The situation you give to this interview question can either be work-related or from your personal life. Demonstrate your ability to give feedback using tact and diplomacy. Q22. Describe yourself in three words. TIP – When answering this interview question don’t be afraid to sell yourself and remember to explain why you chose the 3 words. Make sure the words are positive and something they will remember you by! --------- Methodical, inquisitive, kind Q23. How do you respond to stress and pressure? TIP – Stress and pressure are part of everyday working life. Show you are not fazed by stress or pressure and that you cope with it by remaining calm and focused on your job, and by being organized in your work. --------- - meditate - talk to friends and family I further try to mitigate the stressers in the first place ie setting up systems and tools to handle it Q24. Describe a time when you got frustrated or angry at work. TIP – The most effective way to answer this interview question is to talk about how you got passionate about a situation that impacted the organization you were working for. Do not say, I never get frustrated or angry, because we all do from time to time! Q25. How would you deal with a customer complaint? TIP – There is a very simple process for dealing with customer complaints that only takes a few seconds to learn. Make sure you learn it before you attend your job interview. It involves listening to the customer, allowing them to speak, apologizing for the complaint, coming up with a solution and taking steps to prevent the same complaint from happening again! Q26. When have you gone above and beyond for a customer? TIP – This is your opportunity to show the interviewer what great customer service is! Again, use the S.T.A.R technique to structure a brilliant answer that shows you have the knowledge and the experience to do a great job for them! Remember, going above and beyond means literally going out of your way to do something of significance for the customer. Q27. Why are there gaps in your employment? TIP – Whilst it is important to be honest about any gaps in your employment, I believe the best way to answer this question is to show you used your time away from work in a positive way. Perhaps you went traveling to experience different cultures or you took time off work to raise your family. Q28. Why did you leave your last job? Why do you want to leave your current job? TIP – Do not be negative of your previous employer or your work colleagues. If you leave your job on good terms, the interviewer will view this positively! Q29. How did you find out about this job? TIP – Demonstrate that you have been keeping an eye out for vacancies to come up with their company. This is much better than applying on the spot because the job looks appealing. Q30. What are your salary expectations? TIP – Before you attend your job interview, look to see what the average salary range is for the position you are applying for. This can be achieved on GlassDoor.com or PayScale.com. Then, ask for a salary that is slightly below the top average range and justify why you are asking for that amount. 21 tough interview questions =============================== Q2. Why do you want to work for our company? Q3. When have you provided excellent customer service? Q4. Why do you want to leave your job? Q5. What’s your biggest weakness? Q6. Tell me about a time when you worked as part of a team? Q7. Tell me about a time when you managed multiple tasks all at once? Q8. What’s your biggest achievement in life so far and why? Q9. Explain a situation you were in when you handled a customer complaint? Q10. What are your strengths? Q11. What would you do if you didn’t get on with someone in your team? Q12. Tell me about a time when you demonstrated strong customer service skills? Q13. When did you have to complete a difficult task whilst under pressure? Q14. Describe a stressful situation at work and how you handled it? Q15. When have you shown flexibility at work? Q16. Describe a time when you worked alone on a project or task for a long period of time? Q17. What was the last piece of professional development you undertook? Q18. Tell me about a time when you overcame conflict in a team? Q19. Where do you see yourself in 5 years' time? Q20. What are your salary expectations? Q21. Do you have questions for the panel? ---------------------------------------- JOB INTERVIEW TIP #1 Make sure you READ the job description before you attend the interview! This document is crucial to your success. If you fail to read it, how do you know what is required of you in the role? By reading and studying the job description you will be able to answer confidently interview questions such as what are your strengths and weaknesses, why should we hire you and tell me about yourself. JOB INTERVIEW TIP #2 At the end of your interview, you will have the chance to ask the interviewer some questions of your own. Make sure you ask three smart and intelligent questions and avoid questions that cover pay, holiday, or future advancement opportunities! JOB INTERVIEW TIP #3 The number one mistake made by the majority of candidates during an interview is being negative. It is essential that you smile, you are polite and you talk positively throughout the duration of your interview. Don’t be negative about your previous job, your former work colleagues or your boss! Always be positive and remember to SMILE! JOB INTERVIEW TIP #4 Read your resume or CV before you attend your job interview. Whilst the interviewer should have a copy of this document in front of them at the interview, they may ask you to read through it for them! The interview question may go, talk me through your resume, or talk me through your CV. You should be familiar with this document prior to attending your interview and be able to talk through your work experience with confidence. Skills to learn =================== hexagonal architecture, elasticsearch, rabbitmq, SQS, jenkins, redis, prometheous, instana, AWS, Splunk, Ansible, Terraform, Jenkins, Docker and Kubernetes, React, React Native, Redux, sql, Kafka, Docker, GitLab MySQL, Postgres, Redis, MongoDB, Cassandra or s Experience working with cloud platforms like GCP, AWS or Azure. Experience working on modern technologies / architectures such as DB Sharding, Redis Sharding, Websockets, SNS, GRPC etc. understanding of Kafka, SQS, etc. Anthos - K3S - Zenko - gRPC Remote work strategy - visibility of work - communication - coding standards - governance thru code Turing prep resouces ===================== Coursera – https://www.coursera.org/learn/algorithmic-thinking-1 Hackerrank – https://hackerrank.com/ Codility – https://app.codility.com/demo/take-sample-test/ Khan Acadamy – https://www.khanacademy.org/computing/computer-science/algorithms Data structures and algorithms – https://leetcode.com System Design – https://github.com/donnemartin/system-design-primer OOP & Design Patterns – https://www.youtube.com/playlist?list=PLF206E906175C7E07 Git – https://git-scm.com/book/en/v2 Dynamic programming ----------------------- https://leetcode.com/problems/longest-increasing-subsequence/editorial/ 1. First, we need some function or array that represents the answer to the problem from a given state. For many solutions on LeetCode, you will see this function/array named "dp". For this problem, let's say that we have an array dp 2. Second, we need a way to transition between states, such as dp[5] and dp[7]. This is called a recurrence relation 3. The third component is the simplest: we need a base case. For this problem, we can initialize every element of dp to 1 Bloomberg Coding Interview tips ------------------ - clarifying questions - articulate - solve the question - communication* Leetcode ============== General ----------- - BFS use only traversal because recurssion stack will conflict with queue - acyclic: no cycles coding unblocking --------------------- - work backwards in array - convert linkedlist to array - swap symbols; ==, !=, >, < - think through the base cases ie empty strings, same length, single element - system design -------------- Steps ~~~~~~ - functional requirements - non functional requirements: scale(volume), performance/rps(latency) - specific feature - rest api design - metrics: data, rps - high level design(few components) scale ~~~~~~~~ - CDN - circuit breaker - cache: redis, inmemory - indexes - horizontal scaling behaviour interview --------------------- - use numbers - use I - don't be verbose Skills to learn ================ Development experience of building distributed solutions on GCP using Cloud Functions (Python), Cloud Run, GKE. • Understanding of GCP networking and security mechanisms for authentication and authorization in GCP using service accounts, roles. • Understanding the security model for, and practical aspects of, VPCs, Access APIs and services options such as Private Service Connect, Private Google Access, Serverless VPC Access. • Competence to review the security setup of the above components and services, and the usage of libraries (Python or C#) in this context. • Experience of BigQuery and Dataform for storage and transformation of structured data. Additional relevant experience and knowledge: • Composer (Airflow) and Workflow. • GCP Event model (Eventarc vs PubSub events) including security. • Logging (writing to logs, query definitions, integration to other components and alternatives). • Alternatives to BigQuery such as Cloud SQL. • App Engine Behavioral interview structure -------------------------------- An introduction to Fever’s business model, structure and culture. Prepare to discuss your background and previous professional experiences, as well as the reasons for you to consider joining us! We will ask some questions regarding your technical skills - topics such as systems and architecture design, software testing, CI/CD, mentoring or applying best practices will be covered. We will share further details about our recruitment process, our benefits and our perks as a company. You will have some minutes at the end of the call to ask any questions you might have for us!