Name: Lalithanjali Yandamuri
Email: lalithanjaliyandamuri@gmail.com
Phone: +918499808592, +13605508686
Skills: Data Structures, Python, Java, JavaScript
Work Experience:
Personal Projects:
Achievements:
1. Time complexity is a measure of the amount of time it takes to run an algorithm as the size of the input grows. Space complexity measures the amount of memory (space) required to run an algorithm as the size of the input grows.
2. Python programming uses the following data structures: lists, tuples, sets, and dictionaries. A list is an ordered collection of items that can be changed (mutable). A tuple is an ordered collection of items that cannot be changed (immutable). A set is an unordered collection of unique items. A dictionary is an unordered collection of key-value pairs, where each key must be unique.
3. A linked list is a data structure that consists of nodes linked together in a sequence. Each node contains a data element and a reference to the next node in the list. Example code:
class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def append(self, data): new_node = Node(data) if self.head is None: self.head = new_node return current_node = self.head while current_node.next: current_node = current_node.next current_node.next = new_node
4. Recursion is a technique in which a function calls itself repeatedly until a base case is reached. A recursive function to find the factorial of a number n in Python:
def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)
5. An algorithm is a set of instructions for solving a problem or performing a task. Example: finding the largest number in an array of integers.
def find_largest(arr): largest = arr[0] for i in range(1, len(arr)): if arr[i] > largest: largest = arr[i] return largest
6. There are different types of sorting algorithms, such as bubble sort, insertion sort, selection sort, quicksort, mergesort, and heapsort. Example: quicksort divides an array into two subarrays, then recursively sorts those subarrays. The steps are:
7. A stack is a linear data structure that follows the Last In First Out (LIFO) principle, while a queue is a linear data structure that follows the First In First Out (FIFO) principle. Example code for stack:
class Stack: def __init__(self): self.items = [] def is_empty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[-1] def size(self): return len(self.items)
8. Python program to find the second largest number in an array of integers:
def second_largest(arr): largest = arr[0] sec_largest = arr[1] if arr[0] != arr[1] else float('-inf') for i in range(1, len(arr)): if arr[i] > largest: sec_largest = largest largest = arr[i] elif arr[i] > sec_largest and arr[i] != largest: sec_largest = arr[i] return sec_largest
9. Object-oriented programming is a paradigm in which programs are organized around objects that have properties and methods. Example:
class Car: def __init__(self, make, model, year): self.make = make self.model = model self.year = year def start(self): print("The car has started.") def stop(self): print("The car has stopped.")
10. An abstract class is a class that cannot be instantiated and contains one or more abstract methods. An interface is a collection of abstract methods. An abstract method is defined in an abstract class but has no implementation. Example:
from abc import ABC, abstractmethod class Shape(ABC): @abstractmethod def area(self): pass class Circle(Shape): def __init__(self, r): self.radius = r def area(self): return 3.14 * self.radius ** 2
In this round, the interviewer will ask questions about your past experiences and how you responded to certain situations in the workplace. Use the Situation, Task, Action, Result (STAR) format to structure your responses.
1. Situation: We were working on a software project that required parsing large amounts of data from various sources. However, the data formats were different and inconsistent, which made parsing difficult.
Task: Our task was to parse the data accurately and efficiently, despite the inconsistencies in format.
Action: We started by analyzing the data formats to understand the differences and similarities. We then wrote a custom parsing program that could handle all the formats by using regular expressions and pattern matching. We also tested the program extensively to ensure that it worked correctly.
Result: Our program was able to parse the data accurately and efficiently, which saved us time and effort. It also allowed us to process the data faster and more reliably.
2. Situation: I was assigned to a project that required working with a new programming language that I was not familiar with.
Task: My task was to learn the new language quickly and start contributing to the project.
Action: I started by reading the documentation and tutorials for the language and practicing coding exercises. I also reached out to colleagues who had experience with the language for guidance and advice. Additionally, I began with simpler tasks and gradually increased the complexity to develop my knowledge.
Result: I was able to learn the new language quickly and contribute to the project successfully. This experience also strengthened my ability to pick up new programming languages and adapt to new programming environments effectively.
3. Situation: I participated in a project that involved collaborating and coordinating with multiple teams from different departments.
Task: Our task was to ensure that everyone was aligned with expectations and progress, and no misunderstanding occurred throughout the project.
Action: We started by identifying the communication channels, schedules, and touchpoints for each of the teams. We also held regular meetings to discuss project status, priorities and raised any challenges. Additionally, we created a shared repository for project documents that any team member could access and provided a clear feedback mechanism to enable quick fixes for any issues.
Result: Our coordination was smooth and efficient throughout the project, and all teams were able to deliver on the assigned tasks. The project was completed within schedule and budget, with positive feedback from stakeholders.
4. Situation: We were working on a complex software system with multiple interconnected components. However, the system was producing unexpected results, and the logs were not providing useful information for debugging.
Task: Our task was to identify the source of the issue and find a solution.
Action: We started by reviewing code and documentation to understand the architecture and interaction between the components. We also ran various tests to isolate the components that caused the issue. Additionally, we used debugging tools like breakpoints in the code to identify where and how the system was producing the unexpected results.
Result: With our efforts, we were able to identify the issue, resolve it, and update the logs to provide useful information for debugging in the future. We also improved the overall performance of the system by optimizing the code.
5. Situation: I had a disagreement with a colleague on how to approach a problem.
Task: Our task was to resolve our disagreement and find a mutually acceptable solution
Action: We started by having a conversation about our perspectives and understanding the reasons for our disagreement. We then listened to each other and discussed alternative approaches to find a common approach. We also considered the implications of possible solutions for the project and team and created a plan to implement the solution.
Result: We were able to find a mutually acceptable solution, which improved our quality of work and maintain a healthy relationship with the colleague.
6. Situation: I was leading a project that required managing multiple tasks with different priorities and conflicting demands.
Task: My task was to manage resources and time effectively to achieve the project's objectives and deadlines.
Action: I started by analyzing the project's requirements and breaking them down into manageable tasks. I then prioritized the tasks based on their importance and urgency and allocated resources (staff, time, and budget) according. I also monitored and tracked progress regularly to identify any delays and take corrective action.
Result: We were able to complete the project on time and accomplish the objectives. My effective resource management also delivered cost savings, and I received recognition from my supervisors.
7. Situation: I had to explain technical concepts to a non-technical stakeholder during a project review.
Task: My task was to ensure the stakeholder could understand the technical aspects of the project without oversimplifying or using jargon that would confuse them.
Action: I started by doing some research to understand the stakeholder's background and level of technical knowledge. I also created a visual representation (using diagrams or infographics) to illustrate the technical concepts. I additionally used analogies and examples that were easily relatable and that could help explain the concepts in a way the stakeholder could grasp.
Result: The stakeholder was able to comprehend the technical aspects of the project and gave positive feedback on my explanation, leading to successful project delivery and continued partnerships.
8. Situation: We were working on a project that had no clear requirements and left much room for interpretation.
Task: My task was to make decisions based on the incomplete information and collaborate with colleagues to develop creative solutions.
Action: I started by reviewing the available information to identify the project's main objectives and understand the target audience needs. I also engaged other colleagues to discuss possible approaches and the project's broader implications. We also created a culture of experimentation that allowed us to take risks and learn from mistakes.
Result: Our collaborative and innovative approach helped us to deliver a remarkable output even without clear requirements, and we received a lot of positive feedback from the stakeholders and the industry.
9. Situation: We were working on a new concept for a program that required new implementation.
Task: Our task was to innovate and implement a solution that was not previously tried.
Action: We started by brainstorming different ideas on how to implement the solution. We then researched available technologies, documented approaches and discussed with stakeholders to get their opinions. We also tested the approaches in prototypes and presented to stakeholders for approval.
Result: Our innovation led to a unique and effective solution that provided a significant impact on the industry. We also acquired patents and received awards and recognition for our work.
10. Situation: I led a team in a project that resulted in fantastic outcomes.
Task: My task was to work collaboratively with the team and deliver meaningful results.
Action: I established a strong relationship with the team by fostering an environment of open communication, mutual respect, and collaboration. We also developed realistic and achievable goals, a timeline, and with adequate resources and tools. We supported each other with constructive feedback and positive criticisms throughout the project.
Result: The work we have done was exceptional, and we achieved great outcomes, and the stakeholders were all satisfied with the results. I was commended for my strong leadership skills in managing the team effectively.
In this round, the interviewer will assess your skills in system design and architecture, and you will be required to build a solution for a given scenario. Be sure to explain both high-level and low-level details of your design.
1. For designing an e-commerce website, we will consider components like a web server, application server, database server, payment gateway, and load balancer. To ensure scalability, we will use horizontal scaling, which involves adding more servers to distribute the load and prevent any single point of failure. To ensure availability, we will use auto-scaling, which dynamically adjusts the resources based on traffic patterns to ensure the website is available whenever users access it. Finally, to ensure security, we will use SSL encryption and firewalls to protect user data and prevent attacks from hackers.
2. To recommend books to users, we will use collaborative filtering, which involves analyzing user data to find patterns and recommending similar books to users with similar preferences. For high-level architecture, we will create a recommendation service that receives data from a book database and user preferences and updates the database with the recommendations. For low-level architecture, we will use a NoSQL database like MongoDB to store user data and use machine learning algorithms like KNN to generate book recommendations.
3. To build a distributed system for processing large amounts of data, we will use a distributed file system with multiple servers for storing and processing data. To ensure fault tolerance, we will use replication, which involves keeping multiple copies of the data on different servers to prevent loss in case of hardware failures. For minimizing latency, we will use data partitioning, which involves dividing the data