Avalara | SDE1 | 2024 | Interview Experience
SDE IAvalara | SDE1 | 2024 | Interview Experience
SDE IAvalara | SSE (IC-3) | Remote | June 2024 [Offer]
senior software engineerAvalara | SSE (IC-3) | Remote | July 2024 [Offer]
SSE (IC-3)Avalara | SSE | Pune | April 2024 [Offer]
senior software engineerSummary
I successfully navigated a four-round interview process at Avalara for an SDE1 role, culminating in an offer for a 6-month internship with a performance-based conversion to a full-time position.
Full Experience
I started my interview journey at Avalara as a fresher from a Tier-2 college. The hiring process was structured into four distinct rounds.
Round 1: Aptitude Test
This round consisted of 40 multiple-choice questions to be completed within 20 minutes. The questions covered areas like pattern matching and identifying missing numbers in a series. Out of approximately 220 students who appeared, about 160-170 cleared this stage. I focused on maintaining both accuracy and speed to pass this round.
Round 2: Online Assessment
The second round was an online assessment hosted on HackerRank, featuring three coding questions. Each student received a unique set of problems. For the first question, I was given an array and asked to return a permutation that maximizes the sum of adjacent differences while also being lexicographically smallest if multiple solutions exist. My approach involved sorting the array and then swapping the first and last elements. The second question was a binary search on answer type problem, similar to LeetCode problems like 'Minimum Time to Complete Trips' or 'Koko Eating Bananas', though the specific problem statement isn't provided here. The third question was a hard graph problem, where I needed to find the minimum cost for a cyclic trip starting and ending at city 0, visiting all particular cities. I managed to pass all test cases for the first two questions but only 3 out of 15 for the last one. My takeaway from this round was that LeetCode questions are sufficient for preparing for coding rounds.
Round 3: Technical Interview
In this round, I was first asked to introduce myself. Following that, the interviewer posed the 'Design LRU Cache' problem. I was able to solve it, explaining my thought process throughout the solution, even though it took me a considerable amount of time. The interviewer seemed satisfied with my approach. Subsequently, we delved into theoretical concepts, including ACID properties, the Pillars of OOPS, and some basic Computer Network questions. I then explained my project in detail and was asked to make some minor CSS changes on the spot. Since my project utilized browser storage, I was questioned about it, along with JavaScript concepts such as hoisting, closures, prototyping, and the differences between let and var, as well as global and block scope. While I couldn't answer every question perfectly, the interviewer was understanding.
Round 4: Hiring Managerial Round
This was the final round. It began with my introduction, followed by a casual chat about the city's weather and my willingness to relocate to Pune, which I confirmed. The manager then asked me to solve the 'Valid Anagram' problem, and my solution appeared to satisfy him. We then discussed threads and multithreading, followed by a general conversation about the company's hierarchy and various senior positions. Finally, I was given the opportunity to ask any questions I had for him. I felt quite optimistic after this round. The results were announced the next morning, and I was among the five students who received an offer.
Interview Questions (4)
Given an array, for example [a, b, c, d, e, f], you need to return a permutation of the array where the sum of absolute differences between adjacent elements, specifically (a-b) + (b-c) + ... + (e-f), is maximized. If there are multiple such permutations that yield the maximum sum, return the lexicographically smallest one.
This was a graph problem where I needed to visit a set of particular cities and return the minimum cost for visiting all of them in one cyclic trip. The trip must start from city 0 and return back to city 0.
Design and implement a Least Recently Used (LRU) cache. The cache should support the following operations efficiently: get(key) which retrieves the value of the key if the key exists, otherwise returns -1. put(key, value) which inserts or updates the value if the key is not already present. When the cache reaches its capacity, it should invalidate the least recently used item before inserting a new item.
Given two strings, s and t, write a function to determine if t is an anagram of s. An anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Preparation Tips
My preparation primarily involved solving problems on LeetCode, which I found to be highly effective for the coding rounds. Consistent practice was key to clearing the online assessment.
Summary
As a fresher from a Tier-2 college, I successfully navigated a four-round interview process at Avalara for an SDE1 role, culminating in a performance-based offer that included a 6-month stipend and potential full-time conversion.
Full Experience
I recently interviewed at Avalara for an SDE1 position as a fresher. The hiring process was structured into four distinct rounds.
Round 1: Aptitude Test
This round consisted of 40 MCQs, which I had to complete in 20 minutes. The questions covered areas like pattern matching and missing numbers in series. Approximately 220 students participated, and 160-170 cleared this round. The key here was to maintain both accuracy and speed.
Round 2: Online Assessment (HackerRank)
This assessment featured 3 coding questions, with each student receiving a different set. I was able to pass all test cases for the first two questions, but only 3 out of 15 for the third.
- Question 1: I was given an array, for example
[a,b,c,d,e,f], and needed to return a permutation where(a-b) + (b-c) + ... + (e-f)is maximized. If multiple permutations yielded the maximum sum, I had to return the lexicographically smallest one. My approach involved sorting the array and then swapping the first and last elements. - Question 2: This problem was similar to binary search on answer type questions. I recalled problems like Minimum Time to Complete Trips (Leetcode - 2187) and Koko Eating Bananas (Leetcode - 875) being good examples.
- Question 3: This was a hard graph problem. The objective was to visit a specific set of cities and calculate the minimum cost for a cyclic trip, starting from city 0 and returning to it after visiting all required cities.
Round 3: Technical Interview
After my self-introduction, the interviewer asked me to design an LRU Cache. I managed to solve it, though it took me a considerable amount of time. I made sure to communicate and explain my thought process throughout. He was satisfied with my approach. Following this, he inquired about ACID properties, the Pillars of OOPS, and some fundamental Computer Network questions. I then had to explain my project and make some changes to CSS properties. Since my project used browser storage, he asked questions related to it. I couldn't answer every question, but he seemed understanding. Finally, he delved into JavaScript concepts like hoisting, closures, prototyping, let vs var, and global and block scope.
Round 4: Hiring Managerial Round
This round also began with my introduction. The manager asked about the weather in the city and my willingness to relocate to Pune, which I confirmed. He then presented the "Valid Anagram" problem, and he appeared satisfied with my solution. We then discussed threads and multithreading, followed by a general conversation about the company's hierarchy and various senior positions. He then opened the floor for any questions I had for him. I felt optimistic after this round, and the results were announced the next morning. Out of 5 selected students, I was one of them.
Interview Questions (11)
You are given an array (e.g., [a,b,c,d,e,f]). You need to return a permutation of this array such that the sum (a-b) + (b-c) + ... + (e-f) is maximized. If there are multiple such permutations, return the lexicographically smallest one.
This question was similar to problems that can be solved using a binary search on the answer technique. Similar LeetCode problems include Minimum Time to Complete Trips (Leetcode - 2187) and Koko Eating Bananas (Leetcode - 875).
This was a hard graph problem. The objective was to visit a specific set of cities and calculate the minimum cost for a cyclic trip that starts from city 0 and returns to it after visiting all the required cities.
I was asked to design an LRU Cache.
The interviewer asked me to explain the ACID properties of database transactions.
I was asked to explain the fundamental Pillars of Object-Oriented Programming (OOPS).
The interviewer asked some basic questions related to Computer Networks.
I was questioned about different browser storage mechanisms, likely due to their usage in my project.
I faced questions on various JavaScript core concepts, including hoisting, closures, prototyping, the differences between let and var, and global vs. block scope.
The hiring manager asked me to solve the 'Valid Anagram' problem.
The discussion included questions about the concepts of threads and multithreading.
Preparation Tips
My main takeaway was that consistent practice with LeetCode questions is sufficient for excelling in coding rounds. Additionally, I focused on clearly communicating my thought process and approach during problem-solving, which proved crucial for technical discussions.
Summary
I secured an offer for a Senior Software Engineer (IC-3) role at Avalara after a remote interview process in June 2024. The hiring drive included an online assessment, a technical round with an API-based coding challenge and system design discussions, followed by a behavioral round with the Hiring Manager.
Full Experience
I recently interviewed with Avalara for a Senior Software Engineer (IC-3) position in Bengaluru, India. With 3 years of experience as a Senior Software Engineer at a Fintech startup, I hold a B.Tech degree from a Tier-3 college. The entire interview process was part of a hiring drive organized in Bangalore and I received an offer within 3-4 days of the drive itself.
Round 1 (Online Assessment) - 30 minutes
This round consisted of aptitude and reasoning questions. It was a standard online assessment format.
Round 2 (Technical) - 1 hour 30 minutes
This was an in-depth technical round. I was given a Hackerrank API-based question where I had to call an API and perform various operations on the response data. I successfully passed all the test cases for this problem. Beyond the coding challenge, we delved into several conceptual topics, including:
- Distributed Systems concepts like CAP theorem and scaling strategies.
- DBMS questions covering indexing and SQL injection.
- Differences between Authentication and Authorization, along with the working mechanism of JWT tokens.
- Basic Springboot questions.
- Kafka architecture and consumer groups.
- Docker basics.
- Various AWS services.
- Unit Testing principles.
It's worth noting that the questions during this round were largely based on the skills and technologies mentioned in my resume.
Round 3 (Hiring Manager) - 30 minutes
The final round was with the Hiring Manager and primarily focused on behavioral aspects. Key questions included:
- "Why do you want to change your current organization?"
- "What do you know about Avalara?"
- Other general behavioral questions.
I received confirmation of my selection during the drive itself and obtained the official offer letter within the next 3-4 days. This was a positive and efficient interview experience.
Interview Questions (3)
I was given an API-based problem on Hackerrank where I needed to call an API and perform specific operations on the response data.
I was asked to explain my reasons for wanting to leave my current organization.
I was asked about my understanding and knowledge of Avalara as a company.
Summary
I successfully secured an offer for the SSE (IC-3) role at Avalara after participating in a hiring drive in Bangalore, which involved an Online Assessment, a comprehensive technical round, and a final Hiring Manager interview.
Full Experience
I recently interviewed for the SSE (IC-3) position at Avalara. My current experience spans 3 years in a Fintech Startup. The interview process consisted of three rounds, all conducted during a hiring drive organized in Bangalore.
Round 1 (Online Assessment)
This round lasted 30 minutes and primarily focused on aptitude questions.
Round 2 (Technical)
This technical round was approximately 1 hour and 30 minutes. It included a question on the Hackerrank portal where I had to call an API and perform operations on the response data. There were also various questions related to Java and SQL. For the SQL part, I was given some tables and asked to write queries. Specifically, one question required a LEFT JOIN, and for another, I mentioned that window functions like RANK() could be used to solve it. Additionally, I was questioned on Docker and Kubernetes concepts. I noted that the questions were generally based on the skills mentioned in my resume.
Round 3 (Hiring Manager)
The final round was with the Hiring Manager, lasting about 1 hour. This round primarily focused on behavioral questions. We discussed a technical problem I had solved, my motivations for wanting to change my current organization, and my understanding of Avalara as a company.
Verdict: Offer
I received confirmation of my selection during the drive itself and got the official offer letter within the next 3-4 days. Compensation details can be found here.
Interview Questions (3)
Given a set of tables, write SQL queries to solve specific problems. One problem required the use of a LEFT JOIN, and another was suitable for solving with window functions like RANK().
Explain your motivations and reasons for seeking to change your current organization.
Demonstrate your understanding of Avalara as a company, its mission, products, or services.
Summary
I recently interviewed for a Senior Software Engineer position at Avalara in Pune and successfully received an offer. The interview process comprised a hiring manager discussion focusing on system design and behavioral aspects, followed by an in-depth technical round covering project architecture, object-oriented design, data structures, and Java/SpringBoot specifics.
Full Experience
My interview process for the Senior Software Engineer role at Avalara consisted of two main rounds.
Hiring Manager Round (1 hour)
This round began with standard behavioral questions and a detailed walkthrough of my resume. We delved into various architectural decisions, discussing the trade-offs between microservices and monolithic architectures. I was also asked about database design principles for microservices, specifically when to choose SQL versus NoSQL databases. The interviewer also questioned me on SOLID design principles, asking how I had applied them in my past projects, and challenged me to design a singleton class.
Tech Round (1.5 hours)
The technical round was quite comprehensive. It started with a deep dive into my projects, where I discussed topics like SQL sharding and indexing trade-offs. We then moved onto Kafka, covering concepts like offset IDs, scaling Kafka in an ECS environment, and a comparison between SQS and Kafka. A practical scenario was presented: "How would you debug a production bug?" for which I had to provide a detailed approach.
Next, we revisited SOLID principles with a specific problem: Given concrete classes Savings and Current Account extending an abstract Account class (with abstract withdraw and invest methods), what changes would be required if a new Fixed Deposit class only supports invest but not withdraw? I had to identify the relevant SOLID principle and also confirm if multiple inheritance is possible in Java.
For Data Structures, I was asked to discuss different ways to find a loop in a linked list and to implement the "Integer to Roman" conversion for numbers from 1 to 1000.
The discussion also covered SpringBoot, focusing on annotations, the difference between constructor vs. annotation autowiring, and Junit tests. Finally, in Java, we talked about core OOPS concepts, the distinction between interfaces and abstract classes, and a scenario to identify method overloading vs. overriding.
I was ultimately selected for the position.
Interview Questions (21)
Discuss the advantages and disadvantages, and appropriate use cases for microservices architecture compared to a monolithic architecture.
Explain considerations and best practices for designing databases specifically for microservices architectures, including data ownership and consistency.
Compare SQL and NoSQL databases in the context of microservices, outlining scenarios where each would be a more suitable choice.
Design a thread-safe singleton class, demonstrating different implementation approaches and discussing their pros and cons.
Explain the concept of SQL sharding, its benefits, challenges, and different strategies for implementation.
Discuss the trade-offs associated with using database indexes, including their impact on read/write performance and storage.
Explain what an "offset ID" signifies in Apache Kafka, its role in consumer groups, and how it is managed.
Describe strategies and considerations for scaling a Kafka cluster when deployed within an Amazon ECS (Elastic Container Service) environment.
Provide a comparative analysis of Amazon SQS and Apache Kafka, highlighting their architectural differences, use cases, and when to choose one over the other.
Outline a detailed, systematic approach for identifying, diagnosing, and resolving a bug that has occurred in a production environment.
Given an abstract Account class with withdraw and invest methods, extended by Savings and Current Account. If a new Fixed Deposit class only supports invest, describe the necessary changes to the class hierarchy to adhere to SOLID principles.
Identify which specific SOLID principle is primarily addressed or violated by the described account class design scenario, and how to rectify it.
Discuss whether multiple inheritance is supported in Java for classes, and if not, explain the mechanisms Java provides to achieve similar functionality (e.g., interfaces).
Explain and compare different algorithms to detect the presence of a cycle (loop) in a singly linked list and potentially find the starting node of the loop.
Implement a function that converts an integer (within the range of 1 to 1000, inclusive) to its Roman numeral representation.
Discuss common and important annotations used in SpringBoot applications, explaining their purpose and how they facilitate development.
Compare and contrast constructor-based dependency injection with annotation-based autowiring (@Autowired, @Qualifier) in the Spring framework, discussing their advantages and disadvantages.
Explain how to write effective unit tests using JUnit in a SpringBoot application, covering aspects like test setup, assertions, and mocking.
Discuss the fundamental concepts of Object-Oriented Programming (OOP), including encapsulation, inheritance, polymorphism, and abstraction, with examples.
Explain the key differences between interfaces and abstract classes in Java, their use cases, and when to choose one over the other.
Given examples of methods with similar names or signatures, identify whether they represent method overloading or method overriding, and explain the rules governing each.