delphi5开发人员指南
Landing a software engineering position can be one of the most difficult obstacles that you can face. Each rejection can feel like a punch to the face.
获得软件工程职位可能是您面临的最困难的障碍之一。 每次拒绝都会给人以冲击。
This is why it’s important to keep a positive mentality while taking this journey. The company you end up working at can be the 3rd company you apply to or the 200th. Not every company will be looking for the exact skill set that you have to offer, but there is at least one company out there that is. It’s a numbers game. Every rejection is an opportunity to learn from your mistakes, which only increases your chances of finding that perfect match.
这就是为什么在旅途中保持积极的心态很重要的原因。 您最终所在的公司可以是您申请的第三家公司或第二百家公司。 并非每个公司都会寻找您必须提供的确切技能,但是那里至少有一家公司。 这是一个数字游戏。 每一次拒绝都是从错误中学习的机会,这只会增加找到完美匹配的机会。
My goal is to show you what areas to focus on when applying to jobs and how you can become a champion in each one.
我的目标是向您展示在申请工作时应重点关注的领域,以及如何成为每个领域的冠军。
目录 (Table of Contents)
作品集 (Portfolio)
Your portfolio is the place where you’ll showcase your best work. It’s where you’ll prove that you can walk the walk. It’s comprised of your projects and your portfolio website.
您的作品集是展示最佳作品的地方。 您将在这里证明自己可以漫步。 它由您的项目和投资组合网站组成。
Note: I’ll be using “project” and “app” interchangeably.
注意:我将交替使用“项目”和“应用”。
专案 (Projects)
Companies want to see that you can apply your engineering skills to address an actual problem. Your app doesn’t have to be the next Khan Academy, but it should show that you can identify a problem and implement a way to solve it. To illustrate these points, I’ll talk about an app I built called Tangent.
公司希望看到您可以运用您的工程技能来解决实际问题。 您的应用不必一定是下一个可汗学院,但是它应该表明您可以识别问题并实现解决问题的方法。 为了说明这些观点,我将讨论我构建的名为Tangent的应用程序。
Tangent is a mobile application for students to convert handwritten mathematical equations to beautifully typed digital text.
Tangent是一个移动应用程序,可让学生将手写的数学方程式转换为精美的数字文本。
The first image below is an example of a handwritten math equation and the second is the digital text output. Students would then be able categorize these equations and save them for future studying.
下面的第一个图像是手写数学公式的示例,第二个图像是数字文本输出。 然后,学生将能够对这些方程式进行分类并将其保存以备将来学习。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/e33f3b13f09a87bb735e96922f58b20f.png)
The Problem
问题
Tangent solves a clear problem. It targets the inefficiencies of taking handwritten notes and gives the user an easy way to store math problems.
切线解决了一个明确的问题。 它解决了手写笔记效率低下的问题,并为用户提供了一种存储数学问题的简便方法。
The Implementation
实施
Tangent uses the same technologies of the companies I was applying to. I was applying to primarily web developer positions, so it utilized JavaScript, Node.js and MongoDB.
Tangent使用与我申请的公司相同的技术。 我主要是在Web开发人员职位上申请的,因此它利用了JavaScript,Node.js和MongoDB。
And since I was applying to several educational technology companies, I made sure to use APIs and libraries that made sense. For instance, I used the Mathpix API and Khan Academy’s KaTeX library.
由于我向多家教育技术公司提出了申请,因此我确保使用了有意义的API和库。 例如,我使用了Mathpix API和可汗学院的KaTeX库。
The journey to a finished product can be pretty daunting, so I’ll go over some guidelines on how to ace the main steps of the process.
最终产品的旅程可能会令人生畏,因此,我将介绍一些有关如何实现流程主要步骤的指南。
The Process
流程
Ideation
构想
At the end of the day, you are trying to solve a problem. The more motivated and inspired you are about the problem, the more productive you’ll be. So, I recommend generating a list of problem domains that are personal to you. Try keeping a notebook and writing down anything that annoys you or you wish were different. What issues do you see as you go about your day? What obstacles do you see your closest friends/family face? Try doing this for around a week and you should find a few good starting points. After you find a problem, brainstorm ways an app could solve it.
归根结底,您正在尝试解决问题。 您对这个问题越有动力和启发,您就会越有效率。 因此,我建议您生成一份针对您个人的问题域列表。 尝试保留笔记本并写下任何使您烦恼或您希望与众不同的烦恼。 您一天的工作中会看到哪些问题? 您看到最亲密的朋友/家人时遇到什么障碍? 尝试进行大约一周的操作,您应该找到一些不错的起点。 发现问题后,请集思广益,确定应用程序可以解决问题的方式。
Your worst enemy during this process is maladaptive perfectionism. I remember pacing in my room for hours critiquing my ideas. Every time I came across a decent idea, I ended up scrapping it because of one issue or another. Perfectionism can be a huge roadblock during this process, so don’t be afraid to simply pick an idea from your list and stick with it.
在此过程中,您最大的敌人是适应不良的完美主义。 我记得我在房间里花了几个小时来打扰我的想法。 每当我遇到一个不错的主意时,我都会因为一个或另一个问题而放弃它。 完美主义在此过程中可能是一个巨大的障碍,因此不要害怕从清单中挑选一个想法并坚持下去。
Now that you have identified a problem and how your app would solve it, it’s time to wireframe.
既然您已经确定了问题以及您的应用程序将如何解决该问题,现在该开始线框了。
2. Wireframing
2.线框
Wireframing allows you to visualize how the user will use your app. Imagine yourself in the user’s shoes and outline the steps they would take in the app to reach a particular goal.
通过线框图,您可以可视化用户将如何使用您的应用程序。 想象一下自己在用户的鞋子上,并概述他们在应用程序中要实现特定目标所应采取的步骤。
With Tangent, the main goal was to convert handwritten equations to digital text. Here are the initial wireframes I used for that workflow.
使用Tangent,主要目的是将手写方程式转换为数字文本。 这是我用于该工作流程的初始线框。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/e97f3ded51915cc413157588fd5b981a.png)
The more complex the app is, the more workflows you’ll need. Paper wireframes are a great way to flesh out all of your workflows quickly and easily. However, there are great tools to build more sophisticated wireframes like Marvel and InVision.
该应用程序越复杂,您将需要的工作流程越多。 纸线框是快速轻松地充实所有工作流程的好方法。 但是,有很多很棒的工具可以构建更复杂的线框,例如Marvel和InVision 。
Now that you have your workflows drawn out, it’s time to break these down into user stories.
现在您已经制定了工作流程,是时候将其分解为用户案例了。
2. Divide and Conquer with User Stories
2.划分和征服用户故事
User stories are how you make the jump from blueprint to code. They define the requirements of a specific feature in the app from the user’s perspective.
用户故事是您如何从蓝图过渡到代码。 他们从用户的角度定义应用程序中特定功能的要求。
Let’s use Tangent as an example. One of the features is that a user can view all of their saved problems. When they look at the screen, they see the subject and category of each equation. Let’s convert this feature into a user story.
让我们以切线为例。 功能之一是用户可以查看所有已保存的问题。 当他们看着屏幕时,他们看到每个方程的主题和类别。 让我们将此功能转换为用户故事。
Title: As a user, I can see all of my saved problems in one place, so I can easily access them when needed.
标题:作为用户,我可以在一个地方看到所有保存的问题,因此我可以在需要时轻松访问它们。
Acceptance Criteria:
验收标准:
- User can see the problems in a scrollable list format 用户可以滚动列表格式查看问题
- Each problem should show the subject and topic每个问题都应显示主题和主题
- When the user taps on any equation, they should be navigated to a detailed view of the problem当用户点击任何方程式时,应将其导航到问题的详细视图
As shown above, the main components of the user story are the title and the acceptance criteria.
如上所示,用户故事的主要组成部分是标题和接受标准。
The title is a short summary of the feature written from the user’s perspective. It’s helpful to format it like so:
的 title是从用户角度编写的功能的简短摘要。 像这样格式化它会很有帮助:
As a {end user}, I can {action}, so that I can {benefit}
作为{最终用户},我可以{行动},以便{受益}
The acceptance criteria is the set of requirements that must be completed to call the story done. As tempting as it may be: the acceptance criteria should not include implementation instructions. These user stories should be a description of what happens, not how it should be built.
接受标准是必须完成的一组条件才能调用已完成的故事。 可能很诱人:接受标准不应包括实施说明。 这些用户故事应该是对所发生情况的描述,而不是应如何构建。
The above user story is somewhat complex. It’ll probably require calls to the backend in order to fetch all of the problems. It may even need pagination to improve the user experience.
上面的用户故事有些复杂。 为了获取所有问题,可能需要调用后端。 甚至可能需要分页来改善用户体验。
Not every story has to be this complex. Some may be simply adding a save button or changing the color of text in the app. Knowing the size of a story will help you determine your capacity, or how many stories you can take on at any point in time. Companies will sometimes use Fibonacci numbers to describe the size of a story. A “3” might be a small design change. A “13” may be a riskier feature that may not have an obvious implementation strategy. It’s important to keep your stories as small as possible. If you’re sizing at a “21”, you should consider breaking down the story into multiple smaller ones.
并非每个故事都必须如此复杂。 有些可能只是添加一个保存按钮或更改应用程序中文本的颜色。 了解故事的大小将有助于您确定自己的能力或在任何时间点可以处理多少个故事。 公司有时会使用斐波那契数字来描述故事的大小。 “ 3”可能是一个很小的设计更改。 一个“ 13” 可能是一个风险较高的功能,可能没有明显的实施策略。 保持故事尽可能小很重要。 如果您将尺寸定为“ 21”,则应考虑将故事分解为多个较小的故事。
When working on smaller projects, I find it helpful to use T-shirt sizing. This involves sizing your stories as, small, medium or large. You can then assign a time duration for each size. Maybe small stories take 1–2 hours while large stories take a whole day to complete. This will vary depending on the type of app you’re building and your coding ability.
在处理较小的项目时,我发现使用T恤尺码会有所帮助。 这涉及将您的故事按大小,大小或大小排列。 然后,您可以为每种尺寸指定持续时间。 小故事可能需要1-2个小时,而大故事则需要一整天才能完成。 具体取决于您所构建的应用程序类型和编码能力。
These user stories are your source of truth and will make your development experience much smoother.
这些用户故事是您的真实来源,将使您的开发体验更加流畅。
Once you’ve finished your app, you can add it to your portfolio website!
完成应用程序后,可以将其添加到您的投资组合网站!
投资组合网站 (Portfolio Website)
Your portfolio website is your chance to show why you’re fit for that developer position. You’ll be able to utilize the visual potential that a website can provide in order to impress the recruiter/future employer in a way that a resume or LinkedIn profile simply cannot. I’ll breakdown the main components using my own portfolio website.
您的投资组合网站是您展示自己为何适合该开发人员职位的机会。 您将能够利用网站提供的视觉潜能,以简历或LinkedIn个人资料根本无法做到的方式打动招聘者/未来的雇主。 我将使用自己的投资组合网站细分主要组件。
About Me
关于我
This section should tell a brief story of who you are, your competencies, and what you hope to do with your career. Be as compelling as possible. Make sure to include these points below:
本节应简要介绍您是谁,您的能力以及您希望如何从事职业。 尽可能引人注目。 确保在下面包括以下几点:
Speak to your passions (interested in fintech, edtech, etc).
谈谈您的激情(对金融科技,教育科技等感兴趣)。
Mention accomplishments you’re proud of so your abilities stand out!
提及成就时,您引以为傲,因此您的能力脱颖而出!
Include links to your GitHub, LinkedIn and a PDF of your resume.
包括指向GitHub , LinkedIn的链接以及简历的PDF。
Brevity is the soul of wit. Constrain it to 4–5 sentences.
精简是机智的灵魂。 将其限制为4–5个句子。
Here is my About Me section with the text pasted below it.
这是我的关于我部分,下面粘贴了文本。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/4322353b4b5e7b01fb98e7f70b202443.png)
“As a software engineer who studied at MIT, my goal is to use technology to improve how society utilizes the tools of education and science for social progress.
“作为在麻省理工学院学习的软件工程师,我的目标是使用技术来改善社会如何利用教育和科学工具促进社会进步。
From founding a non-profit in the education sector to helping engineer software that allows anyone to view the microscopic world from their phones, my passion for technology brings me closer to that goal everyday.”
从在教育领域成立非营利组织到帮助工程师开发允许所有人使用手机查看微观世界的软件,我对技术的热情使我每天都更加接近这一目标。”
2. My Projects
2.我的项目
The My Projects section is the core of your portfolio site. It not only showcases the hard work you put into your apps, but the engineering skills you’d be bringing to the position. This section should include:
我的项目部分是投资组合网站的核心。 它不仅展示了您投入应用程序中的辛苦工作,还展示了您将带给自己的工程技能。 本节应包括:
A brief description of each app. If possible, include an image/logo.
每个应用的简要说明。 如有可能,请附上图片/徽标。
The technologies and languages you used in each app.
您在每个应用程序中使用的技术和语言。
Links to the live app. If this is not applicable, be sure to link the GitHub repository.
链接到实时应用程序。 如果这不适用,请确保链接GitHub存储库。
Take a look at how I outlined my My Projects for reference.
看看我如何概述我的项目以供参考。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/c6631d00a4d9c762c67ed387797c5f87.png)
3. My Education
3.我的教育
Be sure to include any relevant education experience. Include the following:
确保包括任何相关的教育经验。 包括以下这些:
Years you attended the institution (e.g., 2015–2020)
您就读该机构的年限(例如,2015–2020年)
A description of what you did there. Could be your major or relevant skills you learned.
您在那儿干什么的描述。 可能是您学到的专业或相关技能。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/023c34f3e54da664ec07d0c927d42d80.png)
4. Accomplishments
4.成就
Do you have any publications? Any organizations you started? Any popular articles you wrote on Medium? Here is the place to include it. This adds depth to your profile and can set you apart from other candidates.
你有出版物吗? 您创办了任何组织吗? 您在Medium上写过任何热门文章吗? 这是包含它的地方。 这增加了您的个人资料的深度,可以使您与其他候选人脱颖而出。
Personally, I published a test-prep book and started a non-profit when I was younger, so I included those.
就我个人而言,我出版了一本考试准备书,并在我年轻的时候就开始了非营利性活动,因此我将其包括在内。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/3c2fba233236977d4763039c68444604.png)
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/cc4cf76f452fcb1f3a6b568fb5a124e5.png)
And there we have it! Your portfolio website. Now that we’ve covered the portfolio component of your application, let’s review with a short checklist. Use this as a loose guide to confirm that you’re on the right track.
我们终于得到它了! 您的投资组合网站。 既然我们已经介绍了您的应用程序的投资组合部分,下面以简短的清单进行检查。 以此作为宽松的指南,以确认您的工作方向正确。
投资组合清单 (Portfolio Checklist)
The portfolio is presented in a unique and inviting personal website that displays a rich portfolio of original projects.
该组合呈现在一个独特的和诱人的个人网站,显示了丰富的原始项目组合。
There are 3 or more projects and a few are creative/sophisticated.
有3个或更多项目,而一些则很有创意/复杂。
Projects are easy to explore and use. Make sure there are no barriers like authentication. Assume recruiters/potential employers won’t have the patience to sign up.
项目易于探索和使用。 确保没有身份验证之类的障碍。 假设招聘人员/潜在雇主将没有耐心来注册。
Project code is easy to find.
项目代码很容易找到。
Stretch Goal: One or more projects has live users/revenue/GitHub followers.
延伸目标:一个或多个项目具有实时用户/收入/ GitHub关注者。
At this point, you should have enough information to complete your resume. Let’s take a look at how to write an excellent resume.
在这一点上,您应该有足够的信息来完成您的简历。 让我们看一下如何编写出色的简历。
恢复 (Resume)
The resume is a critical piece to any application. Your resume should be simple and easy-to-read. Keep these following formatting tips in mind when constructing your resume.
简历对于任何应用程序都是至关重要的。 您的简历应该简单易读。 构造简历时,请牢记以下格式提示。
Avoid fancy typefaces and images
避免花哨的字体和图像
Stick to black and white
坚持黑白
Keep resume length under one page
简历长度不超过一页
Let’s review the basic resume components and the strategies to make each section a winner!
让我们回顾一下基本的简历组成部分以及使每个部分成为赢家的策略!
个人信息 (Personal Information)
This should be at the top of your resume. It should include your:
这应该在您的简历的顶部。 它应包括:
- Name 名称
- Address (city and state)地址(城市和州)
- Phone number 电话号码
- Email电子邮件
- GitHub linkGitHub链接
- LinkedIn profile link领英个人资料链接
- Portfolio website link作品集网站链接
I recommend using bitly to shorten links that are too long to fit on the page.
我建议使用一点点的链接来缩短太长而无法容纳在页面上的链接。
技术能力 (Technical Skills)
This will consist of the languages and frameworks that you’re proficient in. List them in the order of strongest to weakest. Be ready to have conversations about any item on this list with your interviewer. Check out the Technical Skills section on my resume below for reference.
这将由您精通的语言和框架组成。按照从最强到最弱的顺序列出它们。 准备与您的面试官就此列表中的任何项目进行对话。 在下面的简历中查看“技术技能”部分,以供参考。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/a0b9b11541d7ca15955f758c99d182e4.png)
产品展示 (Products)
The Products section should contain descriptions of the apps you’ve built and their impact. They should also emphasize your individual contribution to the product.
“产品”部分应包含对您已构建的应用及其影响的描述。 他们还应强调您对产品的个人贡献。
The word, “product” holds more weight than “project”, so I recommend using that. Before I dissect this section, I’ll show you an example from my resume for more context.
“产品”一词比“项目”更具分量,因此我建议使用它。 在剖析本节之前,我将向您展示简历中的示例,以获取更多背景信息。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/82624d8c65e04c92a757c66b46b54793.png)
Ordering
订购方式
Be sure to order your products from most to least relevant to the job description. For instance, your front-end apps should come first if you’re applying to front-end developer positions.
确保从与职位描述最相关到最不相关的顺序订购您的产品。 例如,如果您要申请前端开发人员职位,那么您的前端应用程序应该排在第一位。
Roles
的角色
If you were a part of a team, make sure to include your role on the team. In my examples, I was the backend engineer.
如果您是团队的一部分,请确保将您的角色包括在团队中。 在我的示例中,我是后端工程师。
Action — Result Format
行动-结果格式
The bullet point descriptions of your contributions should follow the action-result format.
您的贡献的项目符号要遵循行动结果格式。
The action will be a verb that emphasizes your skills and contributions. For instance, if you’re applying to startup roles, you would use words like, “built”, “created”, or “initiated”. The result is the outcome of your contributions. Take a look at the two examples below.
该动作将是一个动词,强调您的技能和贡献。 例如,如果您要申请启动角色,则可以使用“已构建”,“已创建”或“已启动”之类的词。 结果就是您的贡献的结果。 看下面的两个例子。
Managed [action] a $9,000 budget to organize hackathon events for 1,400 students [result].
管理[活动] 9,000美元的预算,为1,400名学生组织黑客马拉松活动[结果]。
Architected [action] Node.js backend with Mathpix and KaTeX APIs to convert 800+ raw image data objects to rendered html [result].
使用Mathpix和KaTeX API构建的[action] Node.js后端,可将800多个原始图像数据对象转换为渲染的html [结果]。
Make Use of Data
利用数据
Notice that in the examples above, there are quite a few numbers used. Whenever possible, use data to quantify your impact. This could be the number of downloads, users, reviews, page visits, etc. Using numbers communicates the scope of the app’s impact and scale. It’s way more impressive to say my “app reached #X users” than to simply say, “I launched an app”.
注意,在上面的示例中,使用了很多数字。 尽可能使用数据来量化您的影响。 这可以是下载,用户,评论,页面访问等的次数。使用数字可以传达应用的影响范围和规模。 说“我的应用吸引了#X用户”比简单地说“我启动了一个应用”更令人印象深刻。
工作经验 (Work Experience)
This section should include descriptions of your previous roles. Be sure to include the most relevant roles first. Follow the action-result formatting like in the Products section. Feel free to use my Work Experience section below for reference.
本部分应包括您以前的角色的描述。 确保首先包含最相关的角色。 按照产品部分中的操作结果格式进行操作。 请随意使用下面的“我的工作经验”部分作为参考。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/42860d58532dcd2730fb8aecfc28d4b7.png)
教育 (Education)
This section is pretty straightforward. Make sure to order by most recent. If your institution or program is not well-known, try including a short description.
本节非常简单。 确保在最近订购。 如果您的机构或课程不知名,请尝试提供简短说明。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/70616e884ed1c9b81cebec4fdee6774b.png)
If there is room, feel free to include other accomplishments such as awards or publications in your resume. You could also include relevant volunteer experience. For instance, it would be helpful for interviewers to know that you mentored high school students in computer science.
如果有空间,请在简历中包括其他成就,例如奖项或出版物。 您还可以包括相关的志愿者经验。 例如,对访问员来说,知道您在计算机科学领域指导了高中生很有帮助。
Both your resume and portfolio website are ways to convey your skills as a developer. However, neither would offer the same visibility that a great LinkedIn profile would. So, let’s take a look at some tips on how to construct an effective LinkedIn.
您的简历和投资组合网站都是传达您作为开发人员的技能的方法。 但是,两者都无法提供与出色的LinkedIn个人资料相同的知名度。 因此,让我们看一下有关如何构建有效的LinkedIn的一些技巧。
领英 (LinkedIn)
Fortunately, several of the tips for constructing a strong portfolio website apply to creating your LinkedIn.
幸运的是,构建强大的投资组合网站的一些技巧适用于创建LinkedIn。
关于科 (About Section)
For the About section, you can paste the About Me section you wrote for your portfolio website. Additionally, you’ll want to include your:
对于“关于”部分,您可以粘贴为投资组合网站编写的“关于我”部分。 此外,您需要包括:
- GitHub link GitHub链接
- Portfolio website link作品集网站链接
- All the languages and frameworks you’re proficient in (paste the ones you wrote for your resume)您精通的所有语言和框架(粘贴您为简历编写的语言和框架)
Make sure to exclude the word “student” and any high school experiences. Say that you’re currently an “engineer.” You are — you’ve built more apps than many full-time engineers. The word “student” may undersell your abilities.
确保排除“学生”一词和任何高中经历。 假设您目前是“工程师”。 您就是–与许多专职工程师相比,您构建的应用程序更多。 “学生”一词可能会打败您的能力。
特色栏目 (Featured Section)
Here, you should include:
在这里,您应该包括:
Your resume in PDF format
PDF格式的简历
Links to any relevant high quality articles you’ve written
链接到您撰写的任何相关的高质量文章
Any publication or media content that speaks to your credibility
任何表明您信誉的出版物或媒体内容
其他技巧(Other Tips)
Be brief and make it easy for people to skim your entire profile.
要简短,使人们可以轻松浏览您的整个个人资料。
Put all your products in the “Experience Section” of your profile — it will make them more visible. When you do this, be sure to include some indicator that lets recruiters know that the product isn’t a full-time role. You can include the “(product)” at the end of the title. Or include the past time range during which you worked on the product.
将您所有的产品放在个人资料的“体验”部分中-这将使它们更显眼。 执行此操作时,请确保包含一些指示器,以使招聘人员知道该产品不是专职人员。 您可以在标题末尾添加“(产品)”。 或包括您使用该产品的过去时间范围。
Get skill endorsements from classmates, colleagues and friends.
获得同学,同事和朋友的技能认可。
Photo — should be professional: business casual with eyes facing the camera.
照片—应该是专业的:商务休闲,眼睛面对镜头。
Once you’re finished with your LinkedIn profile, I recommend sending it to a classmate or colleague to review and offer feedback. Now that we have LinkedIn covered, let’s move onto your GitHub.
完成LinkedIn个人资料后,建议您将其发送给同学或同事,以进行审查并提供反馈。 现在我们已经涵盖了LinkedIn,让我们进入您的GitHub。
的GitHub (GitHub)
A polished GitHub is key to your job search. Employers will visit your GitHub so it’s important that they can understand your projects and that they see clean code.
精美的GitHub是您求职的关键。 雇主将访问您的GitHub,因此重要的是,他们必须了解您的项目并看到清晰的代码。
Make sure your GitHub meets these requirements:
确保您的GitHub满足以下要求:
实体轮廓 (Solid Profile)
Your profile should contain your location, a link to your portfolio website, and a short bio. Feel free to draw from your About Me portfolio website section.
您的个人资料应包含您的位置,投资组合网站的链接以及简短的简历。 随时从您的“关于我”投资组合网站部分进行绘图。
写得不错的自述文件 (Well-written README)
Use markdown when writing your README and make sure to check your spelling. When describing your project, make sure to:
在编写自述文件时使用markdown,并确保检查拼写。 描述您的项目时,请确保:
Name the languages, frameworks and technologies used.
命名使用的语言,框架和技术。
Describe the problem you were trying to solve.
描述你试图解决的问题。
Include instructions on how the project should used.
包括有关如何使用项目的说明。
Include links to relevant, related info.
包括指向相关的相关信息的链接。
- Include pictures or GIFs. 包括图片或GIF。
Feel free to use Alamofire’s README as a solid example.
随意使用Alamofire的自述文件作为一个可靠的例子。
其他技巧 (Other Tips)
Try to contribute to other projects. It adds credibility to your profile.
尝试为其他项目做出贡献。 它增加了您的个人资料的信誉。
Do your best to create work that people will want to star.
尽力创造人们希望出演的作品。
Now that we’ve reviewed the components you’ll need for your application (resume, portfolio site, LinkedIn, Github), it’s time to discuss how to get your foot in the door. What are the key strategies to landing the first interview?
现在,我们已经审查了应用程序所需的组件(简历,投资组合网站,LinkedIn,Github),现在该讨论如何入门。 进行首次面试的关键策略是什么?
踏上大门 (Getting Your Foot In The Door)
Hiring for tech jobs is driven by who you know. You can increase your chances for employment significantly by getting a warm introduction.
您所认识的人驱动着技术工作的招聘。 通过热情的介绍,您可以大大增加您的就业机会。
Let’s say you’re applying to LinkedIn. Your name can reach the hiring manager in one of 2 ways. They can pick out your name from a stack of hundreds of applications or they can hear your name from one of their engineers or recruiters. The latter case is a warm introduction. You’re essentially vouched for by the person giving the introduction. Let’s dive into the steps of getting that warm introduction.
假设您要申请LinkedIn。 您的姓名可以通过以下两种方式之一到达招聘经理。 他们可以从数百个应用程序中选择您的名字,也可以从他们的工程师或招聘人员中听到您的名字。 后一种情况是热烈的介绍。 基本上,介绍者会为您提供担保。 让我们深入了解进行热烈介绍的步骤。
查找连接 (Find Connections)
To find the people you’ll reach out to, leverage your LinkedIn network.
要找到您可以联系到的人,请利用您的LinkedIn网络。
The first step is to find your target jobs. They don’t necessarily have to be at your dream companies. They can be companies that you’re only somewhat interested in. Getting an interview with them is a win because all practice is good practice. You’ll sharpen your skills for your dream job interview.
第一步是找到目标工作。 他们不一定必须在您梦dream以求的公司。 他们可能是您仅对某些公司感兴趣的公司。与他们进行面谈是一个胜利,因为所有实践都是一种良好实践。 您将为梦想的工作面试提高技能。
Here are the steps:
步骤如下:
Go to the jobs search on LinkedIn. Type in your city and the role. Filter by jobs posted in the past month.
转到LinkedIn上的职位搜索。 输入您的城市和角色。 按过去一个月发布的职位筛选。
Choose a job posting and check if you have any connections. Open those connections in new tabs. If you don’t have connections, use the list of employees at that company.
选择职位发布并检查您是否有任何联系。 在新标签页中打开这些连接。 如果没有连接,请使用该公司的员工列表。
Select the engineers and recruiters in the list.
在列表中选择工程师和招聘人员。
请求电话 (Request a Phone Call)
The prerequisite for this step is that you apply to the company. After you do that, you can request a phone call from one of the engineers that works there.
此步骤的前提条件是您必须向公司提出申请。 完成此操作后,您可以要求在那儿工作的一位工程师打个电话。
What about reaching out to the recruiters? You definitely should, but I recommend reaching out to engineers first as their referral can hold more weight than a recruiter. These are the people who can better understand and appreciate your relevance to the department’s needs, and a referral from them is likely to be trusted more by the hiring manager.
与招募人员联系怎么样? 您绝对应该,但是我建议您首先联系工程师,因为他们的推荐比招募者更重要。 这些人可以更好地理解和欣赏您与部门需求的相关性,招聘经理可能会更信任他们。
Try using the following template when sending your message to the engineer on LinkedIn.
在LinkedIn上向工程师发送消息时,请尝试使用以下模板。
Subject : [Name] — [Role] Who Wants to Learn More About [Company name]
主题:[名称]-[角色]谁想了解有关[公司名称]的更多信息
Hi [Engineer’s name],
嗨[工程师的名字]
My name is [Your name]. I recently applied to [Company name] and I believe I would be a great fit. I would love the opportunity to learn more about [Company name]. Are you free for a 5 to 10 minute phone call sometime this week?
我叫[你的名字]。 我最近申请了[公司名称],我认为我很合适。 我希望有机会进一步了解[公司名称]。 您这个星期有空打5至10分钟的电话吗?
This message gets straight to the point. It shows the engineer that you truly care about the company since you’re taking the time to learn more about it from someone else. By asking for a 5 to 10 minute phone call, you’re showing the engineer that you respect their busy schedule.
此消息直达重点。 它向工程师表明,您真正在乎公司,因为您要花时间从其他人那里了解更多。 通过要求5到10分钟的电话,您正在向工程师表明您尊重他们的繁忙日程。
Here are some examples from when I was applying to LinkedIn:
以下是我向LinkedIn提出申请时的一些示例:
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/d1ede6001a1c66e4fa5c88a99a3cc2ae.png)
Sometimes, they’ll simply refer you!
有时,他们只会推荐您!
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/eabaff30c776527580e4dfe5469de746.png)
Setting up these phone calls is a great way to grow your network and increase your chances of getting a warm introduction. However, nothing compares to a face-to-face meeting.
设置这些电话是扩大您的网络并增加获得热情介绍的好方法。 但是,没有什么能比得上面对面的会议了。
“伸手喝咖啡”指南 (The “Reach Out For Coffee” Guide)
Getting coffee with your industry contact (e.g., engineer, recruiter) is much more effective than having a short phone call. The “face-to-face”aspect builds more trust and increases your chances of getting a strong referral.
与您的行业联系人(例如,工程师,招聘人员)喝咖啡比打个短电话要有效得多。 “面对面”方面可以建立更多的信任,并增加获得强烈推荐的机会。
The first step is to reach out to the contacts you compiled from the Find Connections section above.
第一步是联系您从上面的“查找连接”部分编译的联系人。
You can use the following template when sending your message. Feel free to customize it with any details about you as an engineer that you think is important. Make sure to keep it short and simple:
发送消息时,可以使用以下模板。 您可以随意定制有关您认为重要的工程师的任何详细信息。 确保简短简短:
Subject : [Name] — [Role] Who Wants to Learn More About [Company name]
主题:[名称]-[角色]谁想了解有关[公司名称]的更多信息
Hi [Contact’s name], I’m a software engineer who is passionate about building awesome products. I would love to get some career advice and learn more about what you do at [Company name]. Would you be open to grab coffee?
嗨,[联系人的名字],我是一位软件工程师,他热衷于构建出色的产品。 我很想获得一些职业建议,并在[公司名称]上详细了解您的工作。 你愿意喝咖啡吗?
If they reply, make sure to suggest a coffee shop near their office. Use a specific address or ask them to suggest a place that’s convenient for them.
如果他们答复,请确保在他们办公室附近建议一家咖啡店。 使用特定的地址或要求他们建议一个对他们方便的地方。
Here are some other tips for the meeting:
以下是会议的其他提示:
Meet at a location convenient for them. Making the logistics easy will improve your chances of meeting up.
在方便他们的地点集合。 简化后勤工作将增加您见面的机会。
Meet for around 30 minutes. Try your best to not take too much of their time. Show up on time.
开会约30分钟。 尽最大努力不要花费太多时间。 准时出现。
Don’t forget to send a thank-you email. Talk about your biggest takeaways from the conversation. Mention that you appreciate them taking the time to talk.
不要忘了发送一封感谢电子邮件。 从对话中谈谈您最大的收获。 提及您感谢他们抽出宝贵的时间与他们交谈。
如果他们不答复怎么办? (What If They Don’t Reply?)
If they don’t respond to your request within 4 or 5 days, send a follow-up message. Something like:
如果他们在4或5天内没有回复您的请求,请发送后续消息。 就像是:
Hi [Contact’s name]. Hope all is well! I’m following up on my last message about meeting for coffee. Are you available this week?
嗨[联系人姓名]。 希望一切都很好! 我正在跟进关于咖啡会议的最后一条消息。 你这星期有空吗?
为谈话做准备 (Preparing For The Conversation)
Whether you’re having a phone call or a coffee session, it’s important to prepare for the conversation. Try generating the following:
无论您是打电话还是在喝咖啡,准备对话都很重要。 尝试生成以下内容:
LinkedIn Research Notes
LinkedIn研究笔记
Scan their LinkedIn profile. Here are some example questions you can answer:
扫描他们的LinkedIn个人资料。 以下是一些您可以回答的示例问题:
- What are their accomplishments? 他们有什么成就?
What do you want to learn more about?
您想进一步了解什么?
See if you share a place where you were raised. Do you use the same technologies and tools?
查看您是否与自己共享一个成长的地方。 您是否使用相同的技术和工具?
- What is their professional focus? 他们的专业重点是什么?
- What are their aspirations? 他们的愿望是什么?
2. Top 3 Questions to Ask
2.前三大问题
Come up with 3 or more questions to ask. Some topics:
提出3个或更多问题。 一些主题:
The company’s culture. How it compares to other companies they worked at.
公司的文化。 与他们工作过的其他公司相比如何。
- Their experience and accomplishments. 他们的经验和成就。
Challenges their facing.
挑战自己的面子。
3. Top 3 Connections/Interests
3.前3位连接/兴趣
This is your chance to talk about what you have in common. Maybe you both really enjoy using JavaScript. Are you passionate about the same sectors? Maybe you lived in the same city.
这是您讨论共同之处的机会。 也许你们俩都非常喜欢使用JavaScript。 您是否对同一行业充满热情? 也许你住在同一座城市。
The information you compiled above will help you contribute the conversation and warm up the connection.
您在上面汇编的信息将帮助您促进对话并预热连接。
Conversation Stretch Goals:
会话延伸目标:
Try landing these stretch goals:
尝试着陆这些伸展目标:
Stretch Goal 1: Show them one of your favorite portfolio apps. Ask for feedback and advice.
扩展目标1:向他们展示您最喜欢的投资组合应用程序之一。 寻求反馈和建议。
Stretch Goal 2: Offer to show your code. Request a code review. Request a review of the UI/UX of the project.
扩展目标2:主动展示您的代码。 要求进行代码审查。 要求审查项目的UI / UX。
最后,要求转介 (Finally, Ask For A Referral)
If you feel like the conversation went well, try asking for a referral. You can say something:
如果您觉得对话进行得很顺利,请尝试推荐。 您可以说些什么:
Thanks [Contact’s name], for taking the time to talk. I learned a lot!
感谢[联系人的姓名],抽出宝贵的时间进行交谈。 我学到了很多!
I actually already applied to [Company name]. Would you feel comfortable forwarding my resume to the hiring team?
我实际上已经申请了[公司名称]。 您是否愿意将我的简历转发给招聘团队?
查找联系信息的工具 (Tools For Finding Contact Info)
These tools below will assist you in finding the contact’s email/other contact info.
以下这些工具将帮助您查找联系人的电子邮件/其他联系人信息。
ContactOut — chrome extension to find email from their LinkedIn profile
ContactOut — chrome扩展程序,可从其LinkedIn个人资料中查找电子邮件
Hunter.io — finds email from company directory
Hunter.io —从公司目录中查找电子邮件
By now, you’re equipped with the tools to land an interview, so let’s dive into its main components. We’ll dissect both the technical interview and the behavioral interview.
到目前为止,您已经具备了进行采访的工具,因此让我们深入了解其主要组成部分。 我们将剖析技术面试和行为面试。
技术面试 (The Technical Interview)
The technical interview is usually the first interview. A technical phone interview is typical for the initial screening. If you’re able to pass that, you’ll face the more difficult, onsite interview. To ace these, you’ll need to have a solid problem solving strategy.
技术面试通常是第一次面试。 初步筛选通常需要进行技术电话采访。 如果能够通过,您将面临更加困难的现场采访。 要解决这些问题,您需要有一个可靠的问题解决策略。
解决问题的策略 (Problem Solving Strategy)
Keep these points in mind as you’re solving the problem.
解决问题时,请牢记这些要点。
Restate the problem. Ensure that you have a solid understanding of the problem.
重述问题。 确保您对问题有深入的了解。
State your assumptions. Often times, we assume too much.
陈述你的假设。 通常,我们假设太多。
Think out loud. Don’t be silent. Share your thought process.
大声思考。 不要沉默分享您的思考过程。
Try the simplest solution first. This is a great starting point. It leaves room for more efficient solutions and refactoring.
首先尝试最简单的解决方案。 这是一个很好的起点。 它为更有效的解决方案和重构留有空间。
Examine why it’s not ideal. Critique your solution. Analyze the complexity of the solution (both time and space complexities) and try to improve it.
检查为什么它不理想。 批判您的解决方案。 分析解决方案的复杂性(时间和空间复杂性)并尝试对其进行改进。
Test multiple inputs. Generate reasonable test cases. Make sure to start simple, then increase complexity.
测试多个输入。 生成合理的测试用例。 确保从简单开始,然后增加复杂性。
Generating test cases definitely warrants its own section. Let’s dive into it!
生成测试用例肯定需要它自己的部分。 让我们开始吧!
测试用例 (Test Cases)
It’s important to generate test inputs and their expected results. The test inputs are the inputs that will be used by your solution. The expected results are the results that you expect the solution to output. Returning different results than what was expected exposes bugs and gives you an opportunity to improve your solution. Using test cases shows that you’re thorough when solving problems, which is a skill that any good developer should have. We’ll focus on the follow types of inputs:
生成测试输入及其预期结果很重要。 测试输入是您的解决方案将使用的输入。 预期结果是您期望解决方案输出的结果。 返回与预期不同的结果会暴露一些错误,并为您提供改善解决方案的机会。 使用测试用例表明,您解决问题时很全面,这是任何优秀开发人员都应具备的技能。 我们将重点介绍以下几种类型的输入:
- Good/Normal Inputs 正常输入
- Bad/Unusual Inputs错误/异常输入
- Edge Case Inputs边缘案例输入
Good/Normal Inputs
正常输入
The following points should give you an idea of what a “good” or “normal” input means.
以下几点应使您了解“良好”或“正常”输入的含义。
Uses valid data types
使用有效的数据类型
The values and sizes of the inputs are well within expected bounds
输入的值和大小都在预期范围内
Uses expected types of values based on your assumptions. (e.g., positive integers)
根据您的假设使用期望的值类型。 (例如,正整数)
Here are a few examples:
这里有一些例子:
- List of 4–6 unique integers greater than 0 in a small range: [2, 8, 5, 12, 7] 在较小范围内列出大于0的4–6个唯一整数的列表:[2、8、5、12、7]
- List of 4–6 unique mixed numbers in a small range: [2.7, -4.2, 0, 3.14] 在较小范围内的4–6个唯一混合数的列表:[2.7,-4.2、0、3.14]
- String with 4–6 words in different cases: “I like coding in Python” 在不同情况下用4到6个单词组成的字符串:“我喜欢用Python编码”
Bad/Unusual Inputs
错误/异常输入
Bad or unusual inputs are any of the following:
错误或异常输入是以下任何一种:
Invalid data types
无效的数据类型
- Unexpected values意外值
Data structures with improperly constructed data or pointers
具有错误构造的数据或指针的数据结构
- Data that may cause your function to throw an error可能导致函数抛出错误的数据
Here are a few examples:
这里有一些例子:
- List of only integers and floats: [2, 8.2, 6.01e23, 0.000001] 仅整数和浮点数的列表:[2,8.2,6.01e23,0.000001]
- Numbers with unexpected values: [8.1, “nice”, null, NaN] 具有意外值的数字:[8.1,“ nice”,null,NaN]
- String of digits with too many decimal points: “-14.28.57” 小数点过多的数字字符串:“-14.28.57”
Edge Inputs
边输入
And finally, we have edge cases:
最后,我们有一些边际案例:
Valid input, but one that has the possibility of breaking your code if not handled correctly
有效输入,但是如果处理不正确,则有可能破坏您的代码
Values and sizes of structures at the limit of expected bounds
结构的值和大小在预期界限之内
- Breaks assumptions on values打破关于价值的假设
Here are a few examples:
这里有一些例子:
- List of integers with some duplicates: [7, 4, 5, 4, 3] 具有一些重复项的整数列表:[7、4、5、4、3]
- List of only 1 or 0 elements: [7] or [“lonely”] or [] 仅包含1或0个元素的列表:[7]或[“ lonely”]或[]
- Mismatched parameter values (e.g., function expects a number, but you pass a string) 参数值不匹配(例如,函数需要一个数字,但是您传递了一个字符串)
- Linked list with 1 or 0 node(s) 具有1个或0个节点的链接列表
数据结构与算法实践(Data Structures and Algorithms Practice)
There’s no getting around that this process will take a lot of data structures and algorithms practice. Where do you start?
无法避免这个过程将需要大量的数据结构和算法实践。 你从哪里开始?
Save Your Problems
保存您的问题
I recommend opening your favorite code editor and creating a folder called Interview Practice Problems. Here, you’ll store each problem you tackle. These problems can come from sites like, LeetCode or even companies you interviewed at. Why do this?
我建议打开您喜欢的代码编辑器并创建一个名为Interview Practice Problems的文件夹。 在这里,您将存储要解决的每个问题。 这些问题可能来自LeetCode之类的网站,甚至是您访问过的公司。 为什么这样
You can revisit the problems that gave you the most trouble and attempt them again. Are linked list problems difficult for you? Then create a folder that contains those types of problems.
您可以重新考虑给您带来最大麻烦的问题,然后再次尝试。 链表问题对您来说困难吗? 然后创建一个包含这些类型的问题的文件夹。
Having one place that contains these different types of problems will help you recognize patterns in the types of interview problems companies give you. There are only so many ways you can ask a candidate to construct a binary search tree.
在一个地方包含这些不同类型的问题将有助于您认识公司为您提供的面试问题的类型。 您可以通过多种方式要求应聘者构建二叉搜索树。
This will be a resource for you once you start the job search again. When you decide to move onto a different company, there’s a good chance that you’ll be a bit rusty in the interview problems department. What better way to hit the ground running than to tackle these personally curated problems?
一旦您再次开始求职,这将是您的资源。 当您决定转移到另一家公司时,很有可能在面试问题部门有点生疏。 有什么比解决这些个人策划的问题更好的方法?
To give you a better idea of how this works, take a look at the setup I used when I was applying to jobs.
为了让您更好地了解这是如何工作的,请看一下我在申请工作时使用的设置。
![Image for post](https://i-blog.csdnimg.cn/blog_migrate/fcc75cf974eb8ab5259619ca14837fb4.png)
Notice that I have problems ranging from Interview Cake problems to the ones that I was given during my Google interview.
请注意,我遇到了很多问题,从面试蛋糕问题到我在Google面试中得到的问题。
Practice Resources
实践资源
It’s important to set aside structured blocks of time for technical interview practice. When you’re first starting out, there’s no need to time yourself. The focus should be understanding the fundamentals and the types of problems given. Once you feel comfortable, I recommend timing yourself and trying to improve your speed.
为技术面试练习留出结构化的时间很重要。 当您第一次入门时,无需花费时间。 重点应该是理解所提供问题的基本原理和类型。 一旦您感到舒适,我建议您把握好时机并尝试提高速度。
Here are some good resources for practice problems:
这里有一些练习方面的好资源:
LeetCode: Provides a large number of curated interview questions. You can choose questions by company (e.g., Top Amazon questions). You can even set up a mock interview in a timed setting.
LeetCode :提供大量策划的面试问题。 您可以按公司选择问题(例如,热门亚马逊问题)。 您甚至可以在定时设置中进行模拟面试。
Glassdoor: Primarily used to learn more about a company(e.g., salaries and reviews), but it can be extremely helpful when it comes to company interview problems. Former interview candidates sometimes post their interview problems. It doesn’t get more authentic than that.
Glassdoor :主要用于了解有关公司的更多信息(例如薪水和评论),但是对于公司面试问题可能非常有帮助。 前面试候选人有时会发布他们的面试问题。 没有比这更真实的了。
Cracking the Coding Interview: This infamous book is a great tutorial of the fundamental data structures and algorithms you’ll need for your interview. It also includes useful information about interviews at specific companies like Amazon, Facebook, Google and Apple.
破解编码面试:这本臭名昭著的书很好地介绍了面试所需的基本数据结构和算法。 它还包括有关在亚马逊,Facebook,谷歌和苹果等特定公司进行采访的有用信息。
The above are powerful resources, but the best way to ramp up your interviewing skills is to actually interview with another person. The way you communicate your ideas is a major factor of these interviews and that’s not really something you can learn from a book. You’ll also be able to practice the problem solving strategies you learned in this guide!
以上是强大的资源,但是提高面试技巧的最佳方法是实际与其他人进行面试。 您交流想法的方式是这些访谈的主要因素,而这并不是您可以从书本中学到的东西。 您还可以练习在本指南中学习的问题解决策略!
Online Mock Interviewing
在线模拟面试
Below are two amazing online tools for mock interviews:
以下是两个用于模拟采访的出色在线工具:
Interviewing.io: You’ll be paired with a software engineer anonymously and will run through problems ranging from algorithmic questions to system design questions. The best part is that if you do well, you’ll have the chance to go straight to the onsite interview at that engineer’s company.
Interviewing.io :您将与一位软件工程师匿名配对,并且将遇到从算法问题到系统设计问题的问题。 最好的部分是,如果做得好,您将有机会直接去那个工程师公司的现场采访。
Pramp: You’ll be paired based on your availability, experience, practice topics, etc. Pramp is unique in that you and your practice peer take turns interviewing each other!
Pramp :您将根据自己的空缺,经验,练习主题等而配对。Pramp的独特之处在于,您和您的练习同伴轮流互相采访!
Offline Mock Interviewing
离线模拟面试
Find a friend who’s also looking for a job or an engineer you know to give you a mock interview. You’ll get to experience the pressures and obstacles of an in person interview. Here’s a step-by-step guide:
寻找一个也正在寻找工作的朋友或您认识的工程师给您进行模拟面试。 您将体验到面试的压力和障碍。 以下是分步指南:
Find a partner to do mock interviews with. One will play interviewer and the other, interviewee.
寻找合作伙伴进行模拟面试。 一个将扮演面试官,另一个将扮演面试官。
Work through the problem as if you’re in an actual interview. Your interviewer should have a checklist (see Golden Rubric below) to make sure you follow best practices.
像参加实际面试一样解决问题。 您的面试官应有一份核对表(请参阅下面的Golden Rubric) ,以确保您遵循最佳做法。
Have your interviewer give you feedback on you did/didn’t do.
让您的面试官给您有关您是否做了的反馈。
- Swap roles and work through the next problem. 交换角色并解决下一个问题。
The following are a few great mock interview problems to start off with:
以下是一些最开始的模拟面试问题:
Given an array a of numbers and a target value t, find two numbers that sum to t (that is, a[i] + a[j] = t).
给定一个由数字组成的数组a和一个目标值t ,找到两个总和为t的数字(即a [i] + a [j] = t)。
Find the k largest values in an array of n numbers. Return them in a new array sorted in decreasing order.
在n个数字的数组中找到k个最大值。 以降序排序的新数组返回它们。
Given a list of n strings with mixed casing, return a new list of all strings that start with a capitalized letter.
给定包含混合大小写的n个字符串的列表,请返回以大写字母开头的所有字符串的新列表。
Find the longest substring of unique letters in a given string of n letters.
在给定的n个字母字符串中找到唯一字母的最长子字符串。
I suggested that the interviewer use the Golden Rubric as a checklist. I wrote an article on this where I essentially do a breakdown of the 6 categories that interviewers use to grade your performance. Each category is assigned a score (1 to 4) with 24 points being a perfect score. Use this as a North Star. Aim for perfection (24 points), but understand that not getting there does not mean that you won’t get your dream job.
我建议面试官使用“金色专栏”作为清单。 我写了一篇关于此的文章,从本质上讲,我细分了面试官用来对您的表现进行评分的6个类别。 为每个类别分配一个分数(1到4) ,满分为24分。 将此用作北极星。 追求完美(24分),但要明白,没有达到目标并不意味着就不会获得理想的工作。
技术面试的黄金法则 (The Golden Rubric For Technical Interviews)
1.编码和语法(1. Coding & Syntax)
4分[强力雇用](4 Points [Strong Hire])
No syntax errors
没有语法错误
Translated solution and future improvements into code effortlessly
将解决方案和将来的改进轻松地转化为代码
Demonstrated exemplary knowledge of language constructs as well as paradigms in other languages
展示了对语言构造以及其他语言范例的示范性知识
Compare several coding approaches
比较几种编码方法
3分[学习租用](3 Points [Leaning Hire])
Few-to-none syntax errors
几乎没有语法错误
Translated proposed solution to code with little difficulty
翻译困难的代码提议解决方案
- Showed familiarity with common language constructs and paradigmsShowed familiarity with common language constructs and paradigms
2 Points [Leaning Don't Hire](2 Points [Leaning Don’t Hire])
Minor syntax errors
Minor syntax errors
Coded the naive solution but stumbled on occasion
Coded the naive solution but stumbled on occasion
- Poor use of language constructs Poor use of language constructs
1 Point [Strong Don't Hire](1 Point [Strong Don’t Hire])
Several errors (logical or syntactic) that severely impacted the correctness of the solution
Several errors (logical or syntactic) that severely impacted the correctness of the solution
- Poor use of language constructs Poor use of language constructs
2. Data Structures and Algorithms(2. Data Structures and Algorithms)
4 Points [Strong Hire](4 Points [Strong Hire])
Explained the naive solution and its drawbacks, then explained several solutions, ultimately selecting the most optimal
Explained the naive solution and its drawbacks, then explained several solutions, ultimately selecting the most optimal
Explained runtime vs. space trade-offs within the context of different product constraints
Explained runtime vs. space trade-offs within the context of different product constraints
3 Points [Leaning Hire](3 Points [Leaning Hire])
Produced a naive algorithm that properly utilized common data structures
Produced a naive algorithm that properly utilized common data structures
Fully explained or coded a slightly more optimized solution
Fully explained or coded a slightly more optimized solution
Correctly evaluated O-notation for runtime and space
Correctly evaluated O-notation for runtime and space
2 Points [Leaning Don't Hire](2 Points [Leaning Don’t Hire])
Selected sub-optimal data structures for the given problem, demonstrating minor misunderstanding about their inner workings
Selected sub-optimal data structures for the given problem, demonstrating minor misunderstanding about their inner workings
- Produced a naive algorithm and perhaps suggested improvements Produced a naive algorithm and perhaps suggested improvements
1 Point [Strong Don't Hire](1 Point [Strong Don’t Hire])
Selected poorly suited data structures for the given problem
Selected poorly suited data structures for the given problem
Demonstrated lacking knowledge about the inner working of basic data structures
Demonstrated lacking knowledge about the inner working of basic data structures
- Struggled to expand past a naive algorithm Struggled to expand past a naive algorithm
3. Problem Solving(3. Problem Solving)
4 Points [Strong Hire](4 Points [Strong Hire])
Rapidly produced a well written and accurate solution with ample time to deep dive into supplementary problems or alternative solutions
Rapidly produced a well written and accurate solution with ample time to deep dive into supplementary problems or alternative solutions
3 Points [Leaning Hire](3 Points [Leaning Hire])
Solved the problem and had limited time to briefly discuss additional problems or expand on their original solution
Solved the problem and had limited time to briefly discuss additional problems or expand on their original solution
2 Points [Leaning Don't Hire](2 Points [Leaning Don’t Hire])
Barely finished the problem in the allocated time
Barely finished the problem in the allocated time
Either moved slowly or made several incorrect attempts before arriving at a final solution
Either moved slowly or made several incorrect attempts before arriving at a final solution
1 Point [Strong Don't Hire](1 Point [Strong Don’t Hire])
Did not finish the entire problem
Did not finish the entire problem
Often became lost and were unable to progress without assistance
Often became lost and were unable to progress without assistance
4. Communication(4. Communication)
4 Points [Strong Hire](4 Points [Strong Hire])
Clearly explained their solution while also demonstrating tangential knowledge by explaining the inner workings of the standard library and data structures they used
Clearly explained their solution while also demonstrating tangential knowledge by explaining the inner workings of the standard library and data structures they used
Explained the pros/cons of various common approaches to sub-problems within their solution
Explained the pros/cons of various common approaches to sub-problems within their solution
3 Points [Leaning Hire](3 Points [Leaning Hire])
Explained their thought processes very clearly
Explained their thought processes very clearly
Failed to elaborate fully on the design and rationale behind algorithmic/coding decisions
Failed to elaborate fully on the design and rationale behind algorithmic/coding decisions
2 Points [Leaning Don't Hire](2 Points [Leaning Don’t Hire])
Explained their thought process, but would meander when they became lost in their solution
Explained their thought process, but would meander when they became lost in their solution
Sometimes fell silent while they thought
Sometimes fell silent while they thought
1 Point [Strong Don't Hire](1 Point [Strong Don’t Hire])
Spent little to no time explaining their thought processes
Spent little to no time explaining their thought processes
Interviewer had to actively prompt the candidate with questions
Interviewer had to actively prompt the candidate with questions
5. Thrives in Ambiguity(5. Thrives in Ambiguity)
4 Points [Strong Hire](4 Points [Strong Hire])
Was able to work independently
Was able to work independently
Accurately discussed edge cases early
Accurately discussed edge cases early
Engaged in thoughtful discussion by providing several solutions and challenging common assumptions/answers
Engaged in thoughtful discussion by providing several solutions and challenging common assumptions/answers
3 Points [Leaning Hire](3 Points [Leaning Hire])
Required minor hints
Required minor hints
- Asked a few good questions Asked a few good questions
Handled unforeseen edge cases once they became clear
Handled unforeseen edge cases once they became clear
2 Points [Leaning Don't Hire](2 Points [Leaning Don’t Hire])
Required several major hints
Required several major hints
Unclear if they could have progressed without assistance
Unclear if they could have progressed without assistance
Did not engage in thoughtful discussion regarding the problem
Did not engage in thoughtful discussion regarding the problem
1 Point [Strong Don't Hire](1 Point [Strong Don’t Hire])
- Struggled to work independently Struggled to work independently
Did not attempt unfamiliar problems
Did not attempt unfamiliar problems
Relied heavily on interviewer for direction
Relied heavily on interviewer for direction
6. Values Feedback(6. Values Feedback)
4 Points [Strong Hire](4 Points [Strong Hire])
Incorporated feedback quickly
Incorporated feedback quickly
Tried to understand the feedback on a deeper level
Tried to understand the feedback on a deeper level
- Challenged the feedback where appropriate Challenged the feedback where appropriate
3 Points [Leaning Hire](3 Points [Leaning Hire])
- Incorporated feedback quickly Incorporated feedback quickly
Did not challenge or seek to deeply understand the feedback
Did not challenge or seek to deeply understand the feedback
2 Points [Leaning Don't Hire](2 Points [Leaning Don’t Hire])
Incorporated feedback, but slowly and didn’t demonstrate satisfactory understanding of the feedback
Incorporated feedback, but slowly and didn't demonstrate satisfactory understanding of the feedback
1 Point [Strong Don't Hire](1 Point [Strong Don’t Hire])
- Blindly ignored or made little use of hints Blindly ignored or made little use of hints
The technical interview is only one side of the coin. The other side is the behavioral interview.
The technical interview is only one side of the coin. The other side is the behavioral interview.
The Behavioral Interview(The Behavioral Interview)
The behavioral interview is a series of questions to find out if you’re a good fit for the job. The goal of this interview is not necessarily to see if you can do the job, but rather, if your experience qualifies you to do it. The goal is to find out how you’ll perform by analyzing examples of how you performed in similar situations before.
The behavioral interview is a series of questions to find out if you're a good fit for the job. The goal of this interview is not necessarily to see if you can do the job, but rather, if your experience qualifies you to do it. The goal is to find out how you'll perform by analyzing examples of how you performed in similar situations before .
The behavioral interview doesn’t only benefit the interviewer. This is an opportunity for you to practice:
The behavioral interview doesn't only benefit the interviewer. This is an opportunity for you to practice:
Communicating the value you bring to the company.
Communicating the value you bring to the company.
Showcasing your qualifications, talents, skills, and communication.
Showcasing your qualifications , talents, skills, and communication .
How to Prepare(How to Prepare)
It’s a huge mistake to go into an interview without having done your research on the company. Here are some actions to take beforehand:
It's a huge mistake to go into an interview without having done your research on the company. Here are some actions to take beforehand:
Analyze the position and the company.
Analyze the position and the company.
Identify your experiences and skills that are most relevant to the position.
Identify your experiences and skills that are most relevant to the position.
Prepare a few scenarios that demonstrate teamwork, communication and leadership, etc.
Prepare a few scenarios that demonstrate teamwork, communication and leadership, etc.
Identify your strengths and areas where you can improve.
Identify your strengths and areas where you can improve .
What Will They Ask?(What Will They Ask?)
The questions your interviewer will ask aren’t random. I mentioned that they are trying to see if you’re a good fit. They’re trying to figure out how well you’ll handle inevitable situations on the job. This means they want to know if you’re able to overcome challenges, handle setbacks, be a team player, make decisions, etc.
The questions your interviewer will ask aren't random. I mentioned that they are trying to see if you're a good fit. They're trying to figure out how well you'll handle inevitable situations on the job. This means they want to know if you're able to overcome challenges , handle setbacks , be a team player , make decisions , etc.
The following are common situational categories and the questions that they may ask for each.
The following are common situational categories and the questions that they may ask for each.
Teamwork
Teamwork
- Do you like to work independently or as part of a group? Do you like to work independently or as part of a group?
- Tell me about a challenging interaction with a team member. Tell me about a challenging interaction with a team member.
- If I called your teammates, how do you think they would describe you? If I called your teammates, how do you think they would describe you?
Challenges
Challenges
Tell me about a challenge you faced while working on [portfolio project].
Tell me about a challenge you faced while working on [portfolio project].
- Describe a time when you had conflict with a team member. How did you resolve it? Describe a time when you had conflict with a team member. How did you resolve it?
Failures
Failures
- Tell me about a difficult failure you experienced. How did you handle it? Tell me about a difficult failure you experienced. How did you handle it?
Mistakes
Mistakes
- Tell me about a mistake you made. What happened and what did you learn from it? Tell me about a mistake you made. What happened and what did you learn from it?
Decision Making
Decision Making
- Tell me about a time when you had to make a tough decision. Tell me about a time when you had to make a tough decision.
Learning
Learning
- Describe a time when you had to learn something that was difficult for you. How did you approach it? Describe a time when you had to learn something that was difficult for you. How did you approach it?
Tech
Tech
- What’s the hardest bug you’ve ever solved? What's the hardest bug you've ever solved?
Achievement
Achievement
- What is your greatest achievement to date? What is your greatest achievement to date?
Fun/Oddball
Fun/Oddball
- If you were allowed to bring only 3 things to an island, what would you bring? If you were allowed to bring only 3 things to an island, what would you bring?
When answering these questions, do your best to be as specific as possible. It’s also important to avoid placing blame, especially when it comes to the mistakes category.
When answering these questions, do your best to be as specific as possible. It's also important to avoid placing blame , especially when it comes to the mistakes category.
Fortunately, there is a well-tested technique to help you give excellent answers.
Fortunately, there is a well-tested technique to help you give excellent answers.
The STAR Technique(The STAR Technique)
This technique will help you prepare clear and concise responses using real-life examples. Let’s break it down.
This technique will help you prepare clear and concise responses using real-life examples. 让我们分解一下。
First, the interviewer will ask the question. Listen carefully and think of an event to use in order to illustrate your answer. Then, apply the STAR technique.
First, the interviewer will ask the question. Listen carefully and think of an event to use in order to illustrate your answer. Then, apply the STAR technique.
STAR stands for: situation, task, action and result.
STAR stands for: situation, task, action and result.
Situation: Describe the event or situation you were in.
Situation : Describe the event or situation you were in.
Task: Explain the task you had to complete.
Task : Explain the task you had to complete.
Action: Describe the specific actions you took in order to complete the task.
Action : Describe the specific actions you took in order to complete the task.
Result: Close with the results of your efforts.
Result : Close with the results of your efforts.
Here’s an example of the STAR technique in action.
Here's an example of the STAR technique in action.
Interview Question
Interview Question
Have you assumed a leadership role before?
Have you assumed a leadership role before?
Your Answer
Your Answer
S — Yes, I have. A developer on my team had to leave for 3 weeks due to personal circumstances and we were weeks away from a big release.
S — Yes, I have. A developer on my team had to leave for 3 weeks due to personal circumstances and we were weeks away from a big release .
T — To make up for his absence, I knew we had to reassign the team’s tasks in order to meet the deadline.
T — To make up for his absence, I knew we had to reassign the team's tasks in order to meet the deadline.
A — I took the initiative to evaluate everybody’s tasks and see how we could make up for the absence as a team. Then I scheduled a meeting with the team to delegate the new tasks to keep us within schedule.
A — I took the initiative to evaluate everybody's tasks and see how we could make up for the absence as a team. Then I scheduled a meeting with the team to delegate the new tasks to keep us within schedule.
R — Almost everyone agreed to the change since it was a major release and we all understood the importance of it.
R — Almost everyone agreed to the change since it was a major release and we all understood the importance of it.
Follow up with lessons learned: I learned some people don’t like being assigned tasks on such short notice. I’ll communicate earlier next time if a similar situation arises.
Follow up with lessons learned: I learned some people don't like being assigned tasks on such short notice. I'll communicate earlier next time if a similar situation arises.
By using this technique, you’ve fully addressed the question about leadership while demonstrating that you can complete a large task competently. And on top of that, you’ve shown that you can take feedback and learn from it. You’re showing rather than telling, which is key to acing the behavioral interview.
By using this technique, you've fully addressed the question about leadership while demonstrating that you can complete a large task competently. And on top of that, you've shown that you can take feedback and learn from it. You're showing rather than telling , which is key to acing the behavioral interview.
Interview The Interviewer(Interview The Interviewer)
The interviewer is trying their best to gauge whether or not you’re a fit for the company. You should be doing the same exact thing. Try your best to answer:
The interviewer is trying their best to gauge whether or not you're a fit for the company. You should be doing the same exact thing. Try your best to answer:
Is this company a fit for me?
Is this company a fit for me?
Here are some questions you can ask in order to better understand the company’s culture and to get a handle on what the day-to-day responsibilities would be:
Here are some questions you can ask in order to better understand the company's culture and to get a handle on what the day-to-day responsibilities would be:
- Could you describe a typical day or week in this position? Could you describe a typical day or week in this position?
- Can you show me examples of projects I’d be working on? Can you show me examples of projects I'd be working on?
- Where do you see this company in the next 3 years? Where do you see this company in the next 3 years?
- What would you say is the biggest problem that the engineering team is facing today? What about the company as a whole? What would you say is the biggest problem that the engineering team is facing today? What about the company as a whole?
- Do you have any office traditions? Do you have any office traditions?
- What was the last team event you all did together? What was the last team event you all did together?
These are only a few examples. Try to ask questions specific to the company. Ask questions that don’t have a quick google search answer. Be curious!
These are only a few examples. Try to ask questions specific to the company . Ask questions that don't have a quick google search answer. Be curious !
Non-verbal Tips(Non-verbal Tips)
There are several pitfalls you can become victim to that are unrelated to the content of the interview itself. Make sure to not miss these:
There are several pitfalls you can become victim to that are unrelated to the content of the interview itself. Make sure to not miss these:
Show up early. Get there 15 minutes early.
Show up early. Get there 15 minutes early .
Dress appropriately. You may not need to wear a suit, but don’t be sloppy.
Dress appropriately. You may not need to wear a suit, but don't be sloppy.
- Firmly shake the hand of your interviewer. Firmly shake the hand of your interviewer.
Greet your interviewer by their name.
Greet your interviewer by their name .
- Have good eye contact. Have good eye contact.
- Have good posture. Have good posture.
After the interview, follow up with a thank-you email.
After the interview, follow up with a thank-you email .
This last tip also applies to life in general,
This last tip also applies to life in general,
No matter who you are interacting with, treat them just as you would the CEO. A bad impression with an intern, recruiter, HR person, janitor, etc., can hurt your chances at landing the role.
No matter who you are interacting with, treat them just as you would the CEO. A bad impression with an intern, recruiter, HR person, janitor, etc., can hurt your chances at landing the role.
And Finally…(And Finally…)
Congrats! You’ve reached the end of the guide. I hope you found this helpful. Feel free to comment below with any questions you have about anything discussed here. Finally, I’ll leave you with some insight that I wish I had before I started applying:
恭喜! You've reached the end of the guide. I hope you found this helpful. Feel free to comment below with any questions you have about anything discussed here. Finally, I'll leave you with some insight that I wish I had before I started applying:
Don’t apply when you feel ready. The worst thing you can do is convince yourself that you should apply to jobs only when you have the right number of projects in your portfolio or only when you feel like you have mastered all of the topics in Cracking the Coding Interview. Interviewing at companies is the best way to prepare for interviewing at companies. That seems obvious, but may not always feel so when you’re in the midst of studying for these interviews. Don’t let perfectionism block you.
Don't apply when you feel ready. The worst thing you can do is convince yourself that you should apply to jobs only when you have the right number of projects in your portfolio or only when you feel like you have mastered all of the topics in Cracking the Coding Interview. Interviewing at companies is the best way to prepare for interviewing at companies. That seems obvious, but may not always feel so when you're in the midst of studying for these interviews. Don't let perfectionism block you.
翻译自: https://medium.com/swlh/the-golden-guide-to-landing-a-developer-position-c78ad34a965f
delphi5开发人员指南