Introduction
Hiver, a dynamic product-based company headquartered in Bangalore, has garnered a reputation for enhancing operational efficiency through advanced features integrated with Gmail workspace. My interaction with Hiver’s interview process left me with a lasting impression as I pursued the SDE-2 position. This blog recounts my journey through their selection process, highlighting the stages, challenges, and overall experience.
Initiating the Connection:
My journey with Hiver began when I connected with their HR team through LinkedIn’s Easy Apply feature. The seamless initial interaction set the tone for what was to come.
The Interview Phases:
1. Introductory Call
The first step was an introductory call with an HR representative. Spanning 20-30 minutes, the call encompassed discussions about the interview process, the company’s ethos, the role’s expectations, and my salary considerations. This preliminary chat provided valuable insights into the forthcoming journey.
2. Coding Round
The coding assessment was a pivotal challenge in the interview process. The round focused on DSA and algorithmic problem-solving. Within a one-hour timeframe, I encountered three thought-provoking questions:
- https://www.geeksforgeeks.org/find-second-largest-element-array/
- https://www.geeksforgeeks.org/return-maximum-occurring-character-in-the-input-string/
- Polyfill to flatten nested array of arrays
The third question, intriguingly, necessitated a switch from my customary Java to JavaScript to effectively test my code. This transition brought an additional layer of complexity to the coding round.
```
// Flatenning array
var question = [
[[[0, [1, 2]]]],
1,
2,
3,
[3, 4, 5],
[
[1, 2],
[5, 6, 7]
]
];
function recurse(question) {
if (Array.isArray(question)) {
for (let i = 0; i < question.length; i++) {
recurse(question[i]);
}
} else {
ans.push(question);
}
}
recurse(question);
console.log(ans);
```
3. Low-Level Design (LLD) Round
The LLD round delved into the architectural aspects of software development. My task was to design a Cache Client capable of caching frequent queries. What made this round distinct was the open-ended nature of the challenge. My interviewer anticipated my questions and cross-examination. After a collaborative exploration of the problem and various approaches, I eventually crafted a robust solution. The LLD round highlighted the significance of inquisitiveness and thorough architectural understanding.
class Constants {
USER_CACHE_KEY_PREFFIX = "user_v1_"
}
class UserClient {
private User getUser(filterType ENUM, String value) {
// API call
}
public User getCachedUser(filterType ENUM, String value, boolean isCritical = false) {
return cacheClient.getData(getCacheKey, getUser, isCritical)
}
private getCacheKey(ENUM filterType, String value) {
return Constants.USER_CACHE_KEY_PREFFIX+filterType+value
}
}
@Singleton
class CacheClient {
private redisConnection;
public CacheClient() {
redisConnection = new RedisConnection();
}
public T getData(String key, callback, boolean isCritical) {
if (isCritical == true) {
return setData(String key, callback)
}
T data = redisConnection.getData(key);
if (data == null) {
return setData(String key, callback)
}
return data;
}
public void setData(String key, StreamBytes data) {
boolean result = setData(key, data);
return data
}
public T setData(String key, callback) {
T data = callback();
redisConnection.setData(key, data);
return data;
}
}
4. Hiring Manager Round
The Hiring Manager Round represented a comprehensive examination of my professional journey. This phase involved detailed discussions about my current role and responsibilities, situational questions to discern my problem-solving approach, and an exploration of my past experiences. Among the technical queries, a notable question centered on SOLID principles. However, the majority of the conversation revolved around my diverse projects and encounters, offering a holistic view of my capabilities.
5. HR Round
The concluding round was a candid conversation with the HR team. We delved into career choices, my prior affiliations with organizations, and future aspirations. This interaction helped me gain a clearer perspective on Hiver’s company culture and my potential fit within it.
Conclusion
The interview journey at Hiver proved to be an engaging and multifaceted experience. Each phase brought a unique challenge and an opportunity to showcase skills and expertise. From coding prowess to architectural insights and personal experiences, the interview process encapsulated the multifarious facets of being a software developer. My interaction with Hiver left me with a sense of accomplishment and a deeper understanding of the company’s values and expectations.