I have 17 YOE, but just recently moved to U.S. (115k TC in small South Florida company) and I'm doing my first few interviews for large companies. And besides doing well in phone interviews (was invited for onsite in almost all companies), I'm doing terrible whiteboard algorithm interviews. First I tried Citrix. Onsite interview was decent (lots of systems design, some practical programming, and some easy algorithms). One team passed on me, but the other made me a 120k base offer (I didn't take it) Tried Bloomberg, was invited for onsite but I decided not to move forward. Tried Dropbox, wasn't called for onsite. Tried Microsoft, I was called twice for onsite interviews, but on both I ended up doing bad on the whiteboard algorithms. In the first onsite interview (Principal Engineer in Azure) it was mostly about systems design, and in that part I was pretty good, but I totally blanked on the algorithms part (it was an easy LC, and was the only algorithm that I had among 4 interviews). In the last onsite (Senior Engineer in Sharepoint) it was only about algorithms (no systems design at all), and I could mostly solve all the problems (LC medium) but my code was so confusing (it's hard to fix your code on the whiteboard after initial draft) that I ended up getting some negative feedback about my code being confuse, and about solving problem verbally/pseudo but not doing it fully on whiteboard. How can I improve my whiteboard skills? I'm mostly interested in Google and Facebook - how much medium/hard algorithms should I expect, and how much systems design? Bonus question: besides Microsoft and Citrix, which other good companies are using .NET/C#?
Best advice I got was to practice under similar conditions. Use a whiteboard at home. Do the problems when you are exhausted and your brain is tired. Try to solve problems you have never seen before, someone acting as an interviewer could help.
Practice writing code on piece of paper. Practice lots of leetcode
Do leetcode on a whiteboard, or at least paper, at home. Talk through the problems like you would to your interviewer. Practice makes perfect.
Do 300 medium and hard (total) Leetcode problems
I found a meetup where I was able to practice doing leetcode problems on a white board in front of a dozen people. It helped a great deal.
Where did you find this
As others have said, practice actual whiteboarding at home - practice under conditions as similar as possible to actual interviews is key. If you're blanking on LC easy level problems, then you need more LC practice as well. There aren't a ton of well-paying companies that use .NET, but that situation seems to be improving somewhat. Cornerstone is a pretty big shop that pays ok (like tier two, I'd say - I got an offer for Principal SWE @ ~240 TC. I would guess that Principal is like high-L4 at G/F). I'm getting hit up by recruiters with .NET roles offering 150-180 base more often. LA area, for reference.
Dropbox will let you interview on your laptop for the on-site. Not sure what to the cool down is for another phone screen, but you can ask other companies if they have a similar policy.
Improve by actually practicing. Like literally get a white board and talk to someone (or pretend to talk to someone) Practice in the shower too. Stand there and "draw" on the wall an algorithm and talk through it outloud. This isn't a normal thing people or devs do so you need to practice doing it. You can likely speak your native language quite well right? Until you're asked to stand up in front of a crowd and do it and suddenly you're tongue tied and saying nonsense. Same thing. You have to practice these things to get better at them. I too also suck at writing on a whiteboard.
Generally I suck at writing on the whiteboard. I have been trying to improve by simply going up and drawing simple examples when I explain things to people
Drawing looks like a good exercise, I'll try, but yet I think that my major problem is writing *code* in whiteboard - on the computer I usually start writing without much planning it's easy to refactor later, change logic, add conditions, etc., while on the whiteboard that becomes messy. Example: in my last interview I made the whole algorithm by passing a list of integers, and in the simulation I noticed that I had to change from integers to graph nodes (with more info), and my whiteboard became an ugly mess :-)
Oh yeah I get you now. I could see that being a problem.