Hello there,
For those who don't know me, do check out my website and my other blogs.
I recently accepted Microsoft's offer for Software Engineer...
For further actions, you may consider blocking this person and/or reporting abuse
Congrats sir,
I wanted to know if they will let you solve the DS algo problems in javascript or its benificial to go for python,java or c++
And which language did you choose to practice ds-algo problems on leecode?
I am a begineer and only know javascript so should I continue to practice ds in javascript or do I have to learn python/java for that.
Thank you for your time!
As the role was for UI Engineer, it is best that you use javascript to code! I coded in javascript and practised in leetcode in Js
Thank you so much sir! and again congratulation on your new job 😊
Thanks man 🤓
Are there any restrictions in machine coding round? Like you have to use pure JavaScript only etc. Or do they allow using any FE frameworks also?
Yes, 😅Vanilla JavaScript and No Css Frameworks allowed!!!
Do you need to create backend as well or you will get json response for mail/chat application?
You don't have to create backend! The package you receive will have a dummy function which keeps giving you data in a regular interval, all you need to do it listen to it.
Basically you need to call the api, create skeleton and add filters on Json , right?
On those lines along with the constraints added in the requirements
Thanks 😊
Thanks. Great article!!
As per the "Industry standards" 😛
Hi Dhilip, could you please share resources from where we can prepare for the same. I got rejected by Flipkart and the rounds were same. 1st Machine Coding, 2nd- Problem Solving/DS, 3rd- UI Tech, 4th- Product Round, 5th- Final Round.
Apart from practising on the leetcode, please share other resource from which the UI Developers should prepare for Machine Coding, UI Tech rounds. It will be a great help.
Thanks
This annoyed me so much I signed up to dev.to
Hey Benjamin,
I am not sure why you're annoyed about the post😅😅 but the implementation didn't actually call for handling all the edge cases, they were looking into how I was able to think through if I were to design its polyfill.
To be clear - I am not annoyed about your post but about your experience. It just sounds way too hard for an hour interview :]
`
function findRepeatingIndex(string) {
const map = {};
for (let i = 0; i < string.length; i++) {
const char = string[i];
if (!map[char]) {
map[char] = { startingIndex: i };
} else {
map[char].endIndex = i;
}
}
const result = [];
for (const [char, charIdx] of Object.entries(map)) {
const { startingIndex, endIndex } = charIdx;
if (endIndex > 0) {
result.push([startingIndex, endIndex]);
}
}
return result;
}
console.log(findRepeatingIndex("hellooooloo"));
const dictionary = {
hellolo: true,
};
function canBeFormed(input) {
if (input in dictionary) {
return true;
}
for (let i = 0; i < input.length; i++) {
if (input[i] === input[i + 1]) {
const newInput = input.slice(0, i) + input.slice(i + 1);
if (canBeFormed(newInput)) {
return true;
}
}
}
return false;
}
const input = "hellooooloo";
const op = canBeFormed(input);
console.log(op); // true
const dict = {
hi: true,
hello: true,
world: true,
};
function spaceSeparator(input) {
if (input === "") {
return "";
}
for (let i = 1; i <= input.length; i++) {
const word = input.slice(0, i);
if (word in dict) {
const rest = spaceSeparator(input.slice(i));
if (rest !== null) {
return word + " " + rest;
}
}
}
return null;
}
const str = spaceSeparator("helloworld"); // "hello world"
const str2 = spaceSeparator("helloworldhi"); // "hello world hi"
const str3 = spaceSeparator("helloworldh"); // ""
console.log(str);
console.log(str2);
console.log(str3);
const word = "example";
const threshold = 1000000000;
const windowSize = 3600; // 1 hour in seconds
const counts = new Array(windowSize).fill(0);
let totalCount = 0;
function processTweet(tweet) {
if (tweet.includes(word)) {
const timestamp = Math.floor(Date.now() / 1000); // current timestamp in seconds
const index = timestamp % windowSize; // index in the counts array
totalCount -= counts[index]; // subtract the count at the index from the total count
counts[index] = tweet.split(word).length - 1; // count the number of occurrences of the word in the tweet
totalCount += counts[index]; // add the new count to the total count
if (totalCount >= threshold) {
console.log(
Alert: ${word} repeated ${totalCount} times in the last hour
);
}
}
}
// Example usage:
processTweet("This is an example tweet");
processTweet("Another example tweet with the word example");
class LRUCache {
constructor(maxSize, expiryTime) {
this.maxSize = maxSize;
this.expiryTime = expiryTime;
this.cache = new Map();
this.head = null;
this.tail = null;
}
async get(key, fn) {
const entry = this.cache.get(key);
if (entry) {
if (Date.now() < entry.expiryTime) {
this.moveToHead(entry);
return entry.value;
} else {
this.removeEntry(entry);
}
}
const value = await fn();
const newEntry = { key, value, expiryTime: Date.now() + this.expiryTime };
this.cache.set(key, newEntry);
this.addToHead(newEntry);
if (this.cache.size > this.maxSize) {
const removedEntry = this.removeTail();
console.log(
Cache burst: removed entry with key ${removedEntry.key}
);}
return value;
}
addToHead(entry) {
entry.prev = null;
entry.next = this.head;
if (this.head) {
this.head.prev = entry;
} else {
this.tail = entry;
}
this.head = entry;
}
moveToHead(entry) {
if (entry === this.head) {
return;
}
if (entry === this.tail) {
this.tail = entry.prev;
this.tail.next = null;
} else {
entry.prev.next = entry.next;
entry.next.prev = entry.prev;
}
this.addToHead(entry);
}
removeEntry(entry) {
if (entry === this.head) {
this.head = entry.next;
} else if (entry === this.tail) {
this.tail = entry.prev;
this.tail.next = null;
} else {
entry.prev.next = entry.next;
entry.next.prev = entry.prev;
}
this.cache.delete(entry.key);
}
removeTail() {
const entry = this.tail;
this.tail = entry.prev;
if (this.tail) {
this.tail.next = null;
} else {
this.head = null;
}
this.cache.delete(entry.key);
return entry;
}
}
// Example usage:
const cache = new LRUCache(3, 10000); // max size of 3 entries, expiry time of 10 seconds
async function fetchData(key) {
console.log(
Fetching data for key ${key}
);return new Promise((resolve) =>
setTimeout(() => resolve(
Data for key ${key}
), 1000));
}
console.log(await cache.get("key1", () => fetchData("key1")));
console.log(await cache.get("key2", () => fetchData("key2")));
console.log(await cache.get("key3", () => fetchData("key3")));
console.log(await cache.get("key1", () => fetchData("key1"))); // should hit cache
console.log(await cache.get("key4", () => fetchData("key4"))); // should trigger cache burst
console.log(await cache.get("key2", () => fetchData("key2"))); // should hit cache
`
Answers for above quetions . Hope it helps someone
Were you allowed to google stuff?
In round 1 yes! But not in the other rounds!
Could you please tell me about what to pursue as formal education because I am in 11th and I too want to pursue web development in the future. BTW I liked your article and experience :) !!
Pursuing BE in Computer science and engineering gave me a better understanding about computer software, its internals and mainly data structures & algo. If you want to pursue formal education + web you could do the same! However there are people who are not even attending colleges and getting enough knowledge abt web through bootcamps and their own projects and are getting placed in MNCs.
Thank you Dhilip!! I was in a big confusion about this but finally you helped me!! :)
Thanks very much for sharing the questions . Just a doubt , Is round 4 Problem 2 a backtracking problem ? Can't we solve it with 2 loops ( one iterating each element of dictionary until a match is found and the inner one for comparing string and dictionary element ) and use 2 pointer here ? Are there any optimised solutions ?
All the best. You got this!!!!
Congratulations on your offer :)
Can you please tell how did you write polyfill for a promise? I tried implementing it but not able to succeed?
Sure I'll check if I have a copy and ll share it across
Congrats on the offer. How many years does Software Engineer 2 requires? Is it 5 year?
I only have 2 years of industrial experience and all the questions are pretty overwhelming.
True I just have an interview coming and I'm pretty scared by looking at this post.
Sample Promise polyfill implementation
gist.github.com/vijayprwyd/b408541...
Brilliant article 🔥. One query though. How much of the UI framework stuff they asked you about ?
Can you provide any link or reference for the of the questions in round 2?
Promise based memoization with a given cache size behaving
as an LRU cache with an expiry time and auto cache burst
Congratulations! and Thanks for writing your experience.
My profile got shortlisted for a role,
I started to panic,
found your post, and the panic vanished.
How did you approach this one ?
Consider you are getting millions of tweets per second,
you have to alert whenever a particular word is repeated
billion times in any 1 hour time frame (moving window)
This is extremely motivating, keep up the good work. Which resource would you suggest for complex data structures and algorithms?