Interview - Refrens Internet Pvt. Ltd.
Summary
I interviewed for a Software Developer Intern position at Refrens Internet Pvt. Ltd. The hiring process involved a technical screening with an assignment, followed by two technical interviews. I successfully cleared the first technical round but was not selected after the second.
Full Experience
Assignment
The hiring process for the Software Developer Intern role at Refrens Internet Pvt. Ltd. started with a technical screening that included an assignment. For this, I had to develop a React application using the Rick and Morty API. After submitting my solution, I received a call from HR to schedule my first technical interview.
Technical Interview 1 (Positive Experience, Medium Difficulty)
This round began with my introduction, where I spoke about my projects, programming languages, and current tech stacks. The interview then moved into coding and conceptual questions:
- Coding Question (DSA): I was asked to implement the classic FizzBuzz problem.
- Frontend Question: I had a question related to implementing a
useTogglehook in React, similar to what's found on Learnersbucket. - JavaScript Concepts: Questions covered the Document Object Model (DOM) and Browser Object Model (BOM), and how to modify the DOM. I was also asked to explain Promises, demonstrate how to implement a sleep function using them, and discuss the purpose and benefits of using
asyncandawait. - React & JS Differences: We discussed the fundamental differences between React.js and JavaScript, whether React.js is considered a framework or a library, and the general distinction between frameworks and libraries.
- OOP & JS: I was asked about the concepts of 'states' and 'classes', and whether JavaScript is considered an Object-Oriented Programming (OOP) language.
- Basic JS: A basic question on how to find the length of an array in JavaScript was also posed.
The interviewer also elaborated on the perks of using JavaScript, using an example that involved the var keyword.
Behavioral Questions (Technical Interview 1)
Toward the end of the first round, I was asked a couple of behavioral questions:
- How I would manage remote working effectively compared to an office environment.
- My approach if there were two different ways (mine and a colleague's) to solve a task within a team.
I successfully qualified for the second technical round after this interview, which was a positive experience for me.
Technical Interview 2 (Average Experience, Medium Difficulty)
This round started with a brief discussion about my performance in the previous round. The focus then shifted to more advanced JavaScript concepts and object-oriented programming:
- Coding Question (OOP): I was given a problem involving finding the differences between two objects based on their keys and values. I also had to demonstrate how changing a key-value in one object (a copy) would not affect the original, illustrating the concept of a deep copy.
- JavaScript Concepts: The interviewer again asked me to explain Promises, higher-order functions, and the differences between shallow and deep copy. Concepts like pass by reference vs. pass by value,
JSON.stringify(), and thereduceandassignfunctions were also discussed.
The interviewer suggested I review MDN JavaScript documentation for better conceptual clarity. Unfortunately, I was not selected after this round, making the overall experience average.
Interview Questions (19)
FizzBuzz Sequence
Write a program that prints numbers from 1 to n. For multiples of three, print 'Fizz' instead of the number. For multiples of five, print 'Buzz'. For numbers which are multiples of both three and five, print 'FizzBuzz'.
Implement useToggle React Hook
Implement a custom useToggle React hook. This hook should provide a way to toggle a boolean state value.
DOM and BOM Concepts
Explain the Document Object Model (DOM) and Browser Object Model (BOM). Describe how to modify the DOM.
Promises, Async/Await, and Sleep Function
Explain JavaScript Promises. How can a sleep function be implemented using Promises? Discuss the purpose and usage of async and await keywords in conjunction with Promises.
React.js vs JavaScript
Explain the fundamental differences between React.js and JavaScript.
React.js: Framework or Library?
Is React.js considered a framework or a library? Justify your answer.
Framework vs. Library
Explain the distinction between a software framework and a software library.
States and Classes (React/JS)
Explain the concepts of 'states' and 'classes' in the context of JavaScript, potentially relating to React.
JavaScript and OOP
Is JavaScript considered an Object-Oriented Programming (OOP) language? Explain why or why not.
Array Length in JavaScript
Managing Remote Work
Describe your approach to managing remote work effectively compared to working from an office.
Conflict Resolution in Team Task
If there are two different approaches (yours and a colleague's) to solve a task, how would you handle the situation and resolve the difference?
Object Difference and Deep Copy
Given two JavaScript objects, find and print their differences based on keys and values. Additionally, demonstrate how changing a key-value in one object (a copy) does not affect the original object, implying a deep copy scenario.
Explain Promise
Explain JavaScript Promises.
Higher-Order Functions
Explain what Higher-Order Functions are in JavaScript.
Shallow Copy vs. Deep Copy
Explain the difference between shallow copy and deep copy in programming, particularly in JavaScript context.
Pass by Reference vs. Pass by Value
Explain the concepts of pass by reference and pass by value in programming.
JSON.stringify()
Explain the purpose and usage of JSON.stringify() in JavaScript.
Array.prototype.reduce() and Object.assign()
Explain the reduce method for arrays and Object.assign() function in JavaScript.