Bloomberg-Palantir | Software Engineering Internship Interview Experience [Offer]

Hello everyone,

I would like to share my interview experiences throughout this year and give back to the community.

About me:

Currently doing my combined B.Sc-M.Sc. I am currently in my senior year and my main area of interest is theoretical Computer Science focusing on Algorithms. I wanted to get some industry experience through an internship before I finish school to consider whether I am going forward with a PhD or straight to the industry. I started applying around September-October and I was done with the process at the start of December.

Bloomberg(Offer):

I applied for the software engineering internship position at the London office. They where remarkably quick at getting back to me(actually Bloomberg really impressed me with how fast they were at giving me feedback throughout the process). It probably helped that I had previously visited the Bloomberg London office due to the Codecon finals(It's a competition that Bloomberg does sometimes to attract university students).

I scheduled my phone interview ASAP. It consisted of quickly introducing myself and what I do and we jumped right into the coding part. It consisted of two problems and although I can't disclose the exact questions they were both very very classic problems that pretty much anyone who is preparing for interviews has already seen. It was an easy one about string manipulations and frequency counting and another one regarding binary trees.

I was fairly confident that I did pretty well. Some of the things that I picked up is that even though the questions were fairly easy they did care about me explaining my thought process as I coded and also they were cautious about good practices. I was careful about my naming conventions, argument passing and I was even asked a kind of 'trick' question about 'How would I handle a case where there is no answer'. I gave 2 answers to that but I guess they were expecting me to say that I would raise an exception. They reached out to me the very next day(I told you they were fast) asking me to schedule an on-site interview at the London office.

Before I scheduled the interview I let them know that I also have an on-site with another company(Palantir) those days and whether we could combine it somehow to save me a trip. They were positive so we proceeded this way. My schedule was kinda packed, I had my Bloomberg interview right after that the Palantir interview and the very next day early in the morning I was leaving UK(this will become relevant in a moment).

When I arrived at the on-site interview we had some time to get to know the other interviewees and we were given a short office tour and a Bloomberg terminal demo. We got to meet our interviewers which I thought was really nice, they were all really friendly so it took the edge off of the whole process. We then proceeded to a conference room for the interview.

The interview was a standard coding interview, a bit longer in duration(1.5 hours) I was given a really easy problem that I explained and coded, then I was asked to make a modification to precompute some data and give the answer if it is already computed. Again pretty straightforward memoization kind of thing. Then the interview took an unexpected turn. I want to note at this point that this is not standard, I had other friends who interviewed at Bloomberg at the same time who were asked purely algorithmic style questions so you never know I guess. The interviewer asked me stuff about locks and multithreading, how I would identify critical parts of the code and what mechanism I would use to lock them(They didn't expect me to say anything ultra sophisticated, just be aware that there are spinlocks and semaphores and what is the difference between them). Then they wanted me to argue about the architectural pipeline and they asked me about some computer architecture style questions(Again not anything super hard but unexpected).

The second question was more algorithmic style. They wanted me to code an interface that would respond to queries efficiently. I again made sure to use best practices, make classes and be careful about my methods and variables. After I coded the 'easy' solution I was asked how to make it more efficient, in which I proposed that we could use a range tree(Segment Tree) with lazy propagation. I was ready to start coding it but they told me it's ok and that's all they wanted to hear. I was asked about the time and memory complexity of the Tree and that was it. My interviewers were super nice and as they escorted me out we had a friendly chat about what it's like giving interviews and whether they are as stressed as I was. We had some laughs and it was overall a good experience.

Before I got a chance to get to my hotel I received an e-mail that I did well and I was going forward to the next and final step the day after. That's where things started to get complicated since I had specifically let them know that I have another interview. They got a bit aggresive because they thought that I was hiding information but they realized it was a mixup and they gave me a new flight and an interview the day after tomorrow.

So I go to the final interview. The first round was a typical behavioural round. My interviewers were really really nice. They were just slightly older than me so we had common experiences and they were without doubts the best interviewers I ever had. It didn't even feel like an interview, it felt more like a friendly chat. They asked me of course about each and every thing on my resume and they had follow up questions to my answers but other than that it was a really human, friendly conversation, we even shared some laughs. At this point I want to say that I see a lot about tips for these kinds of interviews and I am not claiming that I am an expert but I think that if you just let yourself be and answer honestly even if the answer is not supper flattering for you people will value that. These people have done like a ton of these and they can see right through someone who answers strategically or not completely honestly.

The second round was the most dissapointing for me. It was a systems design interview. I had no experience whatsoever and since I applied for the internship position I didn't expect that(My friends who applied for the same position didn't get one). My interviewer was a senior engineer and a bit strict, I can't really give an opinion regarding the difficulty of the interview since I have no experience on that domain. What I can say is that i tried to attack the problem at hand as reasonably as I could and at the end I let him know that it was a bit unexpected for me to which he replied that he didn't expect me to do perfect in this anyway.

It took a while to get back to me(It was the first time that they didn't reply like instantly but they told me that my file fell through the cracks somehow). Anyway I received an offer and after some negotiations I accepted and I am starting(virtually) in the summer, so yay.

The basic points that I took from the whole process was that practice is good and being well versed on algorithmic principles is for sure the most important since that's what you are eventually evaluated on. But also be yourself and friendly, the interviewers are before everything else people and they will value a genuine human conversation. Don't go over the top of course but as long as you are yourself and treat them like human beings they will too.

Overall the whole process consisted of:

  1. Phone call - Technical interview
  2. On-site - Technical interview
  3. On-site - HR interview
  4. On-site - Technical/Systems interview

Palantir(Went through the process-Rejected):

I applied online after a friend told me it's a good idea to apply. I was aiming for the software engineering internship position at the London office. They got back to me with a classic hackerrank online assesment. It was a bit strict on time, it was a 4-part question that every part built on the previous one and I think we had a total of 1 hour. Anyway, I made it through and they shortly contacted me about having a phone call discussing the process.

The phone call was basically an HR interview, I talked with a recruiter who btw was super super nice. We went through my CV and she asked me basic questions about why I wanted to join them and my topics of interest. They were really positive when I honestly relied that I don't know anything about the company and I didn't have time to do research. Overall it went good, They e-mailed me a few days later to schedule a technical interview.

This interview consisted of just one problem(and of course the introductory part where we talk about ourselves). It was an easy problem. I mean it had some details to take care of(like for example transforming hours to seconds,something like that) but at its core it was an easy linear array comprehension problem. It went more smoothly than ever, I was lucky enough to not even have compilation errors. The interviewer asked me how I would test my code to which I told him about edge cases and unit tests. After that, even though we had plenty of time I asked him some questions and finished the interview early. I was super confident that I did really well.

After that I received an e-mail from my recruiter(the super nice one) to schedule a phone call to "ask me how my interview went". That seemed a bit odd but I guess they wanted to listen to my feedback before telling my that I advanced to the on-site. After that we had another call to let me know how the on-site interview will be like about a week before I got to London. At this point, I told them that I also interview with Bloomberg to be transparent and that started a whole stream of questions like 'If you get both offers which will you choose and why?" to which I replied very honestly that I don't know at the moment, I have to get through the process and do my research but compensation will definitely be a factor, not the only one though. It seemed like they appreciated my honesty and after a few more questions we ended the conversation.

The Palantir on-site interview was very intense. It consisted of 3, 1-Hour back to back interviews. The first one was a standard coding interview in which I did pretty well. The problem at hand was a very difficult Competitive Programming-Olympiad Style question, they didn't expect me to get to the optimal solution and code it since it consisted of some pretty advanced Data Structures(Like Heavy-Light Decomposition and Persistent Segment Trees). They were ok with me coding the easier solution and getting them through the process of how I would use these Data Structures and what the complexity would be. Overall the first one went good.

Right after the first interviewer leaved the room the next one came in. This interview was very not standard. I was given a codebase in a language I didn't know(Java) and they told me there were bugs and I had to figure them out. I figured out some bugs and fixed them but seems like there were some more(there were also data inconsistencies that they wanted me to pick up). This interview didn't go that well and I knew it.

The last interview was sort of a Systems Design interview. They told me that they had a specific problem in the office and they wanted us to discuss possible solutions. As my interviewer said 'I don't want you to write any code, but I want us to get at a point that after we are done with this interview we can go straight to code up what we discussed'. Since I didn't have that much experience with this kind of stuff It went ok i guess, not perfectly though.

Needless to say that at this point I was exhausted, the final part consisted of giving us a tour of the office and a demo of some of their tools. It was for sure the most intense interview process I've ever been through. After some days I received the news that we wouldn't proceed to an offer.

Overall the process consisted of:

  1. Online Assessment
  2. HR Phone Call
  3. Technical Phone Interview
  4. HR Phone Call + another one letting me know what I should expect at the interview
  5. 3 back to back interviews on-site varying in style

Conclusion:

That's about it, what I can recommend is try to get well versed in standard algorithmic principles. Get through DP, Graph Theory, standard data-structures. If you have some exposure to competitions and competitive programming it's definitely a plus, it is not required though. Be aware of coding practices and try to be as careful as possible when writing your code, let them know that you can debug your code yourself if needed without relying on them(that's what you will be doing at the job afterall). All that said, just be yourself and as humane as possible and I am sure it will all work out.

Good luck everybody. Let me know if you have any questions in the comments.

Cheers!

Comments (5)