编码 面试_我的编码面试失败

编码 面试

Coding interviews are a love/hate relationship for most software engineers. There are radical vantage points on what is the right way to interview an incoming software engineer for a specific or general position. These interviews can be high-level conceptual conversations, screen-sharing interviews (i.e., Collabedit), whiteboarding, paired-coding, or a variety of other styles. There is not a consistent pattern or style of interview within the tech industry.

对于大多数软件工程师而言,编码访谈是一种爱恨交织的关系。 关于针对特定或一般职位面试即将到来的软件工程师的正确方法,存在一些根本性的优势。 这些采访可以是高级概念性对话,屏幕共享采访(即Collabedit),白板,配对编码或多种其他样式。 科技行业内没有统一的面试方式或面试方式。

What does that mean? It means that engineers and developers do not know how to properly prepare for every single interview. These interviews vary drastically different in topic and level of difficulty from company to company.

那是什么意思? 这意味着工程师和开发人员不知道如何为每次面试做好准备。 这些访谈的主题和难度因公司而异。

Common among clients in the past, these interviews center on writing code on a whiteboard while having the interviewee “think out loud” and explain themselves every step of the way. It’s an odd and somewhat dated process, but these interviews aren’t structured this way in order to optimize for modern implementation.

过去在客户中很常见,这些访谈的重点是在白板上编写代码,同时让受访者“大声思考”并向自己解释每一步。 这是一个奇怪且有些过时的过程,但是这些采访并不是为了优化现代实施而采用的这种结构。

Image for post

为什么编码面试是标准的 (Why Coding Interviews Are Standard)

If you ask an engineer about their experience in a coding interview, every engineer’s answer is going to be drastically different depending on their background. It is a very sensitive and controversial topic. You do not want me to repeat some of the comments and stories that I’ve heard over the years. (You may end up with bloody ears or a sore stomach from laughing.) Most engineers believe that technical interviews are not relevant to the actual position, nor do they show the individual’s true technical competency.

如果您向工程师询问他们在编码面试中的经验,则每个工程师的答案都将因他们的背景而大不相同。 这是一个非常敏感和有争议的话题。 您不希望我重复多年来听到的一些评论和故事。 (您可能会因笑而流血或胃痛。)大多数工程师认为,技术面试与实际职位无关,也不表明个人的真正技术能力。

Image for post

And these people have a point — these interviews don’t represent real work. Developers never really have to write in-depth code on a whiteboard during the day-to-day job. In addition, the majority of topics covered in coding interviews are never seen outside of interviews. How often, for example, will a front-end developer specializing in React have to traverse a B-Tree in a specific, algorithmic way? Never, unless they’re doing something deeply wrong.

这些人有观点-这些采访并不代表真正的工作。 在日常工作中,开发人员无需真正在白板上编写深入的代码。 此外,编码访谈中涵盖的大多数主题在访谈之外从未见过。 例如,专门从事React的前端开发人员多久必须以一种特定的算法方式遍历B树? 永远不要,除非他们做错了什么。

When a candidate does run into an interview that represents real-world problems that would need to be solved in the day-to-day of the actual position it’s mind-blowing. I have had candidates leave an interview with a coding assignment that they were actually excited to complete because they felt like they would understand the company’s problem and add real value.

当候选人确实遇到了代表实际问题的面试时,就需要在实际职位的日常工作中加以解决,这真是令人难以置信。 我曾让候选人带着编码作业离开面试,他们实际上很高兴完成这项工作,因为他们觉得自己会理解公司的问题并增加真正的价值。

Even more aggravating? Coding interviews are often entirely unfair. Even the creator of Brew — with tens of millions of installs — was invited to interview at Google and then rejected because he couldn’t solve a B-Tree problem.

还会加剧吗? 编码采访通常是完全不公平的。 甚至连具有数千万次安装的Brew的创建者也被邀请到Google进行采访,但由于他无法解决B-Tree问题而被拒绝。

Software engineers love to trick the interviewees and give extremely challenging questions. If you get the initial problem, it’s then common practice for an interviewer to throw a wrench in your solution, make the problem even harder, and create arguably unnecessary stress.

软件工程师喜欢欺骗被访者并提出极具挑战性的问题。 如果您遇到了最初的问题,那么面试官通常会在解决方案中投入一把扳手,使问题更加棘手,并产生不必要的压力。

So why are they given?

那么为什么给他们呢?

For all their faults, coding interviews prove three things:

对于所有的缺点,编码采访证明了三件事:

  • The candidate really wants the job and has put significant effort into preparation. If an interviewee hasn’t spent the time to get good at the process, it’s quite obvious. Companies want to hire people who put in the effort.

    候选人真的很想要这份工作,并已投入大量精力进行准备。 如果受访者没有花时间去完善这个过程,那就很明显了。 公司想聘请付出努力的人。
  • The software engineer can solve problems and actually code. Engineers who have to copy/paste scripts other people made or who don’t have enough experience with a language will often make big mistakes while problem-solving and coding up solutions.

    软件工程师可以解决问题并进行实际编码。 不得不复制/粘贴他人编写的脚本或没有足够的语言经验的工程师在解决问题和编写解决方案时常常会犯重大错误。
  • The software engineer can effectively articulate their problem-solving. Engineers often will fail to solve the problem, only to find that they actually passed the interview. How? The interviewer decided their thought process was good enough.

    软件工程师可以有效地阐明他们的问题解决方案。 工程师常常无法解决问题,只是发现他们确实通过了面试。 怎么样? 面试官认为他们的思考过程足够好。

编码面试如何在各公司间变化 (How Coding Interviews Vary Across Companies)

How a company interviews people is a direct correlation with the quality of talent they attract. The best companies optimize their recruiting processes to reduce false positives. A bad hire that made it through the process will hurt the company much more than rejecting a potentially good hire. The best companies tend to have the hardest interviewing process.

公司如何面试人与他们吸引的人才素质直接相关。 最好的公司会优化其招聘流程,以减少误报。 导致整个过程失败的糟糕员工,比拒绝潜在的优秀员工,对公司的伤害更大。 最好的公司往往面试过程最困难。

Therefore, when you find that a hiring process especially easy, it’s likely the company has weaker engineering. This isn’t always true, of course, but it’s certainly something to keep in mind.

因此,当您发现招聘过程特别容易时,很可能是该公司的工程能力较弱。 当然,并非总是如此,但是一定要记住这一点。

Image for post

Since it’s extraordinarily tough to guess which topics will be covered in an interview, the keenest strategy to prepare is to literally prepare for everything. That is, if you really want a great job. Otherwise, ask the recruiters or hiring managers for something to study/prepare prior to the interview. If you need time to prepare, be direct and honest.

由于很难猜测采访中将涵盖哪些主题,因此最敏锐的准备策略是为所有事情做好准备。 也就是说,如果您真的想要出色的工作。 否则,在面试之前请招聘人员或招聘经理提供一些学习/准备的内容。 如果您需要时间进行准备,请保持坦诚。

准备就是一切! 但是如何? (Preparation Is Everything! But How?)

It takes time to be proficient at interviews. They are a completely new muscle in your body that needs exercise and training. If you don’t continuously touch base with the fundamentals, you’ll eventually be the fat cat that can’t waddle its way to the bathroom anymore. You don’t want that! Don’t piss on yourself when you go to the interview! When people begin the process of preparation, it feels like you’re running a mile again after five years of zero cardio.

精通面​​试需要时间。 它们是您体内需要锻炼和训练的全新肌肉。 如果您不持续接触基本知识,您最终将成为无法再步入浴室的肥猫。 你不要那个! 去面试时不要生气! 当人们开始准备过程时,感觉到五年有氧运动后,您又跑了一英里。

You have to have faith in research, studying, and practice. Run some practice laps once in a while.

您必须对研究,学习和实践充满信心。 偶尔跑一些练习圈。

If you want to work at a top tech firm, like Google or Facebook, we recommend you practice for:

如果您想在像Google或Facebook这样的顶级高科技公司工作,我们建议您练习:

  • Experienced engineer: four to six weeks, two hours a day

    经验丰富的工程师:每天四到六周,每天两小时

  • New engineer: six to eight weeks, three hours a day

    新工程师:六到八周,每天三小时

For more mid-range companies, like Series A/B startups, you can usually get away with less preparation:

对于更多的中型公司,例如A / B系列初创公司,通常可以通过较少的准备就摆脱困境:

  • Experienced engineer: two to four weeks, two hours a day

    经验丰富的工程师:每天两到四个星期,每天两个小时

  • Bootcamp graduate: four to six weeks, two or three hours a day

    训练营毕业生:每天四到六周,每天两到三个小时

Yes, it is a lot of time, and you may be thinking, “do I really need to prepare that much?”

是的,时间很长,您可能会想,“我真的需要准备那么多吗?”

And our answer is to look back up at that 10% number. You need to prepare this much if you actually want job offers. Even with this preparation, you should still expect to fail half of your interviews. (Sorry, but not sorry if you didn’t prepare.)

我们的答案是回头看那个10%的数字。 如果您确实需要工作机会,则需要准备很多。 即使进行了这种准备,您仍然应该期望会通过一半的面试。 (对不起,如果您不准备的话,请对不起。)

一些共同的主题 (Some of the common topics)

  • Trees

    树木
  • Hash tables

    哈希表
  • OOP, systems

    OOP,系统
  • Big O

    大O
  • Recursion

    递归
  • Stacks/queues

    堆栈/队列
  • Arrays

    数组
  • Linked lists

    链表
  • Algorithms: BFS, DFS, binary search, merge sort, quick sort

    算法:BFS,DFS,二进制搜索,合并排序,快速排序
  • Bit manipulation (few interviewers give these, but cover them anyway)

    操纵位(很少面试官会讲这些,但无论如何都要掩盖)

Expect questions relating to your experience as well: technologies, languages, frameworks, etc. SQL challenges and questions are very common.

还要期待与您的经验有关的问题:技术,语言,框架等。SQL挑战和问题非常普遍。

准备方法 (Methods to Prepare)

Some online training systems are fantastic. There are both paid and free training systems on the internet.

一些在线培训系统很棒。 互联网上有付费和免费的培训系统。

Some of these sites include:

这些网站包括:

  • Geeks for Geeks — Free — One-stop shop for a high-level overview of most technical interviews, from basic- to expert-level assignments. In addition, a lot of the top name brands have their interview prep requirements posted here.

    Geeks for Geeks —免费—一站式商店,对从基础级到专家级的大多数技术面试进行了高层概述。 此外,许多顶级品牌的面试准备要求都在此处发布。

  • Triplebyte — Free — Take a quick online coding quiz instead of providing a resume. The company will start to auto-match you with companies whose basic coding requirements you meet. Fast track interviews!

    三字节 —免费—进行快速在线编码测验,而不要提供简历。 公司将开始自动将您与满足基本编码要求的公司进行匹配。 快速采访!

  • Pramp — Free — Tell them when and what you want to practice and they’ll pair you with an optimal peer. They provide interview questions (and answers) you will both use to interview each other. Coding interviews are live video sessions with a collaborative code editor. You and your peer interview one another for 30 minutes each. After the interview, you both rate the other’s performance. Learn from peers’ feedback, gain confidence, and master the art of interviewing. Keep practicing until you interview like a rock star. Impress recruiters and land awesome job offers.

    Pramp-免费-告诉他们您什么时候想要练习什么,他们会为您与最佳同伴配对。 他们提供面试问题(和答案),您将使用它们分别进行面试。 编码采访是通过协作代码编辑器进行的实时视频会议。 您和您的同伴彼此面试30分钟。 面试后,你们俩都评价对方的表现。 从同龄人的反馈中学习,获得信心,并掌握面试的技巧。 继续练习,直到像摇滚明星一样面试为止。 给招聘人员留下深刻的印象,并提供出色的工作机会。

  • Interviewing.io — Free — Free, anonymous technical interview practice with engineers from Google, Facebook, and more. Get actionable feedback, get awesome at interviewing, get fast-tracked at top companies.

    Interviewing.io —免费—与Google,Facebook等公司的工程师免费,匿名进行技术面试。 获得切实可行的反馈,在面试中表现出色,在顶尖公司中获得快速发展。

  • Codefights — Free — There is an arcade to solve problems and advance your skills in an interactive environment like a videogame, interview practices, head-to-head coding competitions with peers or strangers, tournaments, and company bots.

    Codefights (免费)—在诸如视频游戏,面试实践,与同龄人或陌生人进行的头对头编码竞赛,锦标赛和公司机器人等交互式环境中,可以使用街机游戏解决问题并提高技能。

  • My Code School — Research a topic and ensure you understand it holistically.

    我的代码学校 -研究一个主题,并确保您全面地理解它。

  • Getboost.io — Tackle ~three easy practice problems and two hard practice problems, and review solutions until you understand them completely.

    Getboost.io —解决三个简单的练习题和两个困难的练习题,并查看解决方案,直到您完全理解它们为止。

As you complete each topic, realize that you’ll want to revisit it two or three times every week subsequently to keep it fresh in your mind. These things are easy to forget, and when you get a problem in an interview, you want the type of problem to be instantly recognizable.

完成每个主题后,请意识到您将需要每周重新访问两次或三遍,以使它保持新思想。 这些事情很容易忘记,当您在面试中遇到问题时,您希望问题的类型能够立即被识别。

As you train more and more, you will develop a level of intuition around new problems. The hardest part is getting started with preparation, so push through the difficulty.

随着培训的增加,您将对新问题有一定的直觉。 最困难的部分是开始准备,因此要克服困难。

如何知道何时准备好 (How to Know When You’re Ready)

You can’t know for sure. Even the most prepared people can freeze up and fail interviews, so at some point, you have to call it a day and jump into the deep end.

您不能确定。 即使是准备最充分的人也可能冻结并导致面试失败,因此在某些时候,您必须每天都这样称呼并跳入深渊。

Still, when do you jump?

不过,你什么时候跳?

If you can get a mock interview from someone at a top company, even if you have to pay for it, it’s worth it. They’ll both have a high bar and be able to give you specific feedback (as long as you’re outside of their company’s interview process). Maybe you have a buddy that will help you out.

如果您可以从顶级公司的某人那里进行模拟面试,即使您必须为此付费,那也是值得的。 他们俩都有很高的标准,并且能够为您提供具体的反馈(只要您不在他们公司的面试过程之内)。 也许您有一个可以帮助您的伙伴。

Finally, it’s worth stating that you can also treat your first interviews as initial groundwork. Simply apply to companies you’re less interested in, and use the interviews as practice. (I am sure some of the hiring managers reading this article are giving me the finger right now.) People will often take interviews they don’t actually care about in order to get live practice in front of companies.

最后,值得一提的是,您也可以将第一次面试视为最初的基础。 只需向您不感兴趣的公司提出申请,然后将面试作为练习即可。 (我确信某些正在阅读本文的招聘经理现在正在给我指头。)人们经常会接受他们实际上并不在意的面试,以便在公司面前进行现场实习。

Happy hunting and good luck!

狩猎愉快,祝你好运!

翻译自: https://medium.com/better-programming/i-failed-my-effing-coding-interview-648ffd355c30

编码 面试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值