The first interview is a great experience overall. I have been asking clarifying questions and the interviewer always gives me exact answers. Following his instructions, I have completed two versions of Rate Limiter. The second interview is disastrous. The interviewer can barely speak a complete sentence when I ask him to clarify things. I double check triple checked with him, and all the questions end up being answered by simply a “yes” or a “no”. The question is trivial, ranking letters by multiple votes, a simple sorting algorithm. I asked for a tie-breaking strategy, he said no need to consider that. I then asked how do we calculate the points, if that starts with the vote arrays’ length in descending order. He said yes. Yet after I complete the code, he said no, the score should always start at 3, no matter how long the vote array is, and made me write a hard code magic number 3 in the code. This is totally a code smell isn’t it? And then he said, let’s now consider breaking ties, and give me two strategies. But these two strategies only describe the first place. I asked him, what about the rest of the letters? He said I don’t need to consider that case. I did what he requested, and he ask why I am outputting an array. Sorting an array by ranks is supposed to return an array, isn’t it? He then said, no, I only want the first place. After I completed the code as he requested again. He asks me if I can optimize it. I told him about if he only need the first place, we don’t need to sort. Just have one variable to keep track of the first place, the complexity will be O(n) compare to sorting which is O(nlogn). He said, no, I want you to sort it. Finally, he ask me to do some code change from letters.sort(comparatorFn) to Object.entries(ranks).sort(comparatorFn).map(([letter, rank]) => letter) which makes no sense at all. It is neither efficient nor clean.