面试 技术 教训_我在30天内进行60多次技术面试的经验教训

面试 技术 教训

In this article, I’ll share my motivation for doing 60+ technical interviews in 30 days. More importantly, I’ll share lessons learned from my failures and my successes.

在本文中,我将分享在30天内进行60多次技术面试的动机。 更重要的是,我将分享从失败和成功中学到的经验教训。

I’ve grouped the lessons into three categories to match the phases of a typical recruitment process.

我将课程分为三类,以匹配典型招聘过程的各个阶段。

While most of the lessons apply directly to software engineers and technical professionals, the principles behind these lessons can be applied to all careers. I hope you find something useful that you can apply to your professional lives.

尽管大多数课程直接适用于软件工程师和技术专业人员,但这些课程的原理可以适用于所有职业。 我希望您能找到一些对您的职业生活有用的东西。

我是如何开始的? (How did I get started?)

“If you’re going to fail, do it fast.” — Unknown
“如果您要失败,那就快点做。” —未知

Like any other software engineer, I’ve had different types of technical interviews - from the dreaded whiteboard coding interview to the unreal 45-minute coding challenge on platforms like HackerRank. While some of my experiences in these interviews were great, others were bad. Really bad.

像任何其他软件工程师一样,我经历过不同类型的技术面试-从可怕的白板编码面试到在HackerRank等平台上虚幻的45分钟编码挑战。 尽管我在这些采访中的一些经历很不错,但另一些则很糟糕。 特别糟糕。

But I wanted to get really good at interviewing. I wanted to learn to overcome the interviewing phobia and exude confidence at interviews. Like a skilled surfer, I wanted to learn to ride the high pressure waves that came with interviews. I was also looking to change jobs at the time.

但是我想变得非常擅长面试。 我想学会克服面试恐惧症,并在面试中散发出信心。 像一个熟练的冲浪者一样,我想学习驾驭采访带来的高压浪潮。 当时我也想换工作。

So from January through early March 2020, I applied to and was contacted by companies based in the US and Europe. From early-stage startups like Coda to later stage startups like Crunchbase, from mid-size companies like Affirm, to bigger companies like Amazon and even remote companies like Webflow.

因此,从2020年1月到2020年3月上旬,我向位于美国和欧洲的公司提出申请并与他们联系。 从像Coda这样的早期创业公司到像Crunchbase这样的后期创业公司,从像Affirm这样的中型公司,再到像Amazon这样的大公司,甚至是像Webflow这样的远程公司。

109+ applications later, I landed myself more than 60 interviews. These comprised more than 60 introductory phone interviews, 50+ technical phone screen interviews, 18 take-home coding projects, 11 coding challenges and 8 on-site interviews including 3 virtual ones.

109多个应用程序之后,我进行了60多次面试。 这些内容包括60多次介绍性电话采访,50多个技术电话屏幕采访,18个带回家的编码项目,11个编码挑战以及8个现场采访,其中包括3个虚拟采访。

我学到了什么? (What did I learn?)

For better appreciation, I have grouped the lessons into three categories to match the different phases of a typical recruitment process.

为了更好地理解,我将课程分为三类,以匹配典型招聘过程的不同阶段。

面试前阶段 (Pre-Interview Phase)

This covers everything from the initial contact with a company to the point where the first interview happens.

这涵盖了从与公司的最初联系到首次面试的时间。

我从应用中学到的知识 (What I learned about applications )

When I started applying to companies, I imagined that the more applications I submitted, the higher my chances of getting an interview would be. Seems logical, huh? So I set a target of 5 applications a day, aiming for 1 interview for every 5 applications.

当我开始向公司提出申请时,我以为我提交的申请越多,获得面试的机会就越大。 看起来合乎逻辑,对吧? 因此,我设定了每天5个申请的目标,目标是每5个申请进行1次面试。

But my strategy didn’t work as I hoped it would. The number of interview requests I got often fell short of my target. It was almost a 1:12 ratio - 1 interview for every 12 applications.

但是我的策略没有达到我希望的那样。 我经常收到的面试请求数量没有达到目标。 这几乎是1:12的比例-每12个应用程序有1个面试。

I was faced with the question: do I need to increase my daily target to, say, 10 companies? Or was there something else I needed to change?

我面临一个问题:我是否需要将每日目标提高到10家公司? 还是我需要更改其他内容?

With every unsuccessful application, I saw that something needed to change.

对于每个不成功的应用程序,我看到需要进行一些更改。

That change came when I took a break from meeting my daily numbers and began to think of my applications differently. I began to see each application as a sales pitch to the hiring manager or whoever was going to be reading my application, but here the product being sold was me.

发生这种变化的时候,我休息了一天的会议时间,开始以不同的方式考虑我的应用程序。 我开始将每个应用程序视为对招聘经理的销售推销,或者是将要阅读我的应用程序的任何人,但是这里出售的产品就是我。

If a company needed to fill a talent gap and I say I had the skills, I needed to find a way to convince them that I did.

如果一家公司需要填补人才缺口,而我说我拥有技能,那么我需要找到一种方法使他们信服我。

My new task then became to find a way to effectively pitch my unique skills, experience and personality in a way that convinced the hiring manager that I was the right fit for the job.

然后,我的新任务便是找到一种有效地推销我的独特技能,经验和个性的方法,这种方法可以使招聘经理相信我是最适合这份工作的。

Here is an example of one of such pitches I came up with:

这是我提出的其中一种推销的示例:

面试 技术 教训_我在30天内进行60多次技术面试的经验教训

Backed with my resume, this cover letter had a 95% success rate. The one time this didn’t work, the hiring manager still replied to let me know that the position was no longer available but he would like to connect in the future.

加上我的简历,这封求职信的成功率达到了95%。 有一次,这不起作用,招聘经理仍然回答,让我知道该职位不再可用,但他希望将来联系。

The lesson here is, be very intentional about the application you put forward – quality over quantity. Better still do both. Know your unique competencies and experience and present them in a way that matches the company’s needs without sacrificing your personality.

这里的课程是,非常有针对性地建议您提出的应用程序-质量胜于数量。 最好还是两者都做。 了解您的独特能力和经验,并以符合公司需求的方式展示它们,而又不会牺牲您的个性。

It is also important to understand the peculiarity of the company you are applying to and its specific needs. A startup or a smaller-sized company may have different needs from a bigger company, thus requiring a different skill-set.

了解您要申请的公司的特点及其特定需求也很重要。 初创公司或小型公司可能与大型公司有不同的需求,因此需要不同的技能。

Sell yourself and be sure to back your sales pitch during the interview.

推销自己,并确保在面试中支持您的销售。

我从招聘人员的电子邮件中学到的知识 (What I learned about recruiter in-mails )

During this period, I received a number of in-mails from recruiters (mostly unsolicited) for open roles, the majority of which were roles I wasn’t interested in.

在此期间,我从招聘人员那里收到了很多公开职位的邮件(大多数是未经请求的),其中大部分是我不感兴趣的职位。

Granted, it was sometimes a lot given my busy schedule but I learned to be empathetic, understanding that these recruiters were only trying to do their jobs.

当然,由于我的日程安排很忙,有时很多,但我了解了这些招聘人员只是在尝试做他们的工作,因此变得善解人意。

I stopped seeing these in-mails as noise in my inbox and started making the effort to reply to all recruiter in-mails, even for positions I was not interested in. By doing this, I succeeded in building a network of recruiters that have become a rich resource if I have to switch roles in the future.

我不再将这些邮件视为收件箱中的杂音,并开始努力回复所有招聘人员的邮件,即使对于我不感兴趣的职位。这样做,我成功地建立了一个招聘人员网络如果将来我必须转换角色,这是一个丰富的资源。

Now I don’t expect you may want to start replying to every in-mail you receive. But it might interest you to know that some of the interview requests I got were from recruiters I had replied to before for roles I wasn’t interested in. It never hurts to reply.

现在,我不希望您可能希望开始回复收到的每个电子邮件。 但是,您可能会想知道,我收到的一些面试要求来自我之前对我不感兴趣的职位而应聘的招聘人员。答复毫无疑问。

面试阶段 (The Interview Phase)

This covers everything about the interview itself, cutting across the different interview types.

这涵盖了采访本身的所有内容,涵盖了不同的采访类型。

如何处理介绍性电话 (How to handle introductory phone calls)

Yes I get it, you’re busy and many things are competing for your time. But hey, you are also an excellent professional, and that means you never get on a phone call without knowing at least these two things:

是的,我明白了,您很忙,很多事情正在争夺您的时间。 但是,您也是一个出色的专业人员,这意味着您至少在不了解以下两件事的情况下就不会打过电话:

  • the first name of your interviewer, and

    您的面试官的名字,以及
  • at least one tangible thing about the company — what they do, where they are located, any recent news, something, anything!

    关于公司的至少一件事-他们的工作,所处的位置,任何最近的新闻,某事,任何事!

I noticed that for interviews where I put in the effort to make these findings, I always came across as being genuinely interested in the company. That’s something recruiters typically look for in these kinds of interviews.

我注意到,在我努力做出这些发现的采访中,我总是发现自己对公司真正感兴趣。 招聘人员通常会在这类面试中寻找这些东西。

如何处理技术电话屏幕 (How to handle technical phone screens)

The one thing that can almost single-handedly decide how well you do in a technical phone screen interview is your ability to communicate your thoughts clearly.

几乎可以单枪匹马决定您在技术电话屏幕采访中做得如何的一件事是您能够清楚地表达自己的想法。

You may have heard stuff like this before:

您之前可能已经听说过这样的事情:

The interviewers care about your thought process. Yes they can see your code but importantly, they want to know why you are doing what you’re doing.”

面试官关心您的思考过程。 是的,他们可以看到您的代码,但重要的是,他们想知道您为什么要执行自己的工作 。”

The interviewer isn’t there with you and so does not have the luxury of seeing other non-verbal cues like your hand gestures or nuances. All the interviewer has is your voice as a means of understanding your thought process.

面试官不在您身边,因此无法看到其他非言语提示,例如您的手势或细微差别。 面试官所拥有的只是您的声音,可以理解您的思维过程。

Now you know how you should lead this conversation, the next question is how do you become good at this? Because the truth is, while expressing your thoughts may come naturally to some people, it doesn’t to others – including me.

现在您知道了如何进行对话,接下来的问题是您如何才能做到这一点? 因为事实是,虽然表达您的想法对某些人来说很自然,但对其他人却不然,包括我在内。

So – Practice! Practice!! Practice!!!

所以–练习! 实践!! 实践!!!

Practice doing a lot of mock interviews. Doing these mock interviews with friends made me better and more confident in explaining my thought process. But more interestingly, it helped me develop a new mindset about interviews.

练习进行很多模拟面试。 与朋友进行这些模拟采访使我在解释自己的思维过程时变得更好,更自信。 但更有趣的是,它帮助我建立了关于面试的新思维。

I began to see interviews as a conversation with a friend or a team member. I visualized the interviewer on the other end as one of my friends (I sometimes gave the interviewer a name in my head). So what would have been a high-pressure interview I now saw as a friendly ‘chat’ about a technical problem.

我开始将采访视为与朋友或团队成员的对话。 我将访问者的另一端想象成我的一个朋友(有时我在我的头上给访问者一个名字)。 因此,这本来是一次高压采访,我现在认为这是关于技术问题的友好“聊天”。

This new mindset, aided by the many practice interviews, helped me grow in confidence so much so that I started enjoying interviews, sorry, technical chats.

在许多实践面试的帮助下,这种新的思维方式帮助我增强了信心,以至于我开始享受面试,对不起的技术聊天。

如何开始解决问题 (How to get started on a problem)

Never start solving a problem without fully understanding the problem statement. You are almost never wrong if you start by asking clarifying questions. It’s also a good sign to your interviewer when you ask those questions rather than run with your assumptions.

在不完全理解问题说明的情况下,切勿开始解决问题。 如果您先问清楚问题,那么您几乎永远不会出错。 当您问这些问题而不是假设时,这对您的面试官也是一个好兆头。

如何解决问题 (How to solve the problem )

Good candidates know how to solve a problem (e.g. a sorting problem), but the best candidates know multiple solutions to a problem and understand the trade-offs of one solution versus the other.

优秀的候选人知道如何解决问题(例如排序问题),但是最好的候选人知道如何解决问题,并了解一种解决方案与另一种解决方案之间的权衡。

The interviews where I performed the best (Cruise comes to mind) are the ones where I didn’t just solve the algorithmic challenge – I was also able to provide alternative solutions and discuss the trade-offs.

我表现最好的采访(想到了巡航)是我不仅解决算法难题的采访-我还能够提供替代解决方案并讨论取舍。

Aim to provide multiple solutions to a problem, be willing to discuss the trade-offs, and be able to implement at least one of them.

旨在为问题提供多种解决方案,愿意讨论取舍,并能够实施其中至少一个。

For technical interviews, write clean code. Most interviewers care about your code quality as well as the correctness of your solution. Aim for modular code, separate reusable logic into utility functions, name variables and methods properly, and just be a boss!

对于技术面试,请编写简洁的代码。 大多数访问员都在乎您的代码质量以及解决方案的正确性。 旨在获得模块化代码,将可重用的逻辑分离为实用程序功能,正确命名变量和方法,然后当老板!

当您遇到问题时该怎么办 (What to do when you’re stuck on a problem)

There will be times when you’re stuck. And this could be caused by a number of reasons: you don’t have the requisite knowledge, incorrect assumptions, missing details, and so on.

有时您会被卡住。 这可能是由多种原因引起的:您没有必要的知识,不正确的假设,缺少详细信息等等。

I used to think that at such times I was being judged by how fast I could come up with a solution. So I would be quiet, thinking, not communicating with the interviewer, just thinking.

我曾经以为在这样的时候,我被判断出我能以多快的速度来解决。 所以我会安静,思考,不与面试官沟通,只是思考。

And this is where a lot of us get it wrong. I get it, you need some alone time to think. But sorry to burst your bubble, that alone time is not when you’re being interviewed by a person.

这就是我们许多人错误理解的地方。 我明白了,您需要一个人思考的时间。 但是很抱歉,您的泡沫破灭了,那不是一个人在面试的时候。

Yes, your interviewer wants to see that you can come up with a solution, but one thing you must not forget is that they also want to see that you can collaborate with other team-mates to come up with a solution. While companies want rock-stars, they also want team-players.

是的,您的面试官希望看到您可以提出解决方案,但是您一定不能忘记的是,他们还希望您可以与其他队友合作提出解决方案。 虽然公司想要摇滚明星,但他们也想要团队合作者。

Since your interviewer is a friend, a buddy, a team member who’s on your side and means well for you (Refer to 4), talk to them while you're figuring it out.

由于您的面试官是您的朋友,好友,团队成员,在您的身边并且对您有好处(请参阅4),因此请在与您交谈时与他们交谈。

Share your thought process up till the point you got stuck and do it confidently, not like some cry for help. By doing so you just may uncover the solution, as was the case during my interview with Coda.

分享您的思想过程,直到遇到困难为止,并自信地做下去,而不是像哭泣般寻求帮助。 这样,您可能会发现解决方案,就像在接受Coda采访时的情况一样。

如何应对编码挑战 (How to handle coding challenges)

The lessons here apply to interviews that take the form of coding challenges on platforms like Hackerrank, Codility, and so on. Typically these are timed challenges, say 45 minutes or sometimes could be more.

这里的课程适用于在Hackerrank,Codility等平台上采取编码挑战形式的访谈。 通常,这些都是定时挑战,例如45分钟,有时甚至更长。

Some of the lessons I shared earlier are useful here, while others like asking clarifying questions don’t apply since there’s no one to ask. So here are some steps I recommend:

我之前分享的一些课程在这里很有用,而其他一些问题(如问清楚问题)则不适用,因为没有人要问。 因此,我建议您执行以下步骤:

  • Read through and fully understand the problem.

    通读并完全理解问题。
  • Write code that works first, even if it’s a brute-force algorithm. It may not pass all the test cases but get some working code out there first, hopefully within the first 15–20 minutes.

    编写最有效的代码,即使它是蛮力算法 。 它可能无法通过所有测试用例,但会首先从那里获得一些工作代码,希望在最初的15-20分钟之内。

  • Test your code with different input types, as this helps you handle edge cases.

    使用不同的输入类型测试代码,因为这可以帮助您处理极端情况。
  • Optimize for efficiency.

    优化效率。
  • Repeat Steps 4 and 5, till the very last minute.

    重复步骤4和5,直到最后一分钟。

A good grasp of computer science fundamentals is key here. I’ve added some links to helpful resources in the Resources section below.

掌握计算机科学基础知识是这里的关键。 我在下面的参考资料部分中添加了一些指向有用资源的链接。

如何处理实地项目 (How to handle take-home projects)

Take home projects are an opportunity to really shine because you have more time. This also means they can be time-consuming.

带回家的项目是一个真正发光的机会,因为您有更多的时间。 这也意味着它们可能很耗时。

One of the companies I interviewed with provided hourly pay, about $68/hr, for the number of hours you worked on their take-home project — it’s that serious, so you should be serious about it. Be sure you really want to be a part of a company before investing your time in the take-home projects.

我采访过的一家公司提供的时薪约为68美元/小时,这是您从事带回家项目的小时数-太严重了,所以您应该认真对待。 在把时间花在带回家的项目上之前,请确保您确实想成为公司的一员。

Never compromise on code quality for take-home projects. Be very intentional about your design decisions, naming conventions, code structure and so on, and be ready to defend your choices.

切勿在实干项目中牺牲代码质量。 对设计决策,命名约定,代码结构等非常有心,并准备捍卫您的选择。

您应该使用什么工具? (What tools should you use?)

During my interview with Course Hero, I used regex to solve a problem I could have solved using a simpler string parsing algorithm. It turned out to be a bad decision as I didn’t pass the interview.

在接受Course Hero采访时,我使用正则表达式解决了使用更简单的字符串解析算法本可以解决的问题。 事实证明这是一个错误的决定,因为我没有通过面试。

The lesson: only use tools you’re very comfortable with and have a lot of experience with.

课程:仅使用您非常熟悉并有很多经验的工具。

如何进行现场采访 (How to approach on-site interviews)

Get a good night's sleep the night before. Arrive early on the day of your interview and smile a lot (it helps portray confidence, but more importantly helps you stay relaxed and be in control).

前一天晚上睡个好觉。 在面试的当天早些时候到来并微笑很多(这有助于表达信心,但更重要的是,可以让您保持放松并控制自己)。

Confront your fears and accept that even if this doesn’t work out it’s not going to be the end of the world – after all you’re just going to have another technical chat. Then go in and absolutely chat away.

面对您的恐惧并接受,即使这不能解决问题,这也不是世界末日–毕竟,您将要进行另一场技术交流。 然后进去,绝对聊天。

How to approach virtual on-site interviews

如何进行虚拟现场采访

These can be very different from on-site interviews because everybody’s eyes are on you – literally – and that can be nerve-racking.

这些与现场采访可能会大不相同,因为从字面上看,每个人的眼睛都在注视着您而且这可能令人不安。

I had three virtual on-site interviews and I didn’t pass any of them. Sorry I’m not your guy for this one, but I’ve shared some resources that I think you may find helpful below.

我进行了三个虚拟的现场采访,但没有一次通过。 抱歉,我不是这个人,但我分享了一些资源,我认为您可能会在下面找到帮助。

面试后 (After the Interview)

如何处理失败 (How to handle failure )

There are many reasons why you didn’t pass an interview. Some of the best engineers I know have failed interviews at some point and still do.

您没有通过面试的原因有很多。 我认识的一些最好的工程师在某些时候都没有通过面试,现在仍然如此。

So separate failed interviews from yourself, look for the learning points from each failed interview, and use those to forge ahead. As they say – we move!

因此,将失败的面试与您自己分开,从每次失败的面试中寻找学习要点,并利用这些点进取。 正如他们所说–我们行动!

那么成功呢? (What about success?)

Celebrate your successes, regardless of how small you think they are.  I have a few ideas for celebration.

庆祝成功,无论您认为自己有多渺小。 我有一些庆祝的想法。

这样之后我会更好吗? (Am I better after doing this?)

I’m not going to tell you that I've aced every interview that has come my way since I embarked on this journey. But assuredly, I can tell you I have gotten better at interviewing and my confidence levels have really grown. And yes, I also got multiple offers too ????.

我不会告诉您,自从我踏上这段旅程以来,我已经完成了每次采访。 但可以肯定的是,我可以告诉你,我在面试方面已经变得更好,我的自信心水平确实得到了提高。 是的,我也有多个优惠????。

接下来您该怎么办? (What should you do next?)

  • Practice doing a lot of mock interviews with friends. While I don’t totally agree that practice makes perfect (because perfection sounds like a moving target to me) practice helps you quickly identify patterns in interview questions, grow in mastery and ultimately your confidence.

    练习与朋友进行很多模拟面试。 尽管我并不完全同意练习是完美的(因为完美听起来对我来说是一个移动的目标),但练习可以帮助您快速确定面试问题的模式,精通掌握并最终建立信心。

  • For technical interviews, nothing beats a very good understanding of the fundamentals of data structures and algorithms. I’ve added links to resources I think you may find helpful.

    对于技术面试,没有什么能比对数据结构和算法的基本原理更好的理解了。 我添加了一些资源链接,我认为您可能会有所帮助。
  • Start interviewing and keep interviewing. Even if you have a job, aim to interview every now and then — maybe once every other month or a quarter. Interviewing is a skill, so keep honing it.

    开始面试并继续面试。 即使您有工作,也要不时进行面试-也许每隔一个月或一个季度进行一次面试。 面试是一种技巧,所以要不断磨练。

I really hope this was helpful to you. And hopefully some of the lessons shared here will make you more confident and better at interviewing – and will ultimately help you land that job you really want.

我真的希望这对您有帮助。 希望这里分享的一些经验教训将使您在面试时更加自信和更好–最终将帮助您找到您真正想要的工作。

If you ever need someone to do a mock interview with you, feel free to reach out to me on Twitter @meekg33k.

如果您需要某人与您进行模拟面试,请随时通过Twitter @ meekg33k与我联系

E go be ✌️

E去成为 ✌️

有用的资源 (Helpful Resources)

Thanks to Isaac Zara for the header image for this article.

感谢Isaac Zara提供本文的标题图片。

翻译自: https://www.freecodecamp.org/news/what-i-learned-from-doing-60-technical-interviews-in-30-days/

面试 技术 教训