On Negotiating Salary, Interviews for Big Tech and the Internship World

On Negotiating Salary, Interviews for Big Tech and the Internship World

Welcome! This is the first post of my blog.
What better way to start other than some juicy new graduate offers?
A little caveat, I will not list my total compensation in this blog post.
I do not like attaching my name to some money figure publicily available on the internet. However, I will use levels.fyi and ranges to give some ballpark numbers for you to better understand my negotiation position.

The goal of this post is to showcase what’s possible for EU new graduates.

We are all familiar with out of mind multiple offers in the US, can the same be done in Europe? If not, how close we can get?

Everyone is saying that the market is really hot for tech people, but is It so for entry level as well?

My short answer is yes. However, competition is much more fierce: to get shortlisted for interviews one needs to have past relevant experiences.

My background is in Applied mathematics, but in my second year I have discovered that I really like writing code. This started my stint of different internship experiences: the most valuable thing you can do while at university. This way you can really understand the sub-field you like the most! I am really thankful that I have not focused much on getting the best possible grades but on exploring.

I have worked in open source software thanks to the “Julia season of contribution” and “Google summer of code” framework. Under these two initiatives, I have written the library Surrogates.jl.

I will be forever grateful the the Julia community, my time as an open source developer was incredibly formative as I learned a great deal about software development and high level design of a library used by many researchers around the world. It is still the piece of code I am the most proud of.

At the time I was still debating if a PhD was in the cards after my MSc. To make up my mind, I have decided to keep using Julia while collaborating with the Alan turing institute on some open ended research problems.
This experience made me realize that the academia setting is not really for me. Again, a super valuable experience to make!

During this time, my girlfriend was studying in Göteborg, Sweden. I have decided to kill two birds with one stone: I moved in with her for 6 months while working at VolvoCars on my MSc degree related to computer vision.
My time in Sweden has been nothing short of amazing, It will be on my radar for when I am ready to settle down.

Shortly after that, I have moved to the little Saint-genis-Pouilly in France. It’s on the border with Genève – Switzerland. I have moved there to work for 6 months at CERN! I have written some (lots) of Python code for beam stability. The work was a little slow moving for my taste, but still: I have discovered many interesting phenomena.
During this time, I have learnt how to rockclimb and made incredible friends from all over the worlds. Most importantly, It’s where I have prepared hard for interviews and where I have received all my offers.
More on that in the next section!

I have targed Software (ML) enginering roles and Applied scientist roles. I have also applied to Data science positions, but no one was bold enough to reply to me. I really feel the Data science entry level positions are the most sought after – or maybe I am just a non compelling candidate.

To prepare for such interviews, I have practiced two different skillsets: coding and ML knowledge.

For coding, I did:

I have realized that I will probably need to interview again in a few years if I want to stay close to market rate, so I am compiling every coding question I find important enough on this beautiful Notion page. Take a look if you want some ispiration on what problems give you a high ROI.

For ML related knowledege, I did:

Let’s now talk about actual interviews!

I started applying around September 2021 for new graduate roles starting 2022. I applied to many graduate programmes / entry level software engineering position at the same time. The reason is simple: in the lucky case where I get multiple offers then I can try and negotiate a little.

Below you can find a little table with all the noteworthy companies I applied to where I got at least shortlisted for a OA. Keep in mind that more than 20/30 other companies rejected me outright.

Company Location Role Referral Offer
Google Zurich Software engineer – L3
Meta London Software engineer – E3
Snapchat Vienna Computer vision engineer
Yelp London Applied scientist
Helsing Munich AI research engineer
UBS Zurich AI developer
Databricks Amsterdam Software engineer
Quora Remote Software engineer
Twitter London Software engineer
DeepMind London Research engineer
Microsoft Oslo Software engineer
TikTok London ML engineer
Zalando Berlin ML engineer

As you can see, only a few of them have an AI focus! My reasoning was the following: in such big companies, they have lots of ML teams and my expertise is in that, so I figured I’d get matched with a team I like eventually.

The rejections

I perform quite badly in OAs because I get bored easily, so the majority of rejections came rather early. The only onsite rejection I had was with Helsing: I had to do a take home ML problem and I honestly underperformed. No surprise there!

The offers

Having some controllable process to ease myself in the interview setting was really helpful to me. I had to signal to my brain: “It’s show time!”.

To do so, before every interview, I decided to listen to the same song 🎵: “MAMMAMIA” by Måneskin.

Not only that, I have always worn my yellow Timberland pile 🟡.

Needless to say, I have a new favourite song and jacket!

Also, I have approached interviews as some sort of game, withouth thinking at the stake at hand. I defined my game as: “Solve this little algorithmic problem with another engineer while having fun”. Maybe I did not get the most optimal answer every time, but I have always communicated really well my thought process.

Offers below are listed as I have received them.


My first offer was Meta. The interviews consisted in:

  • Technical interview
  • Virtual onsite:
    • Technical interview
    • Technical interview
    • Behavioral

The Meta behavioral was rather intense, something I did not expect: ~ 15/20 questions in 45 minutes. I performed quite well in the screen and behavioral. Barely scrambled in the second question of the first technical interview and perfectly in the second technical interview.
To prepare for Meta interviews, I suggest focusing heavily on previously common asked questions.

I was expecting an offer but I did not say that to anyone, eheh.

Exactly one week later my recruiter told me I had the offer!
The offer is close to top of the band for E3 in London, from what I can gather online on levels.fyi/London. I will call the meta total compensation M.

New graduate offers are non negotiable unfortunately. Still, I respect Meta for this quite strong offer for E3 London, given that they were the first to make an offer. Not much to say on the negotiation part: there was no chance here!

From this point on, I was much more relaxed in the other interviews!


After a few days, I have received my UBS offer. The interviews consisted in one technical interview, one technical test and one behavioral. Really straightforward interviews, not much to say.

The offer came: 85k$ CHF salary. No EOY bonus, no relocation package, no sign on.
Quite an underwhelming offer, especially for Zurich!
I told my recruiter that I felt this offer was not even close to market rate in Zurich, given my Meta offer in London.
The answer was surprising: “this is top of the band, there is no way we can increase”. I am not sure I believe her. Anyway, I rejected the offer the same day as UBS was my back up plan.


Meanwhile, I was also having my Snapchat interviews. This process has been long, tiresome and as challenging as the Google one. Still, I have the impression that the Vienna team is really top-notch: if you enjoy computer vision work then It’s the place to be!

The process was as follow:

  • Behavioral screen with a focus on past projects
  • Tech screen in C++ + one behavioral question
  • Presentation of one of your past projects to the team
  • Virtual onsite:
    • Technical interview on computer vision + one behavioral
    • Techical interview on computer vision and Prob/stats + one behavioral
    • Technical coding interview (C++) and CS knowledge + one behavioral
    • Technical coding interview (C++) and optimization questions + one behavioral
    • Technical coding interview (Python) and ML questions + one behavioral
  • One day before the offer, I had one call with my future manager. I wouldn’t say this was a real interview, but who knows.

I know I completly bombed the optimization questions and I did reasonably well on everything else.

The day after my manager call, I had the offer! I will call Snap’s offer S.
This offer was quite competitive with the Meta one given the location. The initial offer was S=M – 20k€.
Still, I believed that they could something more. During the offer discussion with my recruiter, I expressed the fact that the offer has a very low base salary and no sign on. The recruiter seemed understanding, I was able to get it up to S=M – 15k€.

I honestly expected a bigger increase, but according to my recruiter nothing more could be done about it. I really liked the team so I asked for a few more days to think about it.


Google process was rather slow and long. I anticipated this and started the process quite early on.

It was as follows:

  • Recruiter screen with some short and easy technical questions
  • Technical screen
  • Virtual onsite (two days):
    • Behvarial
    • Technical interview
    • Technical interview
    • Technical interview
    • Technical interview

After the onsite, my recruiter told me that the feedback was good and supportive for us to proceed further. I had a call with just one ML team, the fit was mutually great and we went for HC (Hiring commitee).
At this point, I shared that I have received an offer from the other companies.
They seemed interested in Meta only, and they asked me for the offer numbers.
At first, I was a little skeptical about sharing numbers, as the common negotiation rule says: “Never be the first one to say a number”.
However, my Meta offer is strong and I was scared that not sharing it would signal a weak offer. I am still debating if this was a sound reasoning or not, let me know what you think about it in the comments below :).

At this point, I still did not go to HC but this question made me quite confident about my chances!

After a week or so, I got the following email:

I was BEYOND ecstatic!

After a few days google recruiter came back with an offer by email, which I will call (unsurprisingly) G ~=M + 45k€.

This offer is quite good. Still, according to levels.fyi this was not top of the band.

Now, I am wondering what to do. The location means this will be my highest offer ever. Plus, I have already shared my highest competing offer with them, so what kind of leverage do I have?

Being completly honest, I would have accepted the offer already, but I wanted to use this as a training camp for negotiations.
Moreover, my interviews with Google were quite strong and I have a lot of competing offers, so I convinced myself that I was still in a good position to negotiate, so I am not doing this just for fun. This thought made the training camp a little more real! 🙃

Last but not least, negotiating with Google made me feel pretty important, not going to lie!

In the afternoon, I jumped on the call to discuss the offer with my recruiter. I have to admit, this was quite nerve wracking!
I tried to vocalize my concerns related to the Google offer, namely:

  • Zurich cost of living
  • Slower career progression on average
  • Non negligible lower stocks means less upswing down the road

Then, I asked for 20k$ more equity to get at least closer to Meta’s equity and 10kCHF sign-on to match Meta’s sign on.
My recruiter was pushing back on this rather hard, unsurprisingly.

I held my ground, discussing stock refreshers number, which I know are weaker at Google with respect to Meta.

My recruiter kept hinting that making a yes or no decision based on slight number changes was offputting, given that Google offer was already stronger.
I replied that equity has a lot of upswing potential, so this was not negligible to me. That was the only answer I could give on the spot, but I think It is OK when I tied it to my belief in Google as a company.

The call went on for quite long, around 30 minutes.

At the end of the call, my recruiter asked me: “Will you accept the offer if I manage to give you the numbers that you asked for?”.
I replied that I’d sign on the spot without further discussion.

Honestly, I think he was just as tired as I was, or at least I’d like to think that.

He told me I’d get the answer by EOD tomorrow.

Closing the call, I felt quite good about my chances!

I have to say though, if you are the non confrontional type, I’d suggest to stick to emails. They are on the safer side as you have more time to think and evaluate.

Myself, I like adrenaline so on call negotiation is my only option.

The day after he came back with good news: +20k$ in stocks.
This put my final offer to G ~=M + 50k€

There was still no sign on, but I did not have it in me to push back. I thanked my recruiter for the great news and asked for some days to think about it. (Google offer is valid for a year anyway)


Yelp process was really fun!

I did:

  • OA coding
  • ML design screen
  • Virtual onsite:
    • ML design
    • Technical interview
    • Behavioral
    • Behavioral

The final offer after some negotiation was comparable to the Meta one, with less upswing in stock. So we have: M ~=Y. I was pleasantly surprised. I really liked Yelp culture: everyone I have met has been extremly kind. This was the most enjoyable interview process for me.

Finally, decision time! Again, I felt very fortunate to be in this position. Also, I feel proud of the work I have put in to reach this point. Good vibes overral!

In the end, I have decided to go with Google. The total compensation is much higher, tax rate much lower and Zurich looks like a good city to live in, as I like a calmer environment. Moreover, the team I matched with does heavy ML modelling work, so I feel like this is equivalent to a “Machine learning engineer” role even though the official role is “Software engineer”.

At first, I was a little scared about career progression, which is know to be a little slower than average. Still, I understand that promotions at lower levels are not that daunting, so I am at ease.

Anyway, in a few years, I can reach out again to other companies and revaluate where I stand.

At this moment in time though, I am just focusing on starting strong at Google and soak as much information as possible while contributing to the best of my abilities.

I can’t wait to start!

Thanks for having reacehed the end of this little post, I hope It was somewhat useful!


Read More

Ava Chan

Ava Chan

I'm a researcher at Utokyo :) and a big fan of Ava Max