面试中宏观问题如何回答
by Salma Elshahawy
通过萨尔玛·埃尔沙哈维(Salma Elshahawy)
Everyone likes to hop from company to company to find the best position that fits them. Currently, I am applying for jobs in companies that have a culture of work/life balance.
每个人都喜欢在公司之间跳来跳去,找到适合他们的最佳职位。 目前,我正在一家具有工作/生活平衡文化的公司中申请工作。
I applied for a position as a software engineer at X-company. They were the most professional company that I have ever interviewed for. The interviewer was well prepared and left adequate time in our meeting to exchange questions.
我申请了X公司的软件工程师职位。 他们是我采访过的最专业的公司。 面试官准备充分,并在我们的会议中留出足够的时间来交流问题。
In this post, I will share the questions the interviewer asked me (mixed types, behavioral and technical questions). Also, I will share the questions I asked him when it was my turn to ask him some questions.
在这篇文章中,我将分享面试官问我的问题(混合类型,行为和技术问题)。 另外,我将在轮到我问他一些问题时分享我问他的问题。
I decided to document this interview because I believe it was a valuable experience in the technical and behavioral interview. Maybe it will help other engineers to get an idea of how to respond to those kinds of questions.
我决定记录此访谈,因为我认为这是技术和行为访谈中的宝贵经验。 也许它将帮助其他工程师了解如何回答此类问题。
Q1:告诉我你自己 (Q1: Tell me about yourself)
This type of question is asked so you can express yourself in brief and get the full attention of your interviewer. So, you have to practice answering this question before experiencing it. I prefer to write an abstract summary about myself and practice saying it in a maximum of 30 seconds or an elevator pitch.
提出此类问题是为了使您能够简短地表达自己,并得到面试官的充分注意。 因此,您必须先练习回答这个问题,然后再体验。 我更喜欢写一个关于自己的摘要,并练习在最多30秒或一个电梯音调中说出来。
A1: I am a software engineer with a mechanical engineering background. I am passionate about cleanly written, organized, tested code. I have experience in scripting and functional languages.
A1:我是一名具有机械工程背景的软件工程师。 我对编写整洁,经过测试的代码充满热情。 我有脚本和功能语言方面的经验。
I built many SaaS applications including authentication, authorization, and secure payments. I discovered coding through my previous career where I built applications to help in the design process.
我构建了许多SaaS应用程序,包括身份验证,授权和安全付款。 我在以前的职业生涯中发现了编码,在那期间我构建了有助于设计过程的应用程序。
Now, I am looking to contribute my range of skills to a team that needs a dedicated performer with a broad grasp of technologies.
现在,我希望将我的技能范围贡献给需要一支具有广泛技术掌握的敬业绩效的团队。
问题2:描述一种情况,您没有任何资源,必须在特定时间范围内提供全面开发的功能 (Q2: Describe a situation where you didn’t have any resources, and you had to deliver a fully developed feature in a specific time frame)
For this type of question, you have to explain three things to the listener — the issue, the solution, and the action — as a story.
对于此类问题,您必须作为故事向听众解释三件事:问题,解决方案和行动。
A2: I was supposed to deliver a feature for a sprint in two weeks as a demo. The user story for the task wasn’t clear and not decided yet. Additionally, the product manager was a new hire and had no idea about the suggested feature. Meanwhile, I didn’t have enough resources to identify the inputs, outputs, and dependencies.
A2:我应该在两个星期内提供一个sprint的功能作为演示。 该任务的用户故事尚不清楚,尚未确定。 此外,产品经理是新员工,对建议的功能一无所知。 同时,我没有足够的资源来确定输入,输出和依赖项。
Hence, I decided to talk to the product manager and my team leader to brainstorm ideas about shaping a basic user story that could simulate the functionality. We had a user story approved by the product manager. Finally, I started writing business logic that implemented the feature.
因此,我决定与产品经理和团队负责人进行讨论,以集思广益,以塑造可模拟功能的基本用户故事。 我们有一个产品经理批准的用户案例。 最后,我开始编写实现该功能的业务逻辑。
Q3:告诉我有关您必须将问题升级到比您更高的权限的情况 (Q3: Tell me about a situation where you had to escalate the issue to a higher authority than you)
A3: I had to write unit tests for another developer’s business logic to increase the coverage. There was a bug in the code which caused the unit test for a particular block to always fail.
A3:我不得不为另一个开发人员的业务逻辑编写单元测试,以增加覆盖范围。 代码中存在一个错误,导致特定块的单元测试始终失败。
I started a debugging session to find out where the bug was so I could fix it. I found the bug — a database query. I checked for the feature owner and sent him a detailed email about the problem to fix it. He responded that I had to adjust the unit tests to the code that already existed with the bug because we had a sprint demo the next morning. He wasn’t sure if he could fix it before that.
我开始了一个调试会话,以找出错误的位置,以便我进行修复。 我发现了这个错误-数据库查询。 我检查了功能所有者,并向他发送了有关该问题的详细电子邮件以进行修复。 他回答说,我必须将单元测试调整为该错误已经存在的代码,因为第二天早上我们有一个sprint演示。 他不确定是否可以在此之前修复它。
In that situation, I decided to escalate the issue to our team leader — writing unit tests for a bug is like driving a car in reverse. Our team leader investigated the matter and asked him to fix the business logic.
在这种情况下,我决定将问题上报给我们的团队负责人-编写针对错误的单元测试就像倒车一样。 我们的团队负责人对此事进行了调查,并要求他修正业务逻辑。
问题4:如何确定给您的指示正确无误? (Q4: How do you make sure that the instructions given to you are precise and correct?)
A4: I can make sure that the instructions are correct by audit and scrutiny. For instance, when I need to learn a new thing from a written tutorial, I try to check the output at each step that I did to make sure it matches what is written in the tutorial.
解答4:通过审核和检查,我可以确保说明正确无误。 例如,当我需要从书面教程中学习新东西时,我会尝试检查每一步的输出,以确保其与教程中编写的内容匹配。
Q5:如何确保您的数据已成功存储在数据库中? (Q5: How do you make sure that your data is successfully stored in the database?)
A5: There are several ways to do that. I can use a helper method to check that piece of data in the database. If it exists, put a flag and set it to true, else set it to false. Maybe different ways are smarter than this one, but I prefer the visual confirmation.
回答5:有几种方法可以做到这一点。 我可以使用辅助方法来检查数据库中的那段数据。 如果存在,则放置一个标志并将其设置为true,否则将其设置为false。 也许不同的方法比这更聪明,但我更喜欢视觉确认。
Q6:如何确保输出是用户故事中的确切输出? (Q6: How do you make sure that the output is the exact output in the user story?)
A6: When I have my assigned task, I draw a visual flowchart that demonstrates inputs, outputs, and dependencies to make it easy for me to catch up quickly in case I get distracted by other things. Additionally, it will be easy for someone else who isn’t familiar with my business logic to help me in a situation where I get stuck.
A6:当我完成分配的任务时,我绘制了一个直观的流程图,该流程图演示了输入,输出和依赖关系,以使我很容易在遇到其他事情分心的情况下Swift赶上来。 另外,对于不熟悉我的业务逻辑的其他人来说,在遇到困难的情况下帮助我也很容易。
问题7:详细告诉我您决定应遵守公司政策时遇到的情况吗? (Q7: Tell me in detail about a situation you’ve countered when you decided you should stick to the company’s policy?)
A7: I haven’t faced such a situation in my personal experience, but I have seen it happen to one of my team members. He had to make an invocation to an external service to test the business logic and make sure that he got the desired output. To make that external call, you should have a certificate to enable a proxy that will redirect you to external sites. My colleague waited for permission according to the company policy.
A7:我的个人经历还没有遇到过这种情况,但是我已经看到这种情况发生在我的一个团队成员身上。 他必须调用外部服务以测试业务逻辑并确保获得所需的输出。 要进行该外部呼叫,您应该具有证书以启用将您重定向到外部站点的代理。 我的同事根据公司政策等待批准。
The interviewer then asked me if you were him, what you would do until you got the permission?
面试官然后问我你是否是他,在获得许可之前你会怎么做?
Then, the interviewer thanked me for my responses and told me that he was ready if I have any questions for him. I believe that the interview is a two-way process. I did my homework and prepared some questions that could help me understand the company culture and if it was a suitable fit for me.
然后,面试官感谢我的回答,并告诉我,如果我有任何疑问,他准备好了。 我相信面试是一个双向过程。 我做了作业,并准备了一些问题,这些问题可以帮助我了解公司的文化以及是否适合我。
Note: It is crucial to prepare at least two questions from the job description that are meaningful and thorough that indicate your interest in working on that position.
注意:从职位描述中至少准备两个有意义且彻底的问题,表明您有兴趣从事该职位,这是至关重要的。
问题1:您用来评估项目/冲刺是否完成或失败的绩效指标是什么? (Q1: What are your performance metrics that you use to judge if a project/sprint has completed or failed?)
In that particular question, I was looking for their quality in implementing features. Do they care about only making a sprint pass or do they care about quality?
在这个特定问题中,我一直在寻找实现功能的质量。 他们只在乎冲刺通过吗,还是在乎质量?
问题2:您如何估算任务? 谁估算呢? (Q2: How do you estimate tasks? And who does the estimation?)
I wanted to know if they pushed developers and gave them tasks without asking, or if they didn’t care about a practical time-frame.
我想知道他们是否在不询问的情况下推动开发人员并给他们任务,或者他们是否不在乎实际的时间范围。
The tasks estimation can be done theoretically using a simple Fibonacci number with a collaboration with developers estimate — mixed between theoretical and real.
理论上,可以使用简单的斐波那契数与开发人员估算的协作来完成任务估算-理论值与实际值之间是混合的。
问题3:谁支持项目文档? 而且他们多久更新一次? (Q3: Who supports project documentation? And How often do they update it?)
Here, I wanted to make sure that if I got that job, I wouldn’t be stuck waiting for other people to mentor me and walk me through the project to get familiar. If there was well-written documentation, it would be easy for me or anyone to catch up quickly without pain.
在这里,我想确保如果获得这份工作,我不会被困在等待其他人指导我并带领我完成该项目以使其熟悉的过程。 如果有写得很好的文档,那么对我或任何人来说,都会很容易很快地赶上而无需痛苦。
问题4:您使用什么工具来分析软件/项目? (Q4: What tools do you use to profile your software/project?)
Profiling software is necessary because it does two significant things:
分析软件是必需的,因为它可以完成两项重要工作:
- Bugs can be found early before deploying to the production environment — saves a lot of time. 可以在部署到生产环境之前尽早发现错误-节省大量时间。
- You can optimize your application easily. 您可以轻松优化应用程序。
- You can explore the complete flow of the software including database calls, etc. 您可以浏览软件的完整流程,包括数据库调用等。
So, I believe that if they have such a tool, they are a professional company, and I have an opportunity to grow my skills.
因此,我相信如果他们拥有这样的工具,那就意味着他们是一家专业公司,并且我有机会提高自己的技能。
An example of profiling software is Miniprofiler for both Ruby and Node.js
配置软件的一个例子是Miniprofiler用于Ruby和Node.js的
问题5:您有测试覆盖率统计工具吗? (Q5: Do you have any test coverage statistics tools?)
My aim with that question was to see how much they care about the code quality. These tools show in detail the coverage for line coverage, which means writing essential test cases.
我的目标是看他们对代码质量有多重视。 这些工具详细显示了线路覆盖率,这意味着编写基本的测试用例。
Anyone can write code, but good developers care about test cases before they write any line of code. I care about quality.
任何人都可以编写代码,但是优秀的开发人员在编写任何代码行之前都会先关注测试用例。 我关心质量。
Q6:贵公司是否定期发起技术对话? (Q6: Does your company launch tech talks periodically?)
I was curious about whether they care about their developers concerning career growth and improving their engineer’s skills.
我很好奇他们是否关心开发人员的职业发展和提高工程师的技能。
问题7:工作时间表有多灵活? 你有WFH天吗? (Q7: How flexible is the work schedule? Do you have WFH days?)
This questions reveals a lot about the work environment. It gives you a clear picture of what type of company it is. I asked that question after several technical ones to prove myself first to the interviewer. Have their respect first, then ask those personal questions.
这个问题揭示了很多有关工作环境的信息。 它使您清楚地了解它是哪种类型的公司。 我问了几个技术问题后才向面试官证明自己。 首先要尊重他们,然后问那些个人问题。
问题8:您特别喜欢公司吗? 您喜欢您的团队吗? (Q8: What do you especially like about the company? And what do you love about your team?)
I wanted to see if he likes working at the company or not. As an interviewee, you can know this easily from their tone — either they are happy or neutral. The excitement in the answer will guide you whether this company deserves you or not.
我想看看他是否喜欢在公司工作。 作为受访者,您可以从他们的语气中轻松了解这一点-他们是快乐的还是中立的。 答案中的兴奋点将指导您该公司是否值得您服务。
结束语 (Closing notes)
Leaving a good impression on your interview is imperative. That will make sure your interviewer never forgets you. The conversation is a chance to learn new things from your interviewer. Ask smart questions that will leave a positive impression and will let them know that you will be an added value to the team. Keep asking as long as you have the opportunity. I hope my experience can help other developers in their interviews.
必须在面试中留下良好的印象。 这样可以确保您的面试官永远不会忘记您。 对话是向面试官学习新事物的机会。 提出巧妙的问题,这些问题会给人留下积极的印象,并使他们知道您将为团队增值。 只要有机会就不断询问。 我希望我的经验可以帮助其他开发人员进行面试。
Finally, if you liked my post, please follow me here on Medium or leave a comment. You can follow me on twitter @salmaneg. Thanks for reading and good luck with your job hunting!!!
最后,如果您喜欢我的帖子,请在“ 中等”上关注我或发表评论。 您可以在twitter @salmaneg上关注我。 感谢您的阅读并祝您找工作好运!!!
面试中宏观问题如何回答