语音转换成文本 技术实现_职业转换者指南,帮助您实现梦想的技术工作

语音转换成文本 技术实现

In this article, I'll discuss some pro tips that'll help you ace your interviews at your dream companies and get the most out of your job offers.

在本文中,我将讨论一些专业技巧,这些技巧可以帮助您在理想的公司进行面试,并从工作机会中获得最大收益。

简介-从华尔街到Googleplex (Introduction — From Wall Street to the Googleplex)

On March 31, 2019, I was downsized by a startup hedge fund. Having been a quantitative software developer in the finance industry for the last 10+ years, I didn’t want another job doing more of the same. I set out to follow my passion and find my next job in Artificial Intelligence, Machine Learning, and Deep Learning.

在2019年3月31日,我被一家新兴的对冲基金缩减了规模。 在过去的10多年中,作为金融行业的定量软件开发人员,我不想再做另一件事。 我开始追随自己的热情,并在人工智能,机器学习和深度学习领域找到下一份工作。

Over the next 6 months, I worked very hard towards that goal. By September 2019, I had multiple Machine Learning related on-site interviews and offers, including offers from both Google and Facebook.

在接下来的6个月中,我为实现该目标而努力。 到2019年9月,我进行了多次与机器学习相关的现场采访和报价,包括Google和Facebook的报价。

Here is how I did it. Hopefully it will encourage and help other potential career switchers to make this transition. Your reward for switching could be two fold, both intellectually and financially.

这是我的方法。 希望它将鼓励并帮助其他潜在的职业转变者进行这种过渡。 无论是从智力上还是从财务上,您转换的奖励都可以提高两倍。

文章摘要 (Article Summary)

If you are short on time, here is the quick 5 step recipe that worked for me.

如果您时间不多,以下是为我工作的快速5步食谱。

  • Curate: Work on a project that you are passionate about and showcase it online

    策展人 :从事您热衷的项目并在线展示

  • Study: Practice Algorithms and Data Structures coding and System Design problems intensively

    研究 :集中练习算法和数据结构编码以及系统设计问题

  • Apply: Leverage multiple channels to land interviews

    适用 :利用多种渠道进行采访

  • Interview: Keep your cool during Phone and On-site Interviews

    面试 :在电话和现场面试中保持冷静

  • Negotiate: Know what you want as you negotiate offers and match with teams

    谈判 :在协商报价并与团队比赛时知道您想要什么

As you can see, this is a simple 5-step recipe. However, completing each step takes a lot of hard work. Read on for details.

如您所见,这是一个简单的 5步食谱。 但是,完成每个步骤都需要很多艰苦的工作 。 继续阅读以获取详细信息。

关于我 (About Me)

Here is a little about me, because I think this guide would be most helpful for someone with a similar background as myself.

这里有一些关于我的内容,因为我认为本指南对与我背景相似的人最有帮助。

Namely, I'm an experienced software engineer/developer in a non-tech industry who wished to switch to a top tech company on the west coast (San Francisco Bay Area or Seattle).

即,我是一个非技术行业的经验丰富的软件工程师/开发人员,他希望切换到西海岸(旧金山湾区或西雅图)的顶级技术公司。

If you have no software engineering work experience, the recipe above should still work for you. You just have to work a lot harder than someone with the coding experience.

如果您没有软件工程工作经验,那么上面的食谱仍然适用。 您只需要比有编码经验的人付出更多努力即可。

I graduated from the University of Waterloo in Canada as a computer engineer. In my earlier career, I worked as a software engineer for Microsoft and Oracle. Then I switched into the Quantitative Finance industry after my MBA.

我毕业于加拿大滑铁卢大学的计算机工程师。 在我早期的职业中,我曾担任Microsoft和Oracle的软件工程师。 在获得MBA学位后,我进入了定量金融行业。

For the past 10+ years, I worked as a quantitative developer/analyst for Bank of America, UBS, Citadel, and a few smaller firms. But since 2016, when I first stumbled upon Machine Learning (ML) and deep learning, I fell in love with it. I knew I wanted a job in the AI/ML field eventually.

在过去的10多年中,我曾在美国银行,瑞银集团,城堡和一些较小的公司担任定量开发人员/分析师。 但是自2016年以来,当我第一次偶然发现机器学习(ML)和深度学习时,我就爱上了它。 我知道我最终想要在AI / ML领域工作。

In April 2019, I started my full-time preparation for this career switch. And I will be moving to the Bay Area next week to join Google, one of the leaders in AI and ML.

在2019年4月,我开始专职为这一职业转变做准备。 我下周将搬到湾区,加入AI和ML的领导者之一Google。

成功的5个简单步骤 (5 Simple Steps to Success)

第1步:策划-在一个很酷的项目上工作并展示它 (Step 1: Curate - Work on a Cool Project and Showcase it)

In February 2019, my good friend, Igor, encouraged me to create a cool project and write about it. At the time, I didn’t have any good ideas. I had never published anything online and didn’t know where to begin.

在2019年2月,我的好朋友伊戈尔(Igor)鼓励我创建一个很棒的项目并进行撰写。 当时,我没有任何好主意。 我从未在网上发布过任何东西,也不知道从哪里开始。

But in early April, while I was vacationing with my family in Mexico, one night I suddenly had a revelation that I wanted to build a self-driving car. Given that I had no prior experience with robotics or electronics, I set out to build a Deep Learning/Self-Driving Robotic Car, DeepPiCar, that could run in my living room.

但是在四月初,当我与家人在墨西哥度假时,有一天晚上,我突然得知我想制造一辆自动驾驶汽车。 鉴于我以前没有使用过机器人技术或电子产品的经验,因此我着手制造了可以在我的客厅中运行的深度学习/自动驾驶机器人汽车DeepPiCar

One month later, after I successfully built the self-driving car, I started to write a 6-part blog post on Towards Data Science to teach others how to build one.

一个月后,在我成功构建了自动驾驶汽车之后,我开始在Towards Data Science上撰写一篇由6个部分组成的博客文章,教其他人如何制造汽车。

Within weeks, my blogs received over 10,000 views, and the reaction from readers worldwide was overwhelming. I felt my 2 months hard work — one month to build the car, and another month to write the blogs — was well worth it.

几周之内,我的博客获得了10,000多次浏览,全球读者的反响热烈。 我觉得我两个月的辛苦工作(一个月用来制造汽车,另一个月写博客)是值得的。

However, I did not realize its full impact on my professional career until my interviews and offer team-matching calls, when interviewers asked me “Why are you looking to switch from your current industry?” I was ready with talking points!

但是,直到面试官问我“您为什么要从当前的行业转向?”时,我才意识到这对我的职业生涯没有完全的影响,并进行了团队配对电话。 我已经准备好要说话了!

Not only was I able to tell them how passionate I feel about AI/ML, but when I pulled out my car (yes, the actual robotics car) from my backpack and put it in the hands of the interviewers, I could see the excitement from their eyes! Many of them even said they would love to build such a car with their kids.

我不仅能够告诉他们我对AI / ML的热情,而且当我从背包中拿出我的汽车(是的,是真正的机器人汽车)并将其放在采访者的手中时,我可以看到兴奋从他们的眼中! 他们中的许多人甚至表示,他们希望与孩子们一起建造这样的汽车。

I then told them that I had published the full step-by-step instructions with source code online (with links in my resume) for them to follow. I was pretty sure they wouldn't file my resume in the recycle bins afterward. ;-)

然后我告诉他们,我已经在线发布了完整的分步说明和源代码(我的简历中带有链接),以供他们遵循。 我非常确定他们以后不会将我的简历归档到回收站中。 ;-)

Some of my friends ask me to recommend good projects to work on. Here are some of my suggestions:

我的一些朋友请我推荐一些好的项目。 这是我的一些建议:

  • If you want to transition into front-end development, create a cool website with a lot of interactivity with popular open-source frameworks, such as React and Angular.

    如果您想过渡到前端开发,请创建一个很酷的网站,与流行的开源框架(如ReactAngular)进行很多交互。

  • If you are interested in server-side development, try to create a web crawler or search engine using distributed server technology such as Cassandra, ZooKeeper, Memcached, and Elastic Search, etc

    如果您对服务器端开发感兴趣,请尝试使用分布式服务器技术(例如CassandraZooKeeperMemcachedElastic Search等)创建Web搜寻器或搜索引擎。

  • If you are into mobile devices, try to create and publish an Apple/Android app. Note that publishing an app on Apple’s App Store takes much longer than Google’s Play Store.

    如果您喜欢移动设备,请尝试创建并发布Apple / Android应用。 请注意,在Apple的App Store上发布应用程序比在Google的Play Store上花费更长的时间。
  • If you are interested in AI/ML, take one of the existing Computer Vision or Natural Language Processing deep learning models, and try to make a product out of it. For example, I took a pre-trained object detection model, SSD, and adapted it to be a traffic sign detector for my DeepPiCar. If you are new to AI/ML, be sure to read Part 1 of DeepPiCar, where I list several ML courses and resources to get you started.

    如果您对AI / ML感兴趣,请采用现有的“计算机视觉”或“自然语言处理”深度学习模型之一,然后尝试从中学习产品。 例如,我采用了预先训练的对象检测模型SSD ,并将其修改为我的DeepPiCar的交通标志检测器。 如果您不熟悉 AI / ML,请务必阅读DeepPiCar的第1部分 ,其中列出了一些ML课程和资源以帮助您入门。

  • If you are into robotics, try to build some cool robots using a Raspberry Pi or an Nvidia Jetson Nano. Be sure to use either the new Raspberry Pi 4 or Jetson Nano. Raspberry is more widely used by makers and enjoys better support, while Jetson Nano has a GPU onboard, so it may be better for Deep Learning projects.

    如果您热衷于机器人技术,请尝试使用Raspberry Pi或Nvidia Jetson Nano构建一些出色的机器人。 确保使用新的Raspberry Pi 4Jetson Nano 。 Raspberry被制造商更广泛地使用,并获得更好的支持,而Jetson Nano具有板载GPU,因此对于深度学习项目可能更好。

  • If you don’t have any project ideas, do not despair. You can always contribute to one of the open-source projects mentioned above, as well as TensorFlow or PyTorch if you are into AI/ML. You may think you need to be an expert to contribute to these well-known open-source projects. You do NOT. Actually, in each open source project, there are quite a few small features and easy bug fixes designated for noobs to get their hands dirty first. This way, you can be familiar with the code base and submission process before tackling more complex issues.

    如果您没有任何项目构想,请不要绝望。 如果您喜欢AI / ML,则始终可以为上面提到的一个开源项目以及TensorFlowPyTorch做出贡献。 您可能认为您需要成为专家才能为这些著名的开源项目做出贡献。 你不。 实际上,在每个开源项目中,都有很多小功能和易于修复的错误,专门为菜鸟设计,让他们先动手。 这样,您可以在解决更复杂的问题之前熟悉代码库和提交过程。

Once you finish your project, be sure to let the world know about it! Is it enough that you just publish your finished code on GitHub and be done with it? No! Because most people prefer to read blogs about what your code does first.

完成项目后,请务必让全世界了解它! 仅将完成的代码发布在GitHub上并完成它就足够了吗? 没有! 因为大多数人都喜欢阅读有关您的代码首先做什么的博客。

Nice, well-polished blogs are great marketing material for your project, and more importantly, for you!

精美,精练的博客是您项目的重要营销材料,更重要的是,对于您来说

Yes, writing polished blogs with nice pictures and graphs takes a long time. It took me about all of May to write 6 articles. I estimate about 200 total hours or 30 hours/article. If you are working full time, maybe write one well-written blog, which serves as an overview of your project.

是的,编写带有精美图片和图表的精美博客需要很长时间。 我花了大约五月份的时间写了六篇文章。 我估计总共约200小时或每文章30小时。 如果您全职工作,也许写一个写得不错的博客,作为您项目的概述。

One thing to remember is that you have to enjoy what you are doing, instead of doing the project just to land a job. If you do have a passion for what you build, it will shine through when you talk to interviewers.

要记住的一件事是,您必须享受自己的工作,而不是仅仅为了找到一份工作而做项目。 如果您确实对自己的构想充满热情,那么当您与面试官交谈时,它就会闪耀。

步骤2:努力学习,聪明学习 (Step 2: Study Hard and Study Smart)

算法和数据结构 (Algorithms and Data Structures)

If there is one single skill you need to master for tech interviews, it is Algorithm and Data Structures (A&DS) coding skills. No matter which big or small tech firms you interview with, they will grill you on your coding skills, although most firms won’t care which programming language you use.

如果您需要掌握一项技术才能进行技术面试,那就是算法和数据结构(A&DS)编码技能。 不管您采访哪个大型或小型的技术公司,尽管大多数公司都不会在乎您使用哪种编程语言,但它们都会使您的编码技能陷入困境。

My favorite programming languages are C++ and Python, but for coding interviews, I recommend Python. It is so concise and you can do so much with so few lines compared to C++, which is very verbose. There are tons of resources that prepare you for A&DS. I used the following resources:

我最喜欢的编程语言是C ++和Python,但是对于编码面试,我建议使用Python。 它非常简洁,与C ++相比,您可以用很少的代码完成很多事情,这非常冗长。 有大量的资源为您准备A&DS。 我使用了以下资源:

Cracking the Coding Interview Book (CtCI): this book is about 700 pages, and only costs $30. If you need a refresher on A&DS concept, this is an excellent starting point. In addition to concepts, it gives a series of easy to medium level practice questions with full solutions. I spent about 2 to 3 weeks full time on it, spending 1–2 full days on each A&DS related chapter. I skipped chapters on math/brain teasers/OOD/C++/Java/SQL, as they are not related to A&DS.

破解编码面试书 (CtCI) :本书约700页,仅售30美元。 如果您需要对A&DS概念进行复习,这是一个很好的起点。 除了概念外,它还提供了一系列简单到中级的练习题以及完整的解决方案。 我花了整整2到3周的时间,在每个与A&DS相关的章节上花了1-2天。 我跳过了关于数学/脑筋急转弯/ OOD / C ++ / Java / SQL的章节,因为它们与A&DS无关。

LeetCode.com: I also used LeetCode (LC) heavily, as I felt CtCI did not give me enough practice. Leetcode is probably the most comprehensive and organized online database of coding interview questions, with over 1000 easy, medium, and hard questions. Each question has a unique number. (e.g. LC#1 is TwoSum) Many online posts simply refer to their interview questions as LC #xxx instead of typing out the whole question.

LeetCode.com :我也大量使用LeetCode(LC),因为我觉得CtCI没有给我足够的练习。 Leetcode可能是编码面试问题的最全面,最有组织的在线数据库,其中包含1000多个简单,中等和困难的问题。 每个问题都有一个唯一的编号。 (例如,LC#1是TwoSum)许多在线帖子只是将他们的面试问题称为LC #xxx,而不是输入整个问题。

I highly recommend spending $30/month to sign up for LeetCode Premium, as it gives you access to ALL of the LC questions and solutions. I felt that it was so helpful, I signed up for the annual membership for $99, as I think of it as a “gym membership fee for my brain.”

我强烈建议您每月花费30美元注册LeetCode Premium,因为它使您可以访问所有LC问题和解决方案。 我觉得这很有用,我以99美元的价格注册了年度会员,因为我认为这是“我大脑的健身会员费”。

I completed over 100 LeetCode questions (35 easy, 60 medium, 14 hard). About 90% of my actual interview questions, or their slight variants, could be found on LeetCode. In most cases, I didn’t know they were from Leetcode until after the fact. But since I practiced enough of the LC medium questions, I was able to solve questions around the same difficulty. In the end, I felt I could NEVER do enough LC medium questions, because to this day, I still struggle with some of the LC medium questions.

我完成了100多个LeetCode问题(35个简单,60个中等,14个困难)。 在LeetCode上可以找到我大约90%的实际面试问题或其细微变化。 在大多数情况下,直到事发后我才知道它们来自Leetcode。 但是,由于我练习了足够多的LC中级问题,因此我能够解决相同难度的问题。 最后,我感到我永远无法做足够的LC中级问题,因为直到今天,我仍在努力解决一些LC中级问题。

Tushar Roy’s LeetCode Hard Solutions: Tushar is actually an Engineering Manager at Apple. He made these videos when he was just a software engineer. I would say that watching his videos taught me not only these algorithms but also how to present complex ideas/algorithms clearly. This helped me immensely when I was doing whiteboard coding during on-site interviews.

Tushar Roy的LeetCode Hard解决方案 :Tushar实际上是Apple的一名工程经理。 他只是一名软件工程师时就制作了这些视频。 我想说的是,观看他的视频不仅教会了我这些算法,还教给了我如何清晰地表达复杂的思想/算法。 当我在现场采访中进行白板编码时,这极大地帮助了我。

Note that most interviewers will give LC medium level questions, as it is pretty fair to ask someone to solve a medium problem in 20–30 minutes. I would suggest doing at least 20 easy, and 30 medium LC questions before your first phone interviews. I did my first phone interview after I finished the CtCI book and before starting on LC, and was promptly slaughtered.

请注意,大多数面试官都会向LC提出中等问题,因为让某人在20-30分钟内解决中等问题是很公平的。 我建议您在第一次电话面试之前至少做20个简单问题和30个中等程度的LC问题。 在完成CtCI书籍之后,开始使用LC之前,我进行了第一次电话采访,并被Swift屠杀。

Also, I timed myself on each practice problem, as if I was in an interview. However, I used an IDE, with auto-completion and a debugger. You won’t get these in an actual interview, so I usually set a tighter time constraint when I practiced, at about 30 min/question, instead of 45 min. You may choose to mimic the real test environment by using a regular text editor only or even a whiteboard. It's up to your personal preference.

另外,我将自己安排在每个练习问题上,就像在面试中一样。 但是,我使用了具有自动完成功能和调试器的IDE。 您不会在实际面试中得到这些,因此我在练习时通常会设置更严格的时间限制,大约是每分钟30分钟,而不是45分钟。 您可以选择仅使用常规文本编辑器甚至是白板来模仿真实的测试环境。 这取决于您的个人喜好。

系统设计 (System Design)

The second most important skill you need to master is System Design. Usually, one on-site interview session will ask you to design a large scale distributed system, such as the Netflix video serving system, or WhatsApp instant-messaging system, or Instagram stories, and so on.

您需要掌握的第二个最重要的技能是系统设计。 通常,一个现场采访会要求您设计一个大型分布式系统,例如Netflix视频服务系统,WhatsApp即时消息传递系统或Instagram故事等。

This test is a mixture of both hard and soft skills. It is a hard skill test because you need to understand a lot of the commonly used distributed system components, such as a distributed database, distributed in-memory cache, distributed configuration manager, distributed file storage, and distributed search engine, etc., along with when is the right time to use each of them.

该测试是硬技能和软技能的混合体。 这是一项艰苦的技能测试,因为您需要了解许多常用的分布式系统组件,例如分布式数据库,分布式内存缓存,分布式配置管理器,分布式文件存储和分布式搜索引擎等。何时才是使用它们中的每一个的正确时间。

It is also a soft skill test because you need to be able to draw a clear diagram to illustrate your design and verbally discuss and defend your design. I was told that system design interviews heavily influence the level you are offered if you pass the on-site interview (that is, it may decide whether you are offered a Level 4 or Level 5 engineering position, for example).

这也是一项软技能测试,因为您需要能够绘制清晰的图来说明您的设计,并进行口头讨论和捍卫您的设计。 有人告诉我,如果您通过现场面试,则系统设计面试会严重影响您所获得的水准(例如,它可能决定您是被授予4级还是5级工程职位)。

Here are the resources that I used:

这是我使用的资源:

  • Cracking the Coding Interview Book(CtCI): There is a chapter that discussed system design, but it is covered at a pretty basic level

    破解编码面试书(CtCI) :有一章讨论了系统设计,但是在相当基本的层次上进行了介绍

  • Gaurav Sen’s System Design YouTube Channel: I felt unfulfilled after reading CtCI’s system design chapter. Then I stumbled upon Gaurav’s channel, which has 22 videos. I downloaded all his videos onto my laptop and watched them on a long plane ride. Man, this guy is so GOOD (and funny) and explains things so clearly! About 10 videos are in-depth descriptions of individual distributed system components, the rest are actual use case discussion on how to build Netflix, or Tinder, or Facebook systems, etc.

    Gaurav Sen的系统设计YouTube频道 :阅读CtCI的系统设计一章后,我感到很失望。 然后我偶然发现了Gaurav的频道,该频道有22个视频。 我将他的所有视频下载到笔记本电脑上,然后长时间乘坐飞机观看。 伙计,这个家伙太好了(又好笑),而且解释得很清楚! 大约有10个视频是各个分布式系统组件的深入描述,其余是关于如何构建Netflix,Tinder或Facebook系统等的实际用例讨论。

  • Tushar Roy’s System Design Videos: While Tushar is very good in LC Hard questions, he also has 5 great System Design videos. I recommend watching these videos after Gaurav’s, as Gaurav gives you a solid foundation in system design, and Tushar’s videos assume some of that knowledge.

    Tushar Roy的系统设计视频 尽管Tushar在LC Hard问题上非常出色,但他也有5个出色的系统设计视频。 我建议您在Gaurav之后观看这些视频,因为Gaurav为您提供了坚实的系统设计基础,而Tushar的视频假定了一些知识。

For me personally, since I had worked on quite a few distributed systems before, I was able to grasp the general idea pretty quickly even though I had not used some of the new technology mentioned in the videos above. After watching enough videos, I was able to generalize most distributed system into the following layers:

就我个人而言,由于我以前曾在许多分布式系统上工作,因此即使我没有使用上面视频中提到的某些新技术,也能够很快掌握总体思路。 看完足够的视频后,我能够将大多数分布式系统归纳为以下几层:

  • Clients (PC/Mobile apps, browser)

    客户端(PC /移动应用,浏览器)
  • A distributed Load Balancer to handle client requests

    分布式负载均衡器来处理客户端请求
  • Location-based Content Delivery Network (CDN) or In-memory Cache to quickly deliver large and relatively static content (videos and images) to clients that are geographically closer to the CDN/Cache.

    基于位置的内容交付网络(CDN)或内存中缓存,可将较大且相对静态的内容(视频和图像)快速交付给地理位置更接近CDN / Cache的客户端。
  • A series of microservices to handle various business logic, such as authentication, serving/saving user content, deliver messages between users.

    一系列微服务可处理各种业务逻辑,例如身份验证,服务/保存用户内容,在用户之间传递消息。
  • Communications between microservices are sent via a distributed messaging system.

    微服务之间的通信是通过分布式消息传递系统发送的。
  • A distributed database to save user content and messages. Optionally, add a distributed caching layer before the database to improve read/write throughput.

    用于保存用户内容和消息的分布式数据库。 (可选)在数据库之前添加分布式缓存层,以提高读/写吞吐量。

行为问题 (Behavior Questions)

I think behavior questions are the easiest part of the interview. Unfortunately, they also carry the least amount of weight in an interview evaluation. Sure enough, tech companies know that it is easy to put on a “nice person” personality and say the right thing in a behavioral interview. But it is much harder to train yourself to be a good coder.

我认为行为问题是面试中最简单的部分。 不幸的是,他们在面试评估中也承担了最少的重量。 毫无疑问,科技公司知道,摆出“好人”的性格并在行为面试中说正确的话很容易。 但是要训练自己成为一个好的编码员要困难得多。

For a career switcher, the most important question to prepare for is, of course, “Why are you looking to switch industries?” Hopefully, with the project you built in Step 1, you can probably knock this question out of the park by showcasing your project and your passion for the new industry and the company you are applying for.

对于职业转换者而言,最重要的问题当然是“为什么要转换行业?” 希望,通过您在第1步中构建的项目,您可以通过展示您的项目以及对新兴行业和您所申请的公司的热情来解决这个问题。

Here are some other behavioral questions to prepare for:

以下是一些其他行为方面的问题需要准备:

  • Why do you want to work for my company/my group?

    您为什么要为我的公司/小组工作?
  • Give an example of a goal you reached and tell me how you achieved it.

    举例说明您达到的目标,并告诉我您是如何实现的。
  • Give an example of a goal you didn’t meet and how you handled it.

    举例说明您未达到的目标以及处理方式。
  • Describe a stressful situation at work and how you handled it.

    描述工作中的压力情况以及如何处理。
  • Have you been in a situation where you didn’t have enough work to do?

    您是否处在没有足够工作要做的情况下?
  • Have you ever made a mistake? How did you handle it?

    你有没有犯错? 你是怎么处理的呢?
  • Describe a situation when you had a disagreement with your coworker/boss/subordinate, and how did you handle it?

    描述一下您与同事/老板/下属有分歧的情况,以及如何处理?

The key to all behavioral questions is to end on a positive note. For example, even if you are asked about a disagreement with a co-worker or a failure in your career, truthfully describe what happened, but more importantly mention what you learned from it. Talk about how it helped you become a more effective team member/engineer when similar situations arose again.

所有行为问题的关键都在于正面评价。 例如,即使被问到与同事的分歧或您的职业失败,也应如实描述发生的事情,但更重要的是提及从中学到的东西。 讨论当再次出现类似情况时,它如何帮助您成为更有效的团队成员/工程师。

步骤3.通过多个渠道申请 (Step 3. Apply via Multiple Channels)

I started to monitor the ML Engineer job market in the Bay Area closely at the start of June, right after I published my blogs on DeepPiCar. At the same time, I started my one month of intensive full-time coding preparation (about 200 hours total).

在我在DeepPiCar上发布博客之后,我从6月初开始密切监视湾区ML工程师的就业市场。 同时,我开始了为期一个月的强化全职编码准备工作(总共约200个小时)。

By the end of June, even though I didn’t feel quite ready, I started to apply to companies. The reason is that there is a 1–2 week lead time between when I sent in my resumes and the phone interviews. Via multiple channels, I made contact with over 20 companies and did over 30 phone interviews. Sometimes multiple phone interviews with the same company.

到了6月底,尽管我还没有做好充分的准备,但我还是开始向公司申请。 原因是从发送简历到电话面试之间需要1-2周的时间。 我通过多种渠道与20多家公司进行了联系,并进行了30多次电话采访。 有时会与同一家公司进行多次电话采访。

简历—首先列出相关内容 (Resume — List the relevant stuff first)

I won’t discuss resume writing too much, as there are already many great articles on it. My focus is on how to do it from a career switcher’s point of view so that recruiters will be able to quickly identify you as a good fit for the new industry/job function.

我不会过多地讨论简历写作,因为已经有很多很棒的文章。 我的重点是从职业转换者的角度来看如何做到这一点,以便招聘人员能够快速地确定您是否适合新的行业/职位职能。

Remember that I was changing from a quant developer in Finance to an ML Engineer in Tech - so it was doubly tricky, as it was both a role shift and industry shift. Again, my projects came to the rescue. I listed them at the top of my work experience, as “Personal Projects”. Yes, even though they are not exactly “Work”, they were my work, and were highly relevant to what I wanted to do as my next job.

请记住,我正在从财务领域的定量开发人员转变为技术领域的ML工程师-因此,这既棘手又麻烦,因为它既是角色转变又是行业转变。 同样,我的项目得到了拯救。 我将它们列为我的工作经验中最重要的部分,称为“个人项目”。 是的,即使它们并非完全是“工作”,但它们是我的工作,并且与我下一份工作要完成的工作高度相关。

You should know that most recruiters don’t read past the first page of a resume. If they can’t spot the keywords they are looking for in 10–20 sec, your resume is tossed aside. I also listed the skill sets (and all the keywords) relevant to the new job at the top half of the first page of my resume. See below.

您应该知道,大多数招聘人员不会阅读简历的第一页。 如果他们在10到20秒内找不到他们要寻找的关键字,您的简历就会被抛在一边。 我还在简历第一页的上半部分列出了与新工作相关的技能集(以及所有关键字)。 见下文。

LinkedIn — Let them come to You!

LinkedIn —让他们来找你!

The best job applications are the ones you never have to send out. After I posted my DeepPiCar blog posts on LinkedIn, I was excited to receive so many messages/calls from recruiters, including from some huge self-driving companies, asking me if I would be interested in their ML Engineer roles.

最好的应用程序是您永远不必发送的应用程序。 当我在LinkedIn上发布DeepPiCar博客帖子后,我很高兴收到招聘人员(包括一些大型自动驾驶公司)的这么多消息/来电,问我是否对他们的ML工程师职位感兴趣。

I was surprised by the power of Medium blogs and LinkedIn posts. But be sure to mark yourself as “open to opportunities” in the LinkedIn Privacy Settings, so that recruiters can easily find you. When recruiters contacted me, I almost always got a phone interview.

我对中型博客和LinkedIn帖子的强大功能感到惊讶。 但是请确保在LinkedIn隐私设置中将自己标记为“开放机会”,以便招聘人员可以轻松找到您。 当招聘人员联系我时,我几乎总是接到电话面试。

Internal Referrals — Have a strong advocate

内部推荐人-坚决拥护

I would say the 2nd best job applications are the ones submitted by internal referrals. I had an internal referral at both Facebook and Google. I failed my first Facebook interview badly, but because my referral gave me a strong recommendation, Facebook offered to let me try again. Luckily, I passed the 2nd phone screen a month later.

我想说第二好的工作申请是内部推荐人提交的。 我在Facebook和Google都有内部推荐人。 我第一次在Facebook面试时严重失败,但是由于我的推荐给了我强烈的建议,Facebook提出让我再试一次。 幸运的是,一个月后,我通过了第二个电话屏幕。

With Google, it was even more surprising. Partly because of my strong referral, and partly because I told them I had other on-sites coming, they skipped me directly to on-site interviews, even though I was a remote candidate (I live in Chicago, by the way).

有了Google,情况就更加令人惊讶。 一方面是由于我的推荐力强,另一方面是因为我告诉他们我还有其他现场要来,尽管我是一名远程候选人(顺便说一下,我住在芝加哥),他们还是直接跳过了我的现场采访。

So I recommend that you find any of your family member/friends/classmates that work in one of the tech companies that you want to join. If none of them work there, maybe they know someone who does. Please ask your friends to introduce you to them, and maybe have them submit your resume via internal referral. Your chances of getting a phone interview are much higher that way.

因此,我建议您找到在您想加入的一家科技公司中工作的家人/朋友/同学。 如果他们都不在那里工作,也许他们认识某个人。 请要求您的朋友向您介绍他们,也许让他们通过内部推荐提交您的简历。 这样,您获得电话采访的机会就高得多。

Another way is to use your LinkedIn network wisely. You can search for people that work for a specific company, and ask one of your mutual friends to introduce you two. If not, send the person a LinkedIn Mail.

另一种方法是明智地使用您的LinkedIn网络。 您可以搜索在特定公司工作的人,并请您的一个共同朋友向您介绍两个。 如果不是,请向该人发送LinkedIn邮件。

Note that if you send a lot of LinkedIn Mail, you need LinkedIn Premium. I signed up for about 3 months of LinkedIn Premium (about $30/month) and was able to connect with a lot more people directly. Some of the connections lead to interviews. As a side benefit, I received many more recruiter messages than before, because I believe that the LinkedIn algorithm ranked me ahead of non-paying users.

请注意,如果您发送大量LinkedIn邮件,则需要LinkedIn Premium。 我注册了大约3个月的LinkedIn Premium(每月约30美元),并且能够直接与更多人联系。 有些联系导致面试。 作为附带的好处,我收到的招聘信息比以前更多,因为我认为LinkedIn算法使我在非付费用户中排名第一。

第三方招聘机构 (3rd Party Recruiting Agencies)

Overall, I felt that most 3rd party agencies didn’t work well for my job search this time. As a reference, when I looked for finance jobs in the past, I exclusively used executive search firms, and the results were great. But most of the tech giants don’t use 3rd party recruiting agencies. The only agencies that worked well for me were TripleByte and DeepLearning.ai, which I will discuss below.

总体而言,我觉得这次大多数第三党派代理机构在我的求职工作中表现不佳。 作为参考,当我过去寻找财务工作时,我只使用了猎头公司,结果很好。 但是大多数科技巨头并不使用第三方招聘机构。 唯一对我有效的代理机构是TripleByteDeepLearning.ai ,我将在下面进行讨论。

TripleByte —跳过电话采访 (TripleByte — Skip the phone interviews)

TripleByte is a unique recruiting agency. Its appeal to the candidate is that once the candidate passes TripleByte’s comprehensive 2-hour live tech screening test, they can go directly on-site with many companies. It is also appealing to companies because TripleByte weeds out most of the weak candidates for them, saving their engineers hours of phone screening time.

TripleByte是一家独特的招聘公司。 它对候选人的吸引力在于,一旦候选人通过了TripleByte全面的2小时实时技术筛选测试,他们就可以直接与许多公司进行现场交流。 这对公司也很有吸引力,因为TripleByte为他们淘汰了大多数弱者,从而节省了工程师数小时的电话筛选时间。

When I passed TripleByte’s test, I could choose from about 200 companies. They were mostly small startups, but with quite a few large companies, such as Apple, Adobe, American Express, etc. I ended up interviewing with the Apple Siri group (huge), Zoox (medium), and Determined.ai (small) on-site. All of them are doing amazing engineering work.

当我通过TripleByte的测试时,我可以从大约200家公司中进行选择。 他们大多是小型初创公司,但拥有相当多的大型公司,例如Apple,Adobe,American Express等。我最后采访了Apple Siri集团 (庞大), Zoox (中型)和确定的 .ai (小型)现场。 他们都在做惊人的工程工作。

I highly recommend going through the TripleByte process, as it identified my weak points and saved me from many hours of phone screening and related headaches. Take TripleByte’s online test here.

我强烈建议您执行TripleByte流程,因为它可以识别我的弱点,并使我免于花费大量时间进行电话筛选和相关的头痛工作。 在此处进行TripleByte的在线测试

DeepLearning.aiWorkera.ai —有抱负的数据科学家/机器学习工程师的福音 (DeepLearning.ai and Workera.ai — The Gospel for Aspiring Data Scientists/ML Engineers)

If you are an aspiring Data Scientist/ML Engineer, you must have heard or taken one of Andrew Ng’s Machine Learning/Deep Learning courses, offered by Coursera/Deep Learning.ai.

如果您是一位有抱负的数据科学家/ ML工程师,那么您一定已经听说或参加过Coursera / Deep Learning.ai提供的Andrew Ng的机器学习/深度学习课程。

Actually, DeepLeaning.ai has two parts: one part is education, which is very well known, and the other part (Workera.ai) is recruiting, which is lesser-known. That’s because Workera.ai is quite new, only started mid-2019. They don’t have nearly as many affiliated firms as TripleByte, but I believe they are quickly ramping up this effort. They also make you take a test.

实际上,DeepLeaning.ai有两部分:一部分是教育,这是众所周知的,而另一部分( Workera.ai )是招聘,而鲜为人知。 这是因为Workera.ai是一个非常新的内容,仅在2019年中期才开始。 他们没有像TripleByte那样多的关联公司,但我相信他们正在Swift加大这项工作。 他们也使您接受测试。

The differences between Workera.ai’s and TripleByte’s tests are two folds. First, it is a test designed for Data Scientists(DS)/ML Engineers, where TripleByte has tests for general software engineers as well as ML engineers — the ML engineer test is brand new.

Workera.ai和TripleByte的测试之间的区别是两个方面。 首先,这是为数据科学家(DS)/ ML工程师设计的测试,其中TripleByte为通用软件工程师和ML工程师提供了测试-ML工程师测试是全新的。

Second, the Workera.ai test is non-binding, meaning passing its test does NOT skip you straight to on-site interviews. Instead, Workera.ai refers you to DS/ML groups in a few of their affiliated companies, and essentially brings you to the front of the queue. But you still have to go through the whole phone/on-site interview process.

其次,Workera.ai测试没有约束力,这意味着通过测试不会直接跳过您进入现场采访的时间。 取而代之的是,Workera.ai将您引荐给其一些关联公司中的DS / ML组,并且实际上使您进入了队列的前端。 但是您仍然必须经历整个电话/现场采访过程。

I feel it is still very valuable as Andrew Ng’s reputation and network in Deep Learning space in the Bay Area are quite wide-reaching. I ended up interviewing with Pinterest and Scale.ai’s ML groups. I don’t think I would’ve gotten interviews from either company had I just applied directly. Click here to apply to Workera.ai’s AI Program for Experienced Engineers.

我觉得它仍然非常有价值,因为吴安德(Andrew Ng)在湾区深度学习领域的声誉和网络覆盖面很广。 我最终采访了PinterestScale.ai的ML小组。 如果我直接申请,我认为我不会得到两家公司的面试。 单击此处以申请Workera.ai的有经验工程师AI计划

在线求职板-不要过分依赖他们 (Online Job Boards — Don’t rely heavily on them)

To widen my search, I had also set up job search alerts at a few online job boards, such as LinkedIn, GlassDoor, Indeed and ZipRecruiter, so they would notify me of any new job postings matching my search criteria. Over time, I did receive a few phone interviews after applying.

为了扩大我的搜索范围,我还在一些在线求职论坛(例如LinkedIn,GlassDoor,Indeed和ZipRecruiter)上设置了求职提醒,以便他们将与我的搜索条件相匹配的任何新职位发布通知我。 随着时间的流逝,我确实在申请后收到了一些电话面试。

Overall, I have found the signal-to-noise ratio to be somewhat low, meaning I would get a lot of daily emails, but very few good job functions from top companies. But don’t ignore this channel altogether. You need to cast your net wide initially, and maybe you will catch some fish via this channel

总的来说,我发现信噪比有点低,这意味着我会收到很多日常电子邮件,但是顶级公司的出色工作很少。 但是,请不要完全忽略此频道。 您最初需要将网投到较宽的范围内,也许您会通过此渠道钓到一些鱼

直接申请-确实无效 (Direct Apply — Doesn’t really work)

In the old days, people would send a nice cover letter with a resume to the companies, and they would expect to hear back from someone from the HR department. But this time around, this approach didn’t work for me at all!

在过去,人们会向公司发送一份很好的求职信和简历,他们希望能收到人事部门的回音。 但是这次,这种方法对我根本不起作用!

I identified about 10 companies (mostly autonomous vehicle companies) that I wanted to work for, and directly applied on their company websites, under the career page. To my surprise, I didn’t hear back from ANY of them, not even a rejection email!

我确定了大约10个我想工作的公司(主要是自动驾驶汽车公司),并直接在其职业页面下的公司网站上应用。 令我惊讶的是,我没有收到任何人的回音,甚至没有拒绝邮件!

Luckily, applying to each company online didn’t take that long. I would say, still apply to any companies that are interesting to you but do not hold your breath to hear back.

幸运的是,在线申请每家公司并没有花那么长时间。 我想说,仍然适用于您感兴趣但不屏息的任何公司。

分阶段申请工作 (Apply for Jobs in Phases)

Try to apply to a few companies that you are not so excited about or that you think are easier to get into in your first phase. Then apply to your dream job/companies in a later phase. You can use your first phase to practice, improve, if you get offers, even leverage those for better offers from your dream companies.

尝试向一些您不太感兴趣或认为您更容易进入第一阶段的公司提出申请。 然后在以后的阶段申请理想的工作/公司。 您可以在第一阶段练习,改进(如果获得报价),甚至利用那些从梦想中的公司获得更好的报价。

This may sound quite controversial and may seem like a very “materialistic” approach, but think about it: many people would work at a less prestigious company, with the plan to gain experience and then move into a more prestigious company a few years later. And who knows, if you don’t land your dream job, at least you have a few offers to choose from among your first phase companies.

这听起来似乎很有争议,而且似乎是一种非常“唯物主义”的方法,但请考虑一下:许多人会在一家不太负盛名的公司工作,并计划获得经验,然后在几年后转入一家更有声望的公司。 谁知道,如果您没有找到理想的工作,至少您可以从第一阶段的公司中选择几项。

井井有条:保存日志 (Get Organized: Keep a log book)

When you are applying via so many channels, it is hard to keep track of which companies you applied to, and which stages you are at with each company.

当您通过多种渠道申请时,很难跟踪您申请了哪些公司,以及每个公司处于哪个阶段。

To help with this, I maintain a detailed interview log book. It's organized by interview stages (Applied, Interview, Offer, Rejected, etc) and then by companies. Each company is essentially a page, with background information and a list of events in chronological order, such as phone calls and interviews. This way, I can see which companies that I have applied and interviewed with so that I can do the proper follow up.

为此,我维护了详细的采访日志。 它是由面试阶段(应用,面试,要约,拒绝等)然后由公司组织的。 每个公司本质上都是一个页面,上面有背景信息和按时间顺序排列的事件列表,例如电话和访谈。 这样,我可以查看已申请并采访过的公司,以便进行适当的跟进。

步骤4:面试 (Step #4: Interviews)

4.1电话采访 (4.1 Phone Interviews)

最初的人力资源电话 (Initial HR Calls)

Usually, the first contact with a company is a recruiter’s email. The recruiter asks you for a time for an initial phone call, which is usually a “fit” call, where you discuss your interests and background and why you would be a good fit for the role. Don’t stress too much over the detail. This will most likely be a short call, and the recruiter will want to move you to the next stage, which is the Technical Phone Interview.

通常,与公司的第一次联系是招聘人员的电子邮件。 招聘人员要求您花一些时间打一个初始电话,通常是一个“合适的”电话,在这里您讨论自己的兴趣和背景以及为什么您会很适合这个职位。 不要在细节上强调太多。 这很可能是一个简短的电话,招聘人员将希望将您转到下一阶段,即技术电话面试。

技术电话面试之前 (Before the Technical Phone Interview)

One or two days before the technical phone interview, be sure to read up on Glassdoor and Leetcode for previously asked interview questions for this company. For big companies, such a Google and Facebook, this does NOT work well, as there are hundreds of previously asked questions.

在进行技术电话面试之前的一两天,请务必先阅读GlassdoorLeetcode,以获取之前针对该公司的面试问题。 对于大型公司(例如Google和Facebook)而言,这种方法效果不佳,因为之前有数百个问题。

But for smaller companies, this is somewhat effective. I would scroll through many posts on Glassdoor and copy down any specific technical questions. Then I would try to solve all of them. During the phone interviews, it is pretty rare to bump into the exact questions posted online, but doing this company’s past problems better prepares you for this company’s phone interview.

但是对于较小的公司,这有些有效。 我将浏览Glassdoor上的许多帖子,并抄下任何特定的技术问题。 然后,我将尝试解决所有问题。 在电话采访中,很少碰到在线发布的确切问题,但是处理公司过去的问题会更好地为您进行公司电话采访做准备。

This is analogous to practicing past years’ final questions before taking the final exam of the same professor — the questions may be different, but the style and type of questions would be similar.

这类似于在参加同一位教授的期末考试之前练习过去几年的最后问题—问题可能有所不同,但问题的风格和类型将相似。

技术电话面试 (Technical Phone Interviews)

Technical phone interviews are where the rubber meets the road. The stage is designed to separate the capable candidates from the less-capable candidates. I have read that only about 10–20% of the candidates can pass the technical phone screens of top tech companies.

技术电话采访是橡胶遇到的障碍。 该阶段旨在将有能力的候选人与能力较弱的候选人分开。 我读过,只有大约10%到20%的候选人可以通过顶尖高科技公司的技术电话屏幕。

The measuring stick is simply a coding test, NOT how well you talk, NOT how experienced you are at your current job, NOT how many programming languages you know, NOT even your personal projects. Most interviewers simply want you to complete a coding exercise in whatever programming language you are most comfortable in.

量尺仅仅是一个编码测试,不是您的讲话水平,您当前工作的经验,不是您知道多少编程语言,甚至不是您的个人项目。 大多数面试官只是希望您以您最熟悉的编程语言完成编码练习。

Personally, I don’t quite agree that this is the best way to find the best engineers. For example, I've worked with many very experienced software engineers. Some are expert GUI/app developers, some are C++ experts, others are low-level Linux gurus, but many of them tell me that they would fail miserably in a timed Algorithms and Data Structures (A&DS) coding test.

我个人并不完全同意这是找到最好的工程师的最佳方法。 例如,我曾与许多经验丰富的软件工程师合作。 有些是GUI / app专家开发人员,有些是C ++专家,有些是底层Linux专家,但是许多人告诉我,他们在定时算法和数据结构(A&DS)编码测试中会惨败。

But since this is the only game in town, in order to break into the tech industry, you have to “Crack the Coding Interview”

但是,由于这是镇上唯一的游戏,因此要进入科技行业, 您必须“破解编码面试” ……

The coding exercise is always done via a shared online notepad, such as CoderPad or Google Docs, where both you and the interviewer can type at the same time.

编码练习始终通过共享的在线记事本(例如CoderPad或Google Docs)完成,您和访问者都可以在其中同时键入内容。

While some companies, like Google and Facebook, only ask you to write down the correct algorithms and won’t ask you to run your code, many companies expect you to come up with fully working code within the 45–60 minutes time window.

虽然有些公司(例如Google和Facebook)只要求您写下正确的算法,而不会要求您运行代码,但许多公司希望您在45-60分钟的时间范围内提供完全有效的代码。

In addition to the shared notepad, most companies conduct voice-only calls, while some companies conduct phone interviews via Zoom/Skype video calls.

除了共享的记事本之外,大多数公司还进行纯语音呼叫,而有些公司则通过Zoom / Skype视频通话进行电话采访。

Personally, phone screens are the hardest part of the interview process for me. For reference, I passed about only 50% of my technical phone screens. They are difficult because:

就我个人而言,电话屏幕是面试过程中最难的部分。 作为参考,我仅通过了约50%的技术电话屏幕。 他们之所以困难是因为:

  • The 45–60 min time window is usually tight for me, as I am not fast at typing. (Believe it or not, I am faster at whiteboard coding for reasons I will discuss in the on-site interview section.)

    对于我来说,45-60分钟的时间窗口通常很紧,因为我打字的速度并不快。 (信不信由你,由于我将在现场采访部分中讨论的原因,我在白板编码方面会更快。)
  • You need to code while talking with the interviewer throughout the call. Most people, including myself, prefer to discuss a design/approach first, and then type the code and debug in silence. But if you don’t talk for 20–30 min during your implementation stage, it would be very awkward.

    在整个通话过程中,您需要与采访员交谈时进行编码。 包括我自己在内的大多数人都喜欢先讨论设计/方法,然后键入代码并进行静默调试。 但是,如果您在实施阶段不说话20至30分钟,那将会很尴尬。
  • Online notepad is text-based and is not a whiteboard. So it is hard to draw a diagram or illustrate your code workflow graphically.

    在线记事本是基于文本的,不是白板。 因此,很难绘制图表或以图形方式说明您的代码工作流程。
  • Online notepads are NOT IDEs. While most of the online notepads, such as CoderPad, can do decent syntax highlighting and indentation, they are not full-blown IDEs. For example, they can not do word auto-completion. They can not highlight obvious syntax errors while you type and they certainly don’t support line-by-line debugging. So a lot of times, I had to resort to the “old faithful” print statements for debugging, which is very slow and clumsy.

    联机记事本不是IDE。 尽管大多数在线记事本(例如CoderPad)可以进行不错的语法突出显示和缩进,但它们并不是成熟的IDE。 例如,他们不能执行单词自动补全。 它们在您键入时无法突出显示明显的语法错误,并且它们当然不支持逐行调试。 因此,很多时候,我不得不诉诸于“老旧的”打印语句进行调试,这非常缓慢而且笨拙。
  • Voice calls are non-visual. As I tried to explain my approach over the phone, I couldn't draw a picture and couldn't look at the interviewer’s facial expression or body language to gauge if I was on the right track.

    语音通话是非可视的。 当我试图通过电话解释自己的方法时,我无法画画,也无法查看面试官的面部表情或肢体语言,以判断我是否走上了正轨。

Here are what I did to combat the above difficulties:

以下是我为克服上述困难所做的工作:

  • Use a good phone headset. This should be very obvious because you want to free both of your hands to code! So invest in a good Bluetooth headset and make sure it is fully charged before phone interviews.

    使用优质的电话耳机。 这应该非常明显,因为您想腾出双手来编写代码! 因此,请投资购买优质的蓝牙耳机,并在电话采访之前确保已充满电。

  • Keep “Chit-chat” to a minimum. In my first couple of interviews, I would try to give the interviewer a good impression of myself. So I would spend about 5–7 min talking about my background, my experiences, and then my self-driving car. Sometimes, the interviewer would ask me a few questions, and it could drag on to the first 10 minutes! What I quickly discovered was that all this “chit-chat” time ate into the total 45 min allotted for my interview, which meant I had less time to work on the coding problem. In fact, most interviewers are there to gauge your coding skills ONLY, and your strong work experience is not relevant to them at this time. So I learned to shorten the “chit-chat” to about less than 2 min at the beginning, and leave my questions to the end of the interview. In fact, if I finished the coding problem successfully, the interviewers usually are more willing to talk with me a bit longer than the 45 min slot. On the other hand, if you “bombed” the coding interview, chatting won’t change the outcome of the interview, anyways. Note that this tip applies to on-site interviews as well.

    尽量减少“闲聊” 。 在我的前两次面试中,我会尽力给面试官一个好印象。 因此,我将花大约5到7分钟来谈论我的背景,经历和我的自动驾驶汽车。 有时,面试官会问我几个问题,这可能会拖到最初的10分钟! 我很快发现,所有这些“闲聊”时间都花在了为我的采访分配的总共45分钟内,这意味着我有更少的时间来处理编码问题。 实际上,大多数面试官只是在这里评估您的编码技能,而您目前的丰富工作经验与他们无关。 因此,我学会了在开始时将“闲聊”的时间缩短到不到2分钟,然后将我的问题留给面试结束。 实际上,如果我成功完成了编码问题,面试官通常比45分钟的时间更愿意与我交谈。 另一方面,如果您“轰炸”了编码面试,无论如何,聊天不会改变面试的结果。 请注意,本技巧也适用于现场采访。

  • Use two monitors. One monitor would be for the shared notepad, and the other monitors would be for googling and IDE, etc. Most laptops nowadays have ports for external monitors. Be sure you connect your laptop to at least one external monitor when you code, so you won’t have to flip back and forth between windows.

    使用两个监视器。 一台显示器用于共享记事本,另一台显示器用于谷歌搜索和IDE等。如今,大多数笔记本电脑都具有用于外接显示器的端口。 Be sure you connect your laptop to at least one external monitor when you code, so you won't have to flip back and forth between windows.

  • Use an external mouse. If you use a laptop, be sure to invest in an external mouse. For me, using an external mouse significantly improves my ability to select, copy and paste code.

    Use an external mouse . If you use a laptop, be sure to invest in an external mouse. For me, using an external mouse significantly improves my ability to select, copy and paste code.

  • Use an IDE. Even though you are coding in the shared notepad, sometimes, to troubleshoot, it may be better to copy-paste the code into your IDE, fix syntax errors and bugs, and then copy the working code back into the shared notepad. Most interviewers won’t mind, as long as you can get the code working within the allocated time. They want to see you succeed as well! Before your phone interview, be sure to set up an empty project where you can quickly paste in code and run. You don’t want to spend precious interview time creating a project and setting up run parameters. Having an IDE open also means that you can directly paste in your code at the end of the interview so you can save a copy of the questions and your solution for further analysis.

    Use an IDE . Even though you are coding in the shared notepad, sometimes, to troubleshoot, it may be better to copy-paste the code into your IDE, fix syntax errors and bugs, and then copy the working code back into the shared notepad. Most interviewers won't mind, as long as you can get the code working within the allocated time. They want to see you succeed as well! Before your phone interview, be sure to set up an empty project where you can quickly paste in code and run. You don't want to spend precious interview time creating a project and setting up run parameters. Having an IDE open also means that you can directly paste in your code at the end of the interview so you can save a copy of the questions and your solution for further analysis.

  • Use a programming language that saves you from typing. Most of the tips here are designed to help you save time TYPING, so you can spend more time THINKING about the solution. So try to choose a language that can do a lot with very little typing. My best languages are C++ and Python. I choose Python for all my interviews, unless an interviewer specifically requests C++, because it is so much more expressive compared with C++.

    Use a programming language that saves you from typing . Most of the tips here are designed to help you save time TYPING, so you can spend more time THINKING about the solution. So try to choose a language that can do a lot with very little typing . My best languages are C++ and Python. I choose Python for all my interviews, unless an interviewer specifically requests C++, because it is so much more expressive compared with C++.

  • Make good use of Google. This is one advantage of a phone interview over an on-site interview because you can google! If you are not too familiar with the API of a function, or certain syntax of a language, feel free to google it. It is understood you can google during a phone interview. Heck, if your interviewer is lazy and grabbed a problem verbatim from LC, then congratulations! ;-)

    Make good use of Google. This is one advantage of a phone interview over an on-site interview because you can google! If you are not too familiar with the API of a function, or certain syntax of a language, feel free to google it. It is understood you can google during a phone interview. Heck, if your interviewer is lazy and grabbed a problem verbatim from LC, then congratulations! ;-)

  • Talk through your approach thoroughly with the interviewer BEFORE you start implementation. For my first few interviews, I would start coding after having a rough idea of what to do, thinking I could flesh out the details as I coded. This was NOT a good idea. Try to flesh out as much as detail during your initial discussion with the interviewer. This will actually save you lots of time later on. The interviewer is, of course, very familiar with all the good and bad approaches to the problem. If you present a suboptimal or incorrect approach, they may steer you towards a more optimal one and/or may point out bugs/corner cases you forgot to consider. This can save you tons of implementation time down the road. But be sure to cover as many corner cases as possible on your own, as you will get points deducted if the interviewer has to point out the missing corner cases.

    Talk through your approach thoroughly with the interviewer BEFORE you start implementation. For my first few interviews, I would start coding after having a rough idea of what to do, thinking I could flesh out the details as I coded. This was NOT a good idea. Try to fl e sh out as much as detail during your initial discussion with the interviewer . This will actually save you lots of time later on . The interviewer is, of course, very familiar with all the good and bad approaches to the problem. If you present a suboptimal or incorrect approach, they may steer you towards a more optimal one and/or may point out bugs/corner cases you forgot to consider. This can save you tons of implementation time down the road. But be sure to cover as many corner cases as possible on your own, as you will get points deducted if the interviewer has to point out the missing corner cases.

  • Solving the problem is better than not solving the problem. This statement may not be that obvious when you are searching for the most optimal solution. Sometimes, if I couldn’t conjure up the most optimal solution, I would propose and finish implementing a suboptimal solution. In any case, the fact that I came up with some working solution (albeit suboptimal) gave the interviewer a decent data point to compare me to others. In some instances, the interviewers told me, after the fact, that the “optimal” solution that I thought was possible does not exist! As I learned from my own failed experiences, not coming up with a working solution would certainly be a FAILED interview.

    Solving the problem is better than not solving the problem . This statement may not be that obvious when you are searching for the most optimal solution. Sometimes, if I couldn't conjure up the most optimal solution, I would propose and finish implementing a suboptimal solution. In any case, the fact that I came up with some working solution (albeit suboptimal) gave the interviewer a decent data point to compare me to others. In some instances, the interviewers told me, after the fact, that the “optimal” solution that I thought was possible does not exist! As I learned from my own failed experiences, not coming up with a working solution would certainly be a FAILED interview.

Remember, at this point, you should NOT be focusing on Systems Design questions, as they are only asked during on-site interviews because it requires a whiteboard to draw diagrams.

Remember, at this point, you should NOT be focusing on Systems Design questions, as they are only asked during on-site interviews because it requires a whiteboard to draw diagrams.

Online Coding Tests (Online Coding Tests)

I have encountered very few tech companies that still give online coding tests, such as HackerRank or Codility, although quite a few finance companies still give those. The reason to give these tests is to save hiring companies’ manpower.

I have encountered very few tech companies that still give online coding tests, such as HackerRank or Codility, although quite a few finance companies still give those. The reason to give these tests is to save hiring companies' manpower.

Usually, you would get a link to an online test from a company’s recruiter. There are usually 3–5 coding questions, which you need to complete within a 2–3 hours window. You need to complete it anytime within 7–10 days of the recruiter’s email. No human is overlooking you while you take the test, and you need to pass most test cases to pass this stage.

Usually, you would get a link to an online test from a company's recruiter. There are usually 3–5 coding questions, which you need to complete within a 2–3 hours window. You need to complete it anytime within 7–10 days of the recruiter's email. No human is overlooking you while you take the test, and you need to pass most test cases to pass this stage.

Here are some tips for online coding tests:

Here are some tips for online coding tests:

  • Use an IDE: you can write and test your code entirely in your favorite IDE and then paste into the online test page to run the official test cases.

    Use an IDE : you can write and test your code entirely in your favorite IDE and then paste into the online test page to run the official test cases.

  • Read all the problems before you start. Some online tests are designed so that most people can’t complete all questions within the allotted time. So be sure to read all the questions before you start any problems and start on the easier questions first so that you can finish as many questions as possible.

    Read all the problems before you start . Some online tests are designed so that most people can't complete all questions within the allotted time. So be sure to read all the questions before you start any problems and start on the easier questions first so that you can finish as many questions as possible.

  • Get it working first. For most of the online tests, time is a scarce resource. So the goal is generally to pass as many test cases as possible, not necessarily ALL the test cases. If you have a working solution, it should pass most of the test cases. If your solution is not the most time-optimized, you may time out on a few test cases, which is fine. Just move on to solve the next problem, come back if you have more time left. (Note: DO NOT do this when you are writing production-level code. For production-level code, DO spend the time to get your algorithms right and cleaned up, and add enough documentation so that you and others can maintain your code in the future.)

    Get it working first . For most of the online tests, time is a scarce resource. So the goal is generally to pass as many test cases as possible, not necessarily ALL the test cases. If you have a working solution, it should pass most of the test cases. If your solution is not the most time-optimized, you may time out on a few test cases, which is fine. Just move on to solve the next problem, come back if you have more time left. (Note: DO NOT do this when you are writing production-level code. For production-level code, DO spend the time to get your algorithms right and cleaned up, and add enough documentation so that you and others can maintain your code in the future.)

  • Save a copy of the questions and your solutions for future analysis. This should be routine that you save ALL your interview questions regardless of whether they are phone/online/on-site questions.

    Save a copy of the questions and your solutions for future analysis. This should be routine that you save ALL your interview questions regardless of whether they are phone/online/on-site questions.

Take-Home Projects (Take-Home Projects)

A few companies give take-home projects before, or in lieu of, a technical phone screen. I had two companies that gave me take-home projects, both of which were Machine Learning related. I have found these projects to be much more enjoyable and more relevant to the job that I was applying for. So I wish more companies would give take-home projects in lieu of technical phone screens.

A few companies give take-home projects before, or in lieu of, a technical phone screen. I had two companies that gave me take-home projects, both of which were Machine Learning related. I have found these projects to be much more enjoyable and more relevant to the job that I was applying for. So I wish more companies would give take-home projects in lieu of technical phone screens.

But I do understand that it may not be as effective or as fair because 1) companies don’t know if you or your ML expert friend did the project, and 2) even if you did it yourself, how long did it take you?

But I do understand that it may not be as effective or as fair because 1) companies don't know if you or your ML expert friend did the project, and 2) even if you did it yourself, how long did it take you?

For take-home projects, since you typically need to spend a lot of time on them, make sure you are using your time wisely.

For take-home projects, since you typically need to spend a lot of time on them, make sure you are using your time wisely.

For a company that you are really excited about, yes, do spend the 8–10 hours do a nice job coding and documenting your approach and design decisions. For Scale.ai’s project, I spent at least 10 hours working on their project — even though the instruction told me to only spend about 2–3 hours. I did this because I thought it was fun and I learned a lot by exploring different ML approaches.

For a company that you are really excited about, yes, do spend the 8–10 hours do a nice job coding and documenting your approach and design decisions. For Scale.ai 's project, I spent at least 10 hours working on their project — even though the instruction told me to only spend about 2–3 hours. I did this because I thought it was fun and I learned a lot by exploring different ML approaches.

For companies you are not so excited about, don’t spend that much time, and save the time for more LC problems, so you can be better prepared for coding interviews in general.

For companies you are not so excited about, don't spend that much time, and save the time for more LC problems, so you can be better prepared for coding interviews in general.

Interview Scheduling (Interview Scheduling)

Once you have done a few phone interviews, you should be getting some on-site interview invitations. In the beginning stages of your phone interviews, your success rate will be somewhat low. I literally failed all of my first 4–5 phone interviews. Then I realized that I needed to focus on practicing more dynamic programming and recursive algorithms.

Once you have done a few phone interviews, you should be getting some on-site interview invitations. In the beginning stages of your phone interviews, your success rate will be somewhat low. I literally failed all of my first 4–5 phone interviews. Then I realized that I needed to focus on practicing more dynamic programming and recursive algorithms.

Your experience may be different, but don’t be discouraged when you get rejection emails in your interview process. Ask the recruiters for feedback and study more. There are a lot of companies out there for you to try.

Your experience may be different, but don't be discouraged when you get rejection emails in your interview process. Ask the recruiters for feedback and study more. There are a lot of companies out there for you to try.

Here are some interview scheduling tips:

Here are some interview scheduling tips:

  • Keep a detailed interview log: This is the same log mentioned in Step 2. Now is the time to start to keep track of when and what was discussed in each interview.

    Keep a detailed interview log : This is the same log mentioned in Step 2. Now is the time to start to keep track of when and what was discussed in each interview.

  • Put all interviews in your calendar and set reminders/alerts. You don’t want to miss a single interview because you forgot about it. Also, make sure you confirm the interview time zone. For simplicity, I always communicate to recruiters in their time zone (usually this is Pacific Time).

    Put all interviews in your calendar and set reminders/alerts . You don't want to miss a single interview because you forgot about it. Also, make sure you confirm the interview time zone. For simplicity, I always communicate to recruiters in their time zone (usually this is Pacific Time).

  • Schedule back-to-back phone interviews with at least 30 mins in between. This is because some interviewers may call 5–10 min late, and some interviewers may allow the interview to go over the time limit by 5–10 min. So if you set two phone interviews back-to-back, you may have to cut one short or miss the other call. Plus you need a 5–10 min break to clear your head and write down the interview notes.

    Schedule back-to-back phone interviews with at least 30 mins in between . This is because some interviewers may call 5–10 min late, and some interviewers may allow the interview to go over the time limit by 5–10 min. So if you set two phone interviews back-to-back, you may have to cut one short or miss the other call. Plus you need a 5–10 min break to clear your head and write down the interview notes.

  • Ask for a Second Chance. This may be a little known fact. If you fail the first phone interview, many companies will allow you to have a second chance. Most won’t offer it automatically, but would if you ask nicely. So always ask, but schedule it a few weeks after the first interview, so you have enough time to study. There usually won’t be a third chance unless you wait for 6 months.

    Ask for a Second Chance. This may be a little known fact. If you fail the first phone interview, many companies will allow you to have a second chance. Most won't offer it automatically, but would if you ask nicely. So always ask, but schedule it a few weeks after the first interview, so you have enough time to study. There usually won't be a third chance unless you wait for 6 months.

  • Stagger your interviews. I staggered my interviews in phases. I put the companies I believed were easier to pass in the earlier phase, and the harder-to-pass and more well-known ones in the later phases, which was about 2–3 weeks later. This way, if you discover you are weak in some topics, you have 2–3 weeks to study them.

    Stagger your interviews. I staggered my interviews in phases. I put the companies I believed were easier to pass in the earlier phase, and the harder-to-pass and more well-known ones in the later phases, which was about 2–3 weeks later. This way, if you discover you are weak in some topics, you have 2–3 weeks to study them.

  • Cluster your on-site interviews. Because most of the companies that I interviewed with are in the Bay Area, I tried to schedule all of the on-site interviews within a 1–2 weeks span, so I could fly out once and get all these on-site interviews done. For example, my Bay Area on-site interviews lasted 2 full weeks, during which I interviewed with 6 companies — 3 interviews per week. Some companies would be more willing to bring you on-site if they know you would be in town for other interviews. Also, they don’t have to pay for your plane ticket. Various companies paid for some of the hotel nights, and I had to cover the other nights. This was fine for me, since it saved me a lot of time, and I was able to cluster all on-site interviews together, so I could hear back the decisions from all of them around the same time.

    Cluster your on-site interviews. Because most of the companies that I interviewed with are in the Bay Area, I tried to schedule all of the on-site interviews within a 1–2 weeks span, so I could fly out once and get all these on-site interviews done. For example, my Bay Area on-site interviews lasted 2 full weeks, during which I interviewed with 6 companies — 3 interviews per week. Some companies would be more willing to bring you on-site if they know you would be in town for other interviews. Also, they don't have to pay for your plane ticket. Various companies paid for some of the hotel nights, and I had to cover the other nights. This was fine for me, since it saved me a lot of time, and I was able to cluster all on-site interviews together, so I could hear back the decisions from all of them around the same time.

4.2 On-Site Interviews (4.2 On-Site Interviews)

2–3 weeks before the on-site interview, start to focus on System Design questions. Many companies allow you to schedule on-site interviews up to 4–6 weeks after you pass the phone interview. This should give you ample time to prepare for both A&DS and System Design questions.

2–3 weeks before the on-site interview, start to focus on System Design questions. Many companies allow you to schedule on-site interviews up to 4–6 weeks after you pass the phone interview. This should give you ample time to prepare for both A&DS and System Design questions.

Normally, there are 4 to 5 45-minute interview sessions for each company’s onsite interview — 2 in the morning, lunch, and 2–3 in the afternoon. There will be 1 System Design, 1 Behavior and 2–3 A&DS coding interviews. Very few companies will ask you about math or brain teasers, so I wouldn’t spend a lot of time preparing for them.

Normally, there are 4 to 5 45-minute interview sessions for each company's onsite interview — 2 in the morning, lunch, and 2–3 in the afternoon. There will be 1 System Design, 1 Behavior and 2–3 A&DS coding interviews. Very few companies will ask you about math or brain teasers, so I wouldn't spend a lot of time preparing for them.

System Design Interviews (System Design Interviews)

This was covered in Step 2: Interview preparation. If you watched all the system design YouTube videos I recommended and can generalize it to a framework similar to what I outlined, you will be in pretty good shape.

This was covered in Step 2: Interview preparation. If you watched all the system design YouTube videos I recommended and can generalize it to a framework similar to what I outlined, you will be in pretty good shape.

Clarify the spec. One important technique of the System Design question is to clarify the features and functionality of the system early on. You want to define a set of features that is not too trivial and not too complex that you can’t finish within the 45 min time frame.

Clarify the spec. One important technique of the System Design question is to clarify the features and functionality of the system early on. You want to define a set of features that is not too trivial and not too complex that you can't finish within the 45 min time frame.

For example, when asked to design an Instant Messaging App, be sure to mention essential features such as:

For example, when asked to design an Instant Messaging App, be sure to mention essential features such as:

  • User authentication (this should be in most systems)

    User authentication (this should be in most systems)
  • One-to-one messaging

    One-to-one messaging
  • Group messaging

    Group messaging
  • User active status

    User active status
  • Offline messages (if you have time)

    Offline messages (if you have time)

For a 45 min session, I would not mention these non-essential features:

For a 45 min session, I would not mention these non-essential features:

  • voice calls

    voice calls
  • video calls

    video calls
  • multi-person calls

    multi-person calls
  • personal timelines (i.e. Facebook Stories)

    personal timelines (ie Facebook Stories)

Of course, if you are asked to design Skype, you would have to design for voice and video calls, but I wouldn’t include sharing computer desktops just to limit the feature set to a manageable scope.

Of course, if you are asked to design Skype, you would have to design for voice and video calls, but I wouldn't include sharing computer desktops just to limit the feature set to a manageable scope.

Watch for curveballs. During the interview, watch out for odd questions and be able to respond intelligently.

Watch for curveballs. During the interview, watch out for odd questions and be able to respond intelligently.

For example, when I was at the Facebook interview, I was asked how to design a simplified version of Google Search. I proceeded by drawing a pretty good high-level design on the whiteboard. Then the interviewer threw me a curveball:

For example, when I was at the Facebook interview, I was asked how to design a simplified version of Google Search. I proceeded by drawing a pretty good high-level design on the whiteboard. Then the interviewer threw me a curveball:

Interviewer: “So how many servers do you think you need?”

Interviewer: “So how many servers do you think you need?”

Me: “Well, this depends on how many people are using it and how beefy the servers are…”

Me: “Well, this depends on how many people are using it and how beefy the servers are…”

Interviewer: “Why do you need to know how beefy the servers are?”

Interviewer: “Why do you need to know how beefy the servers are?”

Me: “My thinking is that the actual usage is sort of like the numerator, the server hardware capability is like the denominator, and the number of servers depends on these two numbers.”

Me: “My thinking is that the actual usage is sort of like the numerator, the server hardware capability is like the denominator, and the number of servers depends on these two numbers.”

Interviewer: “NOPE, the hardware spec of a server is irrelevant.”

Interviewer: “NOPE, the hardware spec of a server is irrelevant.”

Me: “Surely hardware spec matters. If I can host a service with 10 beefy servers, I would probably need 100 laptops to host the same service”

Me: “Surely hardware spec matters. If I can host a service with 10 beefy servers, I would probably need 100 laptops to host the same service”

Interviewer: “Hardware spec is irrelevant.”

Interviewer: “Hardware spec is irrelevant.”

At this point, I was at a loss, because I thought he was being quite unreasonable. After a long and awkward pause, I almost gave up.

At this point, I was at a loss, because I thought he was being quite unreasonable. After a long and awkward pause, I almost gave up.

Me: “So what do you mean by hardware specs don’t matter”

Me: “So what do you mean by hardware specs don't matter”

Interviewer: “Pretend you don’t know the hardware spec of a server, how do you figure out how many servers you need?”

Interviewer: “Pretend you don't know the hardware spec of a server, how do you figure out how many servers you need?”

OH, THAT’S WHAT HE MEANT??!! He didn’t mean hardware spec is irrelevant, he just meant we don’t know the exact hardware spec.

OH, THAT'S WHAT HE MEANT??!! He didn't mean hardware spec is irrelevant, he just meant we don't know the exact hardware spec.

Me: “Oh, in that case, I would have to benchmark the throughput of the servers, and the number of servers required is roughly the maximum usage divided by the throughput of a single server. Am I on the right track here?”

Me: “Oh, in that case, I would have to benchmark the throughput of the servers, and the number of servers required is roughly the maximum usage divided by the throughput of a single server. Am I on the right track here?”

I could see him slightly nodding his head.

I could see him slightly nodding his head.

This moral of the story is to illustrate how important it is to clarify what the interviewer is asking/telling you. You can do this by repeating the question/statement back to them in your own words. If you are really stuck, ask them what they meant by what they just said. Maybe they will rephrase the questions/statements in a different way, so you can understand and proceed.

This moral of the story is to illustrate how important it is to clarify what the interviewer is asking/telling you. You can do this by repeating the question/statement back to them in your own words. If you are really stuck, ask them what they meant by what they just said. Maybe they will rephrase the questions/statements in a different way, so you can understand and proceed.

Remember many interviewers are not native English speakers, so what they say and what they mean to say may not exactly match. Similarly, many interviewees (yours truly included) are not native English speakers either, so what they hear and what they think they hear also may not exactly match.

Remember many interviewers are not native English speakers, so what they say and what they mean to say may not exactly match. Similarly, many interviewees (yours truly included) are not native English speakers either, so what they hear and what they think they hear also may not exactly match.

Having the interviewers say the same thing in different ways may greatly help interviewees understand what the interviewers truly mean.

Having the interviewers say the same thing in different ways may greatly help interviewees understand what the interviewers truly mean.

Whiteboard A&DS Coding Interviews (Whiteboard A&DS Coding Interviews)

On-site A&DS questions are almost exclusively done on whiteboards. Many people, including myself, are scared of whiteboard coding initially, because who in a real work setting writes detailed code on a whiteboard?!

On-site A&DS questions are almost exclusively done on whiteboards. Many people, including myself, are scared of whiteboard coding initially, because who in a real work setting writes detailed code on a whiteboard?!

But as I went through all these onsite interviews, I have found that whiteboard coding is, in some sense, easier than phone interviews. I will cover some techniques specifically for whiteboard coding below.

But as I went through all these onsite interviews, I have found that whiteboard coding is, in some sense, easier than phone interviews. I will cover some techniques specifically for whiteboard coding below.

Illustrate your algorithm with diagrams/charts/tables. There is an old saying, “A picture is worth a thousand lines of code”, or something like that. Before you write code, try to illustrate how your code would work with diagrams/charts/tables. This will give your interviewer a road map of what your code might look like, and will allow them to point out any potential issues that they see.

Illustrate your algorithm with diagrams/charts/tables. There is an old saying, “A picture is worth a thousand lines of code”, or something like that. Before you write code, try to illustrate how your code would work with diagrams/charts/tables. This will give your interviewer a road map of what your code might look like, and will allow them to point out any potential issues that they see.

Once you are done coding, try to walk through your code line-by-line with the diagrams on the side, so that you can show the interviewer that your implementation matches what you intended to do. Be sure to watch Tushar Roy’s LeetCode Hard Solutions YouTube videos to learn how to present ideas on a whiteboard.

Once you are done coding, try to walk through your code line-by-line with the diagrams on the side, so that you can show the interviewer that your implementation matches what you intended to do. Be sure to watch Tushar Roy's LeetCode Hard Solutions YouTube videos to learn how to present ideas on a whiteboard.

Split the whiteboard into sections. For reasons mentioned in the previous tip, I recommend splitting the whiteboard into at least 2–3 vertical sections. One section is reserved for diagrams, and other sections are for code. This way, you can always refer to the diagrams before/during/after you code.

Split the whiteboard into sections . For reasons mentioned in the previous tip, I recommend splitting the whiteboard into at least 2–3 vertical sections. One section is reserved for diagrams, and other sections are for code. This way, you can always refer to the diagrams before/during/after you code.

Don’t sweat the syntactic details. If you are allowed to code in any programming language (as this is the norm), then the interviewer should not be very picky on the syntax of your code. For example, if you miss a trailing semicolon in C++/Java, or trailing colon in Python, it is not a big deal, as long as your indentation is correct. Or if you misspell or shorten the name of a built-in function, it is also not a big deal, as long as the interviewer understands what your intentions are. On the contrary, you are not afforded the same luxury in phone interviews.

Don't sweat the syntactic details . If you are allowed to code in any programming language (as this is the norm), then the interviewer should not be very picky on the syntax of your code. For example, if you miss a trailing semicolon in C++/Java, or trailing colon in Python, it is not a big deal, as long as your indentation is correct. Or if you misspell or shorten the name of a built-in function, it is also not a big deal, as long as the interviewer understands what your intentions are. On the contrary, you are not afforded the same luxury in phone interviews.

Use shortened variable/function names. Because writing out long names with a marker can take a long time and a lot of space, tell your interviewer the full name and meaning of a variable, and then use the shortened name in your code. This will save you a lot of precious time as well as precious whiteboard space.

Use shortened variable/function names . Because writing out long names with a marker can take a long time and a lot of space, tell your interviewer the full name and meaning of a variable, and then use the shortened name in your code. This will save you a lot of precious time as well as precious whiteboard space.

Constantly Seek Feedback. This is one of the many benefits of an on-site interview because you can quite easily gauge the feedback of an interviewer. When I present my design or approach, I regularly check the facial expressions of the interviewer and ask casually, “Am I on the right track?” or “How does it look?” Usually, the interviewers are pretty helpful and give you some feedback, or at least nod or frown. If you are way off, they surely let you know, if you ask.

Constantly Seek Feedback . This is one of the many benefits of an on-site interview because you can quite easily gauge the feedback of an interviewer. When I present my design or approach, I regularly check the facial expressions of the interviewer and ask casually, “Am I on the right track?” or “How does it look?” Usually, the interviewers are pretty helpful and give you some feedback, or at least nod or frown. If you are way off, they surely let you know, if you ask.

As I found out the hard way a few times, when I didn’t seek feedback, some interviewers would let me finish the whole implementation and then point out some major flaws in the end. As a result, I failed all those interviews miserably. So try to flesh out your design as much as possible before coding and seek feedback.

As I found out the hard way a few times, when I didn't seek feedback, some interviewers would let me finish the whole implementation and then point out some major flaws in the end. As a result, I failed all those interviews miserably. So try to fl e sh out your design as much as possible before coding and seek feedback .

Other On-site Interview Tips (Other On-site Interview Tips)

Some of these non-technical tips may be common sense, but I will list them as a reminder.

Some of these non-technical tips may be common sense, but I will list them as a reminder.

Ask good questions at the end. You probably won’t have a lot of time to ask questions at the end of each interview session. So keep these questions short and impactful. The interview is a two-way process - companies are trying to extract information from you for their evaluation process, and you need to do the same to these companies, so you can make the most informed decisions when you get offers.

Ask good questions at the end . You probably won't have a lot of time to ask questions at the end of each interview session. So keep these questions short and impactful. The interview is a two-way process - companies are trying to extract information from you for their evaluation process, and you need to do the same to these companies, so you can make the most informed decisions when you get offers.

Here are the typical questions I like to ask:

Here are the typical questions I like to ask:

  • Can you tell me about your background and what you do in your current group?

    Can you tell me about your background and what you do in your current group?
  • Can you tell me about the technology stack and development process in your group/company? Once the interviewer mentions a few programming languages or tools, you can echo by saying you also have worked with these technologies.

    Can you tell me about the technology stack and development process in your group/company? Once the interviewer mentions a few programming languages or tools, you can echo by saying you also have worked with these technologies.
  • What would be an ideal candidate for your group/company? Once the interviewer mentions a few characteristics of the ideal candidate, you can echo by saying you also have some of these characteristics and give a quick example to back it up.

    What would be an ideal candidate for your group/company? Once the interviewer mentions a few characteristics of the ideal candidate, you can echo by saying you also have some of these characteristics and give a quick example to back it up.
  • Sell yourself a bit. This may not work for everyone. I also used the “questions” time at the end of the interview to show my self-driving robotic car and a couple of YouTube videos of the car to the interviewers. I think it worked out surprisingly well because I saw most interviewers were quite pleasantly surprised when they held the actual car in their hands.

    Sell yourself a bit. This may not work for everyone. I also used the “questions” time at the end of the interview to show my self-driving robotic car and a couple of YouTube videos of the car to the interviewers. I think it worked out surprisingly well because I saw most interviewers were quite pleasantly surprised when they held the actual car in their hands.

Stay hydrated. You will be talking a lot during the interview, and you will be sweating a lot (unconsciously), so you always want to be hydrated at all times. This means refilling your cup after every interview session, and taking a sip whenever you are not writing on the whiteboard. I find caffeine (coffee/tea/Coke) to be quite effective at keeping me at peak performance.

Stay hydrated . You will be talking a lot during the interview, and you will be sweating a lot (unconsciously), so you always want to be hydrated at all times. This means refilling your cup after every interview session, and taking a sip whenever you are not writing on the whiteboard. I find caffeine (coffee/tea/Coke) to be quite effective at keeping me at peak performance.

Take washroom breaks. After each interview session, be sure to take a washroom break. Unfortunately, these 45–60 min interview sessions are usually back-to-back with no breaks in between. So be sure to ask for one before the next session starts. You want to be able to walk and stretch your legs a bit and more importantly, wash your hands and face, so you can go to the next interview refreshed. Don’t take too long a break though, because the break time eats into your next 45 minutes.

Take washroom breaks . After each interview session, be sure to take a washroom break. Unfortunately, these 45–60 min interview sessions are usually back-to-back with no breaks in between. So be sure to ask for one before the next session starts. You want to be able to walk and stretch your legs a bit and more importantly, wash your hands and face, so you can go to the next interview refreshed. Don't take too long a break though, because the break time eats into your next 45 minutes.

Take notes. I always keep a detailed log of my interviews. Since most of your interview sessions are back-to-back, the only time you can take notes is during bathroom breaks. :) Bring your phone and quickly jot down a few notes of the questions and your approach so you can remind yourself after you are done for the day. This should take no more than 1 min.

Take notes . I always keep a detailed log of my interviews. Since most of your interview sessions are back-to-back, the only time you can take notes is during bathroom breaks. :) Bring your phone and quickly jot down a few notes of the questions and your approach so you can remind yourself after you are done for the day. This should take no more than 1 min.

Eat a light lunch. It is pretty hard not to overeat at lunch because many top tech companies have awesome free food! Facebook even has free ice cream! While it is tempting to try all the free food while you are there, you need to remember you are not there to eat just once but to interview and get the job, so that you can eat there every single day!

Eat a light lunch. It is pretty hard not to overeat at lunch because many top tech companies have awesome free food! Facebook even has free ice cream! While it is tempting to try all the free food while you are there, you need to remember you are not there to eat just once but to interview and get the job, so that you can eat there every single day !

Two reasons to not overeat: first, you want to stay alert in the afternoon session and not feel drowsy. Second, you want to spend most of the time chatting with your lunch buddy. While for some companies (Google/Facebook), your lunch buddy’s feedback is not part of the offer decision, many times, they are senior folks in the firms so their opinions may matter and you want to leave a good impression.

Two reasons to not overeat: first, you want to stay alert in the afternoon session and not feel drowsy. Second, you want to spend most of the time chatting with your lunch buddy. While for some companies (Google/Facebook), your lunch buddy's feedback is not part of the offer decision, many times, they are senior folks in the firms so their opinions may matter and you want to leave a good impression.

Pack some snacks. On the flip side to the last point, for some of my on-site interviews, either by design or due to time conflicts, the lunch is scheduled at 1:30–2 pm or skipped altogether! I would be so hungry by then and would be running on fumes. So I learned to always pack a granola bar and a few pieces of chocolate with me so that I could take a few quick bites in between interviews.

Pack some snacks . On the flip side to the last point, for some of my on-site interviews, either by design or due to time conflicts, the lunch is scheduled at 1:30–2 pm or skipped altogether! I would be so hungry by then and would be running on fumes. So I learned to always pack a granola bar and a few pieces of chocolate with me so that I could take a few quick bites in between interviews.

Bring a few resumes: Yes, most interviewers would indeed bring a copy of your resume with them. However, occasionally I encountered interviewers who didn’t bring a copy of my resume with them, so I just gave them a copy. For tech interviews, it probably doesn’t matter that much, but it is a nice gesture.

Bring a few resumes : Yes, most interviewers would indeed bring a copy of your resume with them. However, occasionally I encountered interviewers who didn't bring a copy of my resume with them, so I just gave them a copy. For tech interviews, it probably doesn't matter that much, but it is a nice gesture.

Post mortem analysis. After you are done with the interviews for the day, don’t relax right away. While your memory is still fresh, go back to the hotel/home and immediately jot down as much detail about the interviews as you can, including interviewers’ names/background, all the questions asked, your approaches, interviewers’ answers to your questions, etc. Do this electronically (not on a paper notepad) so it is easier to search and archive later.

Post mortem analysis . After you are done with the interviews for the day, don't relax right away. While your memory is still fresh, go back to the hotel/home and immediately jot down as much detail about the interviews as you can, including interviewers' names/background, all the questions asked, your approaches, interviewers' answers to your questions, etc. Do this electronically (not on a paper notepad) so it is easier to search and archive later.

Also, at a later time, revisit all the interview questions, get optimized solutions, and think about how you can improve your performance next time. If you find the interview questions on LC, be sure to tag the questions with the company names, so others can benefit from your experience.

Also, at a later time, revisit all the interview questions, get optimized solutions, and think about how you can improve your performance next time. If you find the interview questions on LC, be sure to tag the questions with the company names, so others can benefit from your experience.

The above are just tips and tricks that help you tip the scale in your favor a little. You still need to practice the A&DS problem intensively and learn to quickly identify an approach to each problem.

The above are just tips and tricks that help you tip the scale in your favor a little. You still need to practice the A&DS problem intensively and learn to quickly identify an approach to each problem.

For example, know when do use BFS or DFS in a tree/graph, when to use recursive vs iterative algorithms, when to sort or index data before processing, etc. And ALWAYS know the big O time and space complexity of your algorithms. I started interview preparation in late May, did my first phone interview in late June and finished my last onsite interviews in late-August — three of the most intensive months of my life.

For example, know when do use BFS or DFS in a tree/graph, when to use recursive vs iterative algorithms, when to sort or index data before processing, etc. And ALWAYS know the big O time and space complexity of your algorithms. I started interview preparation in late May, did my first phone interview in late June and finished my last onsite interviews in late-August — three of the most intensive months of my life.

If any of you ask me for specific interview questions that I encountered, unfortunately, I can’t disclose them here. But I have tagged all relevant interview questions on LeetCode, as a way to give back to the online community anonymously. I hope you will do this as well after your interviews.

If any of you ask me for specific interview questions that I encountered, unfortunately, I can't disclose them here. But I have tagged all relevant interview questions on LeetCode, as a way to give back to the online community anonymously. I hope you will do this as well after your interviews.

Step 5. Offer Negotiation and Team Matching (Step 5. Offer Negotiation and Team Matching)

5.1 Offer Negotiation (5.1 Offer Negotiation)

If you are reading this, you probably have received at least one offer. Wow, congratulations!

If you are reading this, you probably have received at least one offer. 哇,恭喜!

If you have not received any offers yet, stop reading right now, and go back to do more LeetCode and interviews! ;-)

If you have not received any offers yet, stop reading right now, and go back to do more LeetCode and interviews! ;-)

Components of an Offer Package (Components of an Offer Package)

These are the typical components of an offer package of a tech company. I will give a sample of a mid-level software engineer (SWE), typically 3–5 years of experience (YoE).

These are the typical components of an offer package of a tech company. I will give a sample of a mid-level software engineer (SWE), typically 3–5 years of experience (YoE).

  • Sign-on Bonus: This is the money you get right after you start work, NOT when you sign the offer letter. For example, $30,000 one time payment.

    Sign-on Bonus : This is the money you get right after you start work, NOT when you sign the offer letter. For example, $30,000 one time payment.

  • Base Salary: This is the money that goes into your bank account every month. For example, $150,000/year.

    Base Salary : This is the money that goes into your bank account every month. For example, $150,000/year.

  • Annual Bonus: This is a percentage of your base salary, usually 10–30%, given every year. For example, 20%, which is $30,000 for a base salary of $150,000.

    Annual Bonus : This is a percentage of your base salary, usually 10–30%, given every year. For example, 20%, which is $30,000 for a base salary of $150,000.

  • Stock Options or Stock Grants: bigger companies tend to give Stocks (called Restricted Stock Units, RSUs) which are worth something at the time of the grant. Startup companies tend to give stock options, which are worth very little at the time of the grant but may have big potential. For example, $300,000 worth of Stock Grant vested over 4 years, so $75,000 is vested every year.

    Stock Options or Stock Grants : bigger companies tend to give Stocks (called Restricted Stock Units, RSUs) which are worth something at the time of the grant. Startup companies tend to give stock options, which are worth very little at the time of the grant but may have big potential. For example, $300,000 worth of Stock Grant vested over 4 years, so $75,000 is vested every year.

  • Relocation package (If you need to relocate): This usually includes 1) a few weeks of corporate housing for your family, 2) moving of all your belongings, 3) help with selling and buying houses, and optionally 4) some cash to help with other relocation-related expenses. The relocation package is based on your family composition, location, and level. It is not usually negotiable.

    Relocation package (If you need to relocate): This usually includes 1) a few weeks of corporate housing for your family, 2) moving of all your belongings, 3) help with selling and buying houses, and optionally 4) some cash to help with other relocation-related expenses. The relocation package is based on your family composition, location, and level. It is not usually negotiable.

Annualized Total Compensation (TC) This is the one number that makes all the offer packages comparable.

Annualized Total Compensation (TC) This is the one number that makes all the offer packages comparable.

TC = Base Salary + Annual Bonus + Annual Stock Grants+ amortized Sign-on bonus (Assume you amortize the sign-on bonus over 3 years)

TC = Base Salary + Annual Bonus + Annual Stock Grants+ amortized Sign-on bonus (Assume you amortize the sign-on bonus over 3 years)

TC of our mid-level SWE

TC of our mid-level SWE

= $150k + $30K + $75K + $30K / 3 = $265,000

= $150k + $30K + $75K + $30K / 3 = $265,000

Note that the relocation package is not considered part of TC calculation, as it is expected you will be spending most, if not all, of the relocation package.

Note that the relocation package is not considered part of TC calculation, as it is expected you will be spending most, if not all, of the relocation package.

Know Your Level (Know Your Level)

Even though you know your YoE, the company may interview you at a certain level that is company-specific. For example, a 4 YoE engineer may interview at L3 or L4 at Google, E3 or E4 at Facebook, and Level 59–62 at Microsoft.

Even though you know your YoE, the company may interview you at a certain level that is company-specific. For example, a 4 YoE engineer may interview at L3 or L4 at Google, E3 or E4 at Facebook, and Level 59–62 at Microsoft.

Ask the recruiter what level are you interviewing for. But this may not be the level you will be offered the job at. For example, you may interview at Facebook at E4, in the end, the hiring committee may decide that your performance is not stellar enough for an E4, but good enough to receive an offer for E3. So ask the recruiter again what level is your job offer for. With this level, you can find out the expected value and range of TC. (see below)

Ask the recruiter what level are you interviewing for. But this may not be the level you will be offered the job at. For example, you may interview at Facebook at E4, in the end, the hiring committee may decide that your performance is not stellar enough for an E4, but good enough to receive an offer for E3. So ask the recruiter again what level is your job offer for . With this level, you can find out the expected value and range of TC. (see below)

Know Your Market Value (Know Your Market Value)

You can’t negotiate if you don’t know your prevailing market value. For years, companies have kept compensation information very secretive, so the candidates have suffered HUGE information disadvantage.

You can't negotiate if you don't know your prevailing market value. For years, companies have kept compensation information very secretive, so the candidates have suffered HUGE information disadvantage.

Fortunately, in recent years, the compensation information has been democratized, with many websites crowdsourcing from many candidates and then presenting the anonymized compensation data by level, job function and location. One well-known site is levels.fyi.

Fortunately, in recent years, the compensation information has been democratized, with many websites crowdsourcing from many candidates and then presenting the anonymized compensation data by level, job function and location. One well-known site is levels.fyi .

As you can see above, all the top-paying jobs are in the San Francisco Bay Area. SWEs with 3–5 YoE can earn as high as $290,000 TC, and SWEs with 5+ YoE can earn over $400,000.

As you can see above, all the top-paying jobs are in the San Francisco Bay Area. SWEs with 3–5 YoE can earn as high as $290,000 TC, and SWEs with 5+ YoE can earn over $400,000.

For any non-Bay Area engineers, total compensation of $300,000–$400,000 may be eye-popping. But remember that Bay area housing is THE most expensive metro area in the US. The median housing price of Palo Alto, CA is $2.8M (source: Zillow.com), and of San Francisco Metro Area (source: censusreporter.com) is $1.1M. For preciously this reason — lots of people are paid at a much higher rate.

For any non-Bay Area engineers, total compensation of $300,000–$400,000 may be eye-popping. But remember that Bay area housing is THE most expensive metro area in the US. The median housing price of Palo Alto, CA is $2.8M (source: Zillow.com), and of San Francisco Metro Area (source: censusreporter.com ) is $1.1M. For preciously this reason — lots of people are paid at a much higher rate.

As a comparison, the median home prices of Manhattan, NY is $1.2M (source: Zillow.com), and that of New York/New Jersey Metro Area is only $440K. (source: censusreporter.com)

As a comparison, the median home prices of Manhattan, NY is $1.2M (source: Zillow.com), and that of New York/New Jersey Metro Area is only $440K. (source: censusreporter.com )

Armed with levels.fyi, your level (obtained from the previous step) and the company name, you can clearly see the average reported TC as well as its range. For example, for the Google L4 SWE in the Bay Area, the average reported TC is about $260K, with a range from $200K to $320K. So if you received a Google L4 offer in the low $200K, then you know you have room to negotiate.

Armed with levels.fyi, your level (obtained from the previous step) and the company name, you can clearly see the average reported TC as well as its range. For example, for the Google L4 SWE in the Bay Area, the average reported TC is about $260K, with a range from $200K to $320K. So if you received a Google L4 offer in the low $200K, then you know you have room to negotiate.

初创企业 (Startups)

Levels.fyi is a great tool to compare offers between more mature companies (public or private), as the equity component of the comp can be evaluated in dollar terms with higher certainty.

Levels.fyi is a great tool to compare offers between more mature companies (public or private), as the equity component of the comp can be evaluated in dollar terms with higher certainty.

But for early-stage startup companies, you can not find reliable data points on Levels.fyi. Very often you are given either 1) a percentage of the company stocks or 2) given a certain number of stock options. The company recruiter or the CEO may tell you that even though the value of your equity component is worth very little right now, it may work 20x–50x more if the company goes IPO in 3–5 years.

But for early-stage startup companies, you can not find reliable data points on Levels.fyi. Very often you are given either 1) a percentage of the company stocks or 2) given a certain number of stock options. The company recruiter or the CEO may tell you that even though the value of your equity component is worth very little right now, it may work 20x–50x more if the company goes IPO in 3–5 years.

In reality, these equity components are hard to evaluate, are extremely non-liquid with no monetary value for years to come, and indeed go to zero value when 90% of all startups fail. (source: Forbes).

In reality, these equity components are hard to evaluate, are extremely non-liquid with no monetary value for years to come, and indeed go to zero value when 90% of all startups fail . (source: Forbes).

I received a few offers from early-stage startup companies. The typical package is light on cash (i.e. low base salary and bonus) and heavy on equity (lots of options with a huge potential payout… or nothing). This makes sense, as most early-stage startups do not make a profit, and any cash salary/bonus they pay out depletes their cash on hand or, in Venture Capital (VC) speak, burns up their runway.

I received a few offers from early-stage startup companies. The typical package is light on cash (ie low base salary and bonus) and heavy on equity (lots of options with a huge potential payout… or nothing). This makes sense, as most early-stage startups do not make a profit, and any cash salary/bonus they pay out depletes their cash on hand or, in Venture Capital (VC) speak, burns up their runway.

Even though the startups I received offers from do really exciting work and the prospects look very promising — one had Google Ventures as a backer — I ended up choosing Google because I need the certainty and stability of a large company. After all, I'll have a college-bound kid soon. I can’t afford to join a startup for a few years only to see it fail and have my equity component wiped out.

Even though the startups I received offers from do really exciting work and the prospects look very promising — one had Google Ventures as a backer — I ended up choosing Google because I need the certainty and stability of a large company. After all, I'll have a college-bound kid soon. I can't afford to join a startup for a few years only to see it fail and have my equity component wiped out.

However, if I were younger and had no kids, I would certainly work for a startup and try to hit a home run. If I failed, I wouldn't be under pressure to support the family and still have enough time to start over. If my wife made enough income to support the expenses of our entire family, then I could also work for startups for its potential upside. In finance speak, this is called diversification — by combining risky stocks with safer stocks or bonds, you can actually achieve higher risk-adjusted returns.

However, if I were younger and had no kids, I would certainly work for a startup and try to hit a home run. If I failed, I wouldn't be under pressure to support the family and still have enough time to start over. If my wife made enough income to support the expenses of our entire family, then I could also work for startups for its potential upside. In finance speak, this is called diversification — by combining risky stocks with safer stocks or bonds, you can actually achieve higher risk-adjusted returns .

Don't Accept an Offer on the First Call (Don’t Accept an Offer on the First Call)

When you are first offered a position, the recruiter always tells you the offer details (base salary, bonus, equity grants, etc) over the phone. This is called a “Verbal Offer”. What you want to do on the first call is to thank the recruiter, write down all the offer details, repeat it back to the recruiter to confirm, and ask them to send you this offer details in an email. Then hang up.

When you are first offered a position, the recruiter always tells you the offer details (base salary, bonus, equity grants, etc) over the phone. This is called a “Verbal Offer”. What you want to do on the first call is to thank the recruiter, write down all the offer details, repeat it back to the recruiter to confirm, and ask them to send you this offer details in an email. Then hang up.

Remember, DO NOT accept the job on the spot. (If this is your dream job, you can jump up and down AFTER you hang up the phone.) Sometimes, the recruiter will refuse to send you anything in writing or email. If this is the case, then email them with the offer details you just wrote down and ask them to confirm whether what you heard is correct. They'll usually respond affirmatively.

Remember, DO NOT accept the job on the spot. (If this is your dream job, you can jump up and down AFTER you hang up the phone.) Sometimes, the recruiter will refuse to send you anything in writing or email. If this is the case, then email them with the offer details you just wrote down and ask them to confirm whether what you heard is correct. They'll usually respond affirmatively.

This is important because after something is in writing, the recruiter can not easily back out of what they just told you over the phone.

This is important because after something is in writing, the recruiter can not easily back out of what they just told you over the phone.

Many times, recruiters will push you to verbally accept the offer right away over the phone or give you a 24-hour deadline to accept. DO NOT BITE! You should always try to negotiate for a better offer.

Many times, recruiters will push you to verbally accept the offer right away over the phone or give you a 24-hour deadline to accept. DO NOT BITE! You should always try to negotiate for a better offer.

Offer Negotiation — Multiple Offers (Offer Negotiation — Multiple Offers)

Offer negotiation is like playing high stakes poker — indeed, we are talking about tens of thousands of dollars here — and it is both exciting and stressful. For some people like myself, it can also be scary. However, armed with information from level.fyi, you can call a recruiter’s offer bluff, if that offer is too low.

Offer negotiation is like playing high stakes poker — indeed, we are talking about tens of thousands of dollars here — and it is both exciting and stressful. For some people like myself, it can also be scary. However, armed with information from level.fyi, you can call a recruiter's offer bluff, if that offer is too low.

To have leverage in the offer negotiation process, it helps to have another strong offer, or in poker speak, a strong hand. Many recruiters are very willing to try to match competing offers. They can present the competing offer to the hiring/compensation committee as strong justifications for putting together a better offer for you.

To have leverage in the offer negotiation process, it helps to have another strong offer, or in poker speak, a strong hand. Many recruiters are very willing to try to match competing offers. They can present the competing offer to the hiring/compensation committee as strong justifications for putting together a better offer for you.

In this case, you can try to let these companies bid up your compensation. This is quite normal, as bidding happens every day around us when a commodity is in demand, such as in the stock markets, eBay, and Google Ads. The bidding process ensures the commodity is valued at a fair market price.

In this case, you can try to let these companies bid up your compensation. This is quite normal, as bidding happens every day around us when a commodity is in demand, such as in the stock markets, eBay, and Google Ads. The bidding process ensures the commodity is valued at a fair market price.

Offer Negotiation — Just One Offer (Offer Negotiation — Just One Offer)

Even if you don’t have a strong hand — i.e. only one offer or only low offers — you can tell the recruiter that you are really excited about the company, but your salary expectation is actually $XYZ. The recruiter will probably ask you to justify this figure, and you can say it is based on figures from levels.fyi, or your friends/co-workers who have similar YoE and their TC is $XYZ.

Even if you don't have a strong hand — ie only one offer or only low offers — you can tell the recruiter that you are really excited about the company, but your salary expectation is actually $XYZ. The recruiter will probably ask you to justify this figure, and you can say it is based on figures from levels.fyi, or your friends/co-workers who have similar YoE and their TC is $XYZ.

If you present yourself professionally, it is very likely the initial offer will be bumped up somewhat. It is highly unlikely that the company will retract its original offer simply because you try to negotiate. After all, the company invests a lot of effort to find a qualified candidate, so it doesn’t want to lose a good candidate over a small increase. So you have nothing to lose by asking for more comp, nicely.

If you present yourself professionally, it is very likely the initial offer will be bumped up somewhat. It is highly unlikely that the company will retract its original offer simply because you try to negotiate. After all, the company invests a lot of effort to find a qualified candidate, so it doesn't want to lose a good candidate over a small increase. So you have nothing to lose by asking for more comp, nicely .

Offer Negotiation — Money is Not the Only Thing on the Table (Offer Negotiation — Money is Not the Only Thing on the Table)

Remember money is not the only thing you can negotiate. Anything that the company can offer you is on the negotiation table.

Remember money is not the only thing you can negotiate . Anything that the company can offer you is on the negotiation table.

For example, you can ask to work for a different group (say a core group rather than support related group), a different title (say Senior Software Engineer instead of Software Engineer), a different job function (say a research engineer rather than a software engineer), more Paid Time Off days, flex time to work from home, or a better relocation package.

For example, you can ask to work for a different group (say a core group rather than support related group), a different title (say Senior Software Engineer instead of Software Engineer), a different job function (say a research engineer rather than a software engineer), more Paid Time Off days, flex time to work from home, or a better relocation package.

Of course, this varies heavily from company to company. Larger companies may be less flexible, but smaller companies that may not be able to match the monetary compensation of larger companies may be more willing to consider these alternative demands. Again, it doesn’t hurt to ask, if you do it nicely.

Of course, this varies heavily from company to company. Larger companies may be less flexible, but smaller companies that may not be able to match the monetary compensation of larger companies may be more willing to consider these alternative demands. Again, it doesn't hurt to ask, if you do it nicely.

Offer Negotiation — Don't Be Too Greedy (Offer Negotiation — Don’t Be Too Greedy)

After a few rounds of back-and-forth with the recruiter, if you sense that there is not much more room to negotiate, stop asking for more. Recruiters at larger firms see this every day, and probably won't mind too much. For smaller firms, the recruiter may be working directly with your hiring manager or even the owner/founder. If you drive your bargain too hard, you may be perceived as too greedy. So even if they hire you, they may view you negatively. Know when to be content.

After a few rounds of back-and-forth with the recruiter, if you sense that there is not much more room to negotiate, stop asking for more. Recruiters at larger firms see this every day, and probably won't mind too much. For smaller firms, the recruiter may be working directly with your hiring manager or even the owner/founder. If you drive your bargain too hard, you may be perceived as too greedy. So even if they hire you, they may view you negatively. Know when to be content .

Offer Stalling Tactics (Offer Stalling Tactics)

If you are not quite happy with any of the offers after negotiation, you should try to delay the acceptance of the offers. This can happen if some offers’ job functions are very attractive, but comps are too low, while other offers’ comps are nice, but you don’t like the job functions.

If you are not quite happy with any of the offers after negotiation, you should try to delay the acceptance of the offers. This can happen if some offers' job functions are very attractive, but comps are too low, while other offers' comps are nice, but you don't like the job functions.

Delaying an offer allows you more time to interview and land that perfect offer. But it does have risks, as the open position may be filled anytime. But for large tech firms, that risk is minimal, as they are always hiring. If you need to delay an offer, here are some tactics to try. (Disclaimer: I have not tried all of them, some of them have been suggested to me.)

Delaying an offer allows you more time to interview and land that perfect offer. But it does have risks, as the open position may be filled anytime. But for large tech firms, that risk is minimal, as they are always hiring. If you need to delay an offer, here are some tactics to try. (Disclaimer: I have not tried all of them, some of them have been suggested to me.)

  • Meet with the team/peers: Request a call, coffee, or dinner to meet the rest of the team or learn more from peers. This is a great way to not only show interest but also get a strong signal on the company/team culture.

    Meet with the team/peers: Request a call, coffee, or dinner to meet the rest of the team or learn more from peers. This is a great way to not only show interest but also get a strong signal on the company/team culture.
  • Request Product Demos: Requesting a product demo is another great way to show interest. It’s also a good way to assess the technical challenges, the product roadmap, and how product-oriented the company is. You can usually combine this with meeting the team for lunch.

    Request Product Demos: Requesting a product demo is another great way to show interest. It's also a good way to assess the technical challenges, the product roadmap, and how product-oriented the company is. You can usually combine this with meeting the team for lunch.
  • Ask various Stock/Option related questions, such as the company’s current valuation, last funding round, company’s exit plans/strategies, and option exercise schedule, etc

    Ask various Stock/Option related questions, such as the company's current valuation, last funding round, company's exit plans/strategies, and option exercise schedule, etc

These above strategies work best for most companies. For some large tech companies, once they decide to give you an offer, the offer is usually good for at least a few months, because you have met their technical bar, and they would be happy to hire a good SWE anytime. Your recruiter may not be willing to tell you this, as they want to close on you ASAP, but you can find out from other sources, i.e. Google Search and Blind App.

These above strategies work best for most companies. For some large tech companies, once they decide to give you an offer, the offer is usually good for at least a few months, because you have met their technical bar, and they would be happy to hire a good SWE anytime. Your recruiter may not be willing to tell you this, as they want to close on you ASAP, but you can find out from other sources, ie Google Search and Blind App.

Lastly, remember all recruiters want to see you get hired by the company. Being able to close on a candidate (i.e. convert a qualified candidate to an employee) is one of their performance metrics, which is tied to a recruiter’s performance bonus. So treat your recruiter as your advocate, not your adversary.

Lastly, remember all recruiters want to see you get hired by the company. Being able to close on a candidate (ie convert a qualified candidate to an employee) is one of their performance metrics, which is tied to a recruiter's performance bonus. So treat your recruiter as your advocate, not your adversary .

5.2 Team Matching/Selection (5.2 Team Matching/Selection)

Don’t choose a job simply because it pays the most right now. While compensation is an important factor in your offer decision process, what may be more important is how a job impacts your career. I will discuss how to select a company/team that will maximize your career potential in the long run.

Don't choose a job simply because it pays the most right now. While compensation is an important factor in your offer decision process, what may be more important is how a job impacts your career. I will discuss how to select a company/team that will maximize your career potential in the long run.

Team Matching Process (Team Matching Process)

For many companies (including Apple/Microsoft/many other companies), you will be interviewing with a few specific teams. And when you are offered the job, it will be for one of those teams.

For many companies (including Apple/Microsoft/many other companies), you will be interviewing with a few specific teams. And when you are offered the job, it will be for one of those teams.

However, for some companies such as Google and Facebook, they interview most candidates as general SWEs and only try to match a candidate to a team after that candidate is extended an offer. Since I have only experienced the team matching process with these two companies, I will discuss my experience below.

However, for some companies such as Google and Facebook, they interview most candidates as general SWEs and only try to match a candidate to a team after that candidate is extended an offer. Since I have only experienced the team matching process with these two companies, I will discuss my experience below.

Facebook extends a firm written offer first and then match you to a team. Team matching can also happen before you join, as you take calls from hiring managers, or after you join, during the first 4–6 weeks of orientation/boot camp stage. The pro of this process is that the candidate knows that their offer is firm. The con is that you run the risk of joining then not being able to find a team you like during boot camp. But I was told by my Facebook friends that this situation is highly unlikely.

Facebook extends a firm written offer first and then match you to a team. Team matching can also happen before you join, as you take calls from hiring managers, or after you join, during the first 4–6 weeks of orientation/boot camp stage. The pro of this process is that the candidate knows that their offer is firm. The con is that you run the risk of joining then not being able to find a team you like during boot camp. But I was told by my Facebook friends that this situation is highly unlikely.

Google, on the other hand, works very differently. They do not run a long orientation/boot camp like Facebook. They first extend you a verbal offer and then require you to be matched to a team before extending a formal written offer. Even after you are matched with a team, this offer can be rejected/modified by the hiring committee. Even the final comp can be revised from the initial verbal offer by the compensation committee.

Google, on the other hand, works very differently. They do not run a long orientation/boot camp like Facebook. They first extend you a verbal offer and then require you to be matched to a team before extending a formal written offer. Even after you are matched with a team, this offer can be rejected/modified by the hiring committee. Even the final comp can be revised from the initial verbal offer by the compensation committee.

I have read, from many online posts, that this is a long and arduous process. As I found out personally, the team matching process was indeed long and frustrating and took 1.5 months. At one point, I seriously thought it would not work out and wanted to join another company instead.

I have read, from many online posts, that this is a long and arduous process. As I found out personally, the team matching process was indeed long and frustrating and took 1.5 months. At one point, I seriously thought it would not work out and wanted to join another company instead.

Had Google extended me a firm written offer first like Facebook, it would’ve been much less stressful, because I would've known for certain I was going to work for Google and all I had to do was to find a team. Luckily, things worked out for me as I was finally matched with a group of my choice, and the offer was approved by various committees shortly after that.

Had Google extended me a firm written offer first like Facebook, it would've been much less stressful, because I would've known for certain I was going to work for Google and all I had to do was to find a team. Luckily, things worked out for me as I was finally matched with a group of my choice, and the offer was approved by various committees shortly after that.

How to Select a Team (How to Select a Team)

Here are the questions that I ask myself during the interview or offer stage. You don’t need to ask these exact questions to the interviewers, but you want to somehow extract the answers to these questions from your interviews/conversations with the companies/groups.

Here are the questions that I ask myself during the interview or offer stage. You don't need to ask these exact questions to the interviewers, but you want to somehow extract the answers to these questions from your interviews/conversations with the companies/groups.

  1. Which group will I be joining? I wanted to join one of the “core” groups of a company – a group that the company had put a lot of commitment and resources behind. These are often its flagship product groups or high growth groups. Working in these groups offers stability and/or growth.

    Which group will I be joining? I wanted to join one of the “core” groups of a company – a group that the company had put a lot of commitment and resources behind. These are often its flagship product groups or high growth groups. Working in these groups offers stability and/or growth.

  2. What types of work will I be doing for this company/group? I looked for work experiences that were transferable in my later career. I would prefer to work with publicly available tools and technologies, and not so much with the company’s proprietary technologies. For example, if I was to work on an ad recommendation machine learning system, I am sure I could easily find another company that also wanted to improve its ad/product recommendation system. However, I would not be so interested to work on automating some internal processes with a company's proprietary scripting language.

    What types of work will I be doing for this company/group? I looked for work experiences that were transferable in my later career. I would prefer to work with publicly available tools and technologies, and not so much with the company's proprietary technologies. For example, if I was to work on an ad recommendation machine learning system, I am sure I could easily find another company that also wanted to improve its ad/product recommendation system. However, I would not be so interested to work on automating some internal processes with a company's proprietary scripting language.

  3. What will I be learning by working for this company/group? Work is a two-way street. I wanted to be able to contribute a lot to my company. At the same time, I wanted to learn a ton from my work, so that my skill sets could be in high demand whenever I look for my next job. I believe AI/ML, Computer Vision, Cloud computing, Self-driving car, and AR/VR skills will be in high demand in the future, so I wanted to learn some of these skills in my next job.

    What will I be learning by working for this company/group? Work is a two-way street. I wanted to be able to contribute a lot to my company. At the same time, I wanted to learn a ton from my work, so that my skill sets could be in high demand whenever I look for my next job. I believe AI/ML, Computer Vision, Cloud computing, Self-driving car, and AR/VR skills will be in high demand in the future, so I wanted to learn some of these skills in my next job.

  4. Do I have a passion for this job? If you don’t have a passion for what you do, it doesn’t matter how much the job pays – you won’t be happy and won’t be putting in that 120%. I was passionate about quantitative finance because it was cool to see math and technology transforming a whole industry. But after 10+ years, my passion is now in AI/ML. It is really awesome and magical that you don’t have to tell a computer exactly how to do something. All you have to do is to feed it data and it will figure out how to do it better than someone would with code.

    Do I have a passion for this job? If you don't have a passion for what you do, it doesn't matter how much the job pays – you won't be happy and won't be putting in that 120%. I was passionate about quantitative finance because it was cool to see math and technology transforming a whole industry. But after 10+ years, my passion is now in AI/ML. It is really awesome and magical that you don't have to tell a computer exactly how to do something. All you have to do is to feed it data and it will figure out how to do it better than someone would with code.

  5. Do I like my manager and my peers? And do they like me? You want a manager that appreciates you and will support you in your new job. You also want to enjoy being around your teammates, since you will be with them for 8+ hours every single day, even longer than when you are with your family!

    Do I like my manager and my peers? And do they like me? You want a manager that appreciates you and will support you in your new job. You also want to enjoy being around your teammates, since you will be with them for 8+ hours every single day, even longer than when you are with your family!

Many times, not all of the above can be satisfied. Then you have to weigh the pros and cons of each. But if one of the above gives you a red flag, I would seriously consider passing on that position.

Many times, not all of the above can be satisfied. Then you have to weigh the pros and cons of each. But if one of the above gives you a red flag, I would seriously consider passing on that position.

I ended up choosing to go to Google’s Pixel Phone’s camera group because it offers three things that I am very passionate about: Computer Vision, Machine Learning, and Hardware. These are exactly what my robotic self-driving car project was all about! Also from what I learned, Google is now deeply committed to its hardware and smart home strategies, where the Pixel Phone will be a central part of that ecosystem.

I ended up choosing to go to Google's Pixel Phone's camera group because it offers three things that I am very passionate about: Computer Vision, Machine Learning, and Hardware. These are exactly what my robotic self-driving car project was all about! Also from what I learned, Google is now deeply committed to its hardware and smart home strategies, where the Pixel Phone will be a central part of that ecosystem.

最后的想法 (Final Thoughts)

Thanks for reading this far. It was quite a journey for me these last 6 months. Through my personal projects and intensive interview preparation, I believe I am now a better engineer (or at least a better interviewee. ;-) What I presented are my own lessons and experiences.

感谢您阅读本文。 It was quite a journey for me these last 6 months. Through my personal projects and intensive interview preparation, I believe I am now a better engineer (or at least a better interviewee. ;-) What I presented are my own lessons and experiences.

I have found that A&DS questions are the core of any tech interview, and there is no shortcut to getting better at them except through practicing more LC questions. Once you are decent at A&DS and System Design questions, the suggestions that I presented in this article should help you tip the scale in your favor.

I have found that A&DS questions are the core of any tech interview, and there is no shortcut to getting better at them except through practicing more LC questions. Once you are decent at A&DS and System Design questions, the suggestions that I presented in this article should help you tip the scale in your favor.

I recommend bookmarking this article as you will need to refer back to it in the next 2–6 months as your job search progresses. Some of the tips in the later stages won’t make much sense until you actually get to that stage. For example, you may need to do a few phone interviews to appreciate the tips presented in Step 4, and you certainly shouldn’t be thinking about Step 5 offer negotiation before you get any offers.

I recommend bookmarking this article as you will need to refer back to it in the next 2–6 months as your job search progresses. Some of the tips in the later stages won't make much sense until you actually get to that stage. For example, you may need to do a few phone interviews to appreciate the tips presented in Step 4, and you certainly shouldn't be thinking about Step 5 offer negotiation before you get any offers.

If you are going through interviews, please let me know which of my tips worked well or not so well by leaving a comment below, so that others will benefit as well. Please also suggest new tips in the comments as well. Thanks!

If you are going through interviews, please let me know which of my tips worked well or not so well by leaving a comment below, so that others will benefit as well. Please also suggest new tips in the comments as well. 谢谢!

资源资源 (Resources)

Here is an appendix of resources (in alphabetical order) that I used in my job hunting process. Hope you will find them helpful as well.

Here is an appendix of resources (in alphabetical order) that I used in my job hunting process. Hope you will find them helpful as well.

Blind: This is an app that allows employees of varies companies (mostly tech) to post questions and answers anonymously. People generally discuss career decisions, company culture, interviews, and compensation, etc.

Blind : This is an app that allows employees of varies companies (mostly tech) to post questions and answers anonymously. People generally discuss career decisions, company culture, interviews, and compensation, etc.

I found this platform to be both good and bad. It is good because you get more candid answers/responses and sometimes inside information. It is bad because some people write offensive responses due to the anonymity, and the environment can be toxic at times. You have been warned.

I found this platform to be both good and bad. It is good because you get more candid answers/responses and sometimes inside information. It is bad because some people write offensive responses due to the anonymity, and the environment can be toxic at times. 你被警告了。

Coursera: Learn about the subjects you are passionate about. It is free or for a very nominal fee. I took both Machine Learning and Deep Learning courses there.

Coursera : Learn about the subjects you are passionate about. It is free or for a very nominal fee. I took both Machine Learning and Deep Learning courses there.

DeepLearning.ai and Workera.ai

DeepLearning.ai and Workera .ai

  • Take the 5 course Deep Learning series, if you are interested in Deep Learning techniques in computer vision (CV) or natural language processing (NLP)

    Take the 5 course Deep Learning series, if you are interested in Deep Learning techniques in computer vision (CV) or natural language processing (NLP)
  • Pass their screening test to be referred to hiring managers in ML groups in top tech companies

    Pass their screening test to be referred to hiring managers in ML groups in top tech companies

Elements of Programming Interviews Book: This is another excellent interview preparation book, similar to the CtCI book. But it is more geared towards experienced engineers, while CtCI can be read by beginners who have little algorithms background.

Elements of Programming Interviews Book: This is another excellent interview preparation book, similar to the CtCI book. But it is more geared towards experienced engineers, while CtCI can be read by beginners who have little algorithms background.

GeeksForGeeks: Like LeetCode, this is another website with very comprehensive A&DS questions and solutions. This site is free, and sometimes contains interview questions not found in LeetCode.

GeeksForGeeks : Like LeetCode, this is another website with very comprehensive A&DS questions and solutions. This site is free, and sometimes contains interview questions not found in LeetCode.

Glassdoor

Glassdoor

      • Check a company’s employee reviews

        Check a company's employee reviews
      • Find previous interview questions

        Find previous interview questions
      • Set up job alerts to receive new job updates

        Set up job alerts to receive new job updates

      Google Search: The starting point for ANY question in life. Do I need to say more?

      Google Search : The starting point for ANY question in life. Do I need to say more?

      Internal Employees: Always try to reach out to your friends, or friends of friends, that work in the companies you want to apply to. They will be your most effective informants as well as advocates. Connect with me on LinkedIn, and if you are a good fit, I would be happy to refer you to Google myself, or one of my friends who work at other top tech firms.

      Internal Employees: Always try to reach out to your friends, or friends of friends, that work in the companies you want to apply to. They will be your most effective informants as well as advocates. Connect with me on LinkedIn , and if you are a good fit, I would be happy to refer you to Google myself, or one of my friends who work at other top tech firms.

      LeetCode

      LeetCode

      • Practice A&DS questions

        Practice A&DS questions
      • Use LeetCode Premium ($35/month or $99/year with coupon) to find past interview questions asked by a given company. I recommend paying for the annual membership. Just think of it as a gym membership for your coding brain.

        Use LeetCode Premium ($35/month or $99/year with coupon) to find past interview questions asked by a given company. I recommend paying for the annual membership. Just think of it as a gym membership for your coding brain.

      Level.fyi: This site lists crowdsourced salary information by company, by seniority levels, by location, and by job function, so you will know if you are getting a fair offer from the companies. Of course, this works well only for larger companies, as there are more data points.

      Level.fyi : This site lists crowdsourced salary information by company, by seniority levels, by location, and by job function, so you will know if you are getting a fair offer from the companies. Of course, this works well only for larger companies, as there are more data points.

      LinkedIn:

      LinkedIn :

      • Lookup people’s professional and educational background

        Lookup people's professional and educational background
      • Turn on “Open to new opportunities” setting so that recruiters can find you.

        Turn on “Open to new opportunities” setting so that recruiters can find you.
      • Use LinkedIn Premium to connect to people who interest you

        Use LinkedIn Premium to connect to people who interest you
      • Set up job alerts to receive new job updates

        Set up job alerts to receive new job updates

      Medium/Blog Sites:

      Medium / Blog Sites :

      • Read tutorials and how-tos to help with your personal projects

        Read tutorials and how-tos to help with your personal projects
      • Blog on Medium or elsewhere to showcase your own personal projects

        Blog on Medium or elsewhere to showcase your own personal projects

      TripleByte: Skip the phone interviews and directly go to on-sites if you pass their tech screening. See detailed description above

      TripleByte : Skip the phone interviews and directly go to on-sites if you pass their tech screening. See detailed description above

      YouTube

      YouTube

          • Watch tutorials and how-tos when you work on your personal projects

            Watch tutorials and how-tos when you work on your personal projects
          • Watch System Design and algorithm videos

            Watch System Design and algorithm videos
          • CAUTION: Do NOT get distracted and watch hours of videos for fun during your interview prep time

            CAUTION: Do NOT get distracted and watch hours of videos for fun during your interview prep time

          That's all. This is a huge undertaking. But if you put in the time and effort, you can do it.

          就这样。 This is a huge undertaking. But if you put in the time and effort, you can do it.

          翻译自: https://www.freecodecamp.org/news/career-switchers-guide-to-your-dream-tech-job/

          语音转换成文本 技术实现

          评论
          添加红包

          请填写红包祝福语或标题

          红包个数最小为10个

          红包金额最低5元

          当前余额3.43前往充值 >
          需支付:10.00
          成就一亿技术人!
          领取后你会自动成为博主和红包主的粉丝 规则
          hope_wisdom
          发出的红包
          实付
          使用余额支付
          点击重新获取
          扫码支付
          钱包余额 0

          抵扣说明:

          1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
          2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

          余额充值