amazon s3 是什么
As a software engineer entering the job market, I have had the opportunity to speak with dozens of companies, from two-person startups to giant companies, including Facebook and Amazon.
作为进入就业市场的软件工程师,我有幸与数十家公司进行了交谈,从两人创业公司到大型公司,包括Facebook和Amazon。
Companies interview technical talent in vastly different ways. I have been asked to share stories about my past experience, build a stock trading application in four days, and the classic — solve a coding problem on a whiteboard to show my chops in algorithms and data structures.
公司以截然不同的方式采访技术人才。 我被要求分享有关我过去的经验的故事,在四天内构建一个股票交易应用程序,而经典的解决方案是在白板上解决编码问题,以展示我在算法和数据结构方面的知识。
I have learned so much throughout this process.
在整个过程中,我学到了很多东西。
One of my most recent interviews was a one-hour phone screen with an Amazon engineer. In addition to the behavioral component (two pieces of advice there: STAR method and Leadership Principles), we spent a little over half of the time working through a coding question on a digital whiteboard while speaking over the phone. I didn’t end up moving past this stage (aka I failed — trying to get more comfortable saying this out loud), but I learned a ton.
我最近的一次采访是一位亚马逊工程师的一小时电话屏幕。 除了行为方面的内容(这里有两条建议: STAR方法和Leadership Principles ),我们还花费了一半以上的时间在通过电话交谈时在数字白板上解决编码问题。 我并没有最终离开这个阶段(也就是我失败了,试图让自己大声说出来),但是我学到了很多东西。
I asked the interviewer for feedback at the end of the call. I highly recommend doing this because even though I was not feeling super confident about my performance, I knew that interviewing at Amazon and speaking to an Amazon engineer in this context was an invaluable opportunity to learn, to grow, and to improve.
我在电话结束时要求面试官提供反馈。 我强烈建议您这样做,因为即使我对自己的表现没有超级自信,但我知道在这种情况下在亚马逊面试并与亚马逊工程师交谈是学习,成长和改进的宝贵机会。
My interviewer gave me two amazing pieces of advice that have already helped me in subsequent technical screens:
面试官给了我两个惊人的建议,这些建议已经在后来的技术屏幕中为我提供了帮助:
1.就像在这里工作一样编写代码 (1. Write code as if you were working here)
I took this to mean that in an interview, you should write code as though you are working at the company and with a team. This might seem obvious, but when you’re practicing on LeetCode, it’s easy to only focus on getting your program to pass all of the tests and writing an algorithm that has the lowest space and time complexity. Accuracy, speed, and efficiency are important, but just because your code works and your algorithm is fast, does not necessarily mean that a company is going to see you as an asset. Other engineers need to be able to look at your program and very quickly understand what it is doing. They need to be able to jump in and seamlessly make changes. Your program needs to scale. Using proper variable names, adding comments, and generally using the least verbose functions and syntax will make you stand out. Clearer and concise logic might even be preferable to something faster but less clear.
我的意思是,在面试中,您应该像在公司和团队中工作一样编写代码。 这看起来似乎很明显,但是当您在使用LeetCode进行练习时,仅专注于让程序通过所有测试并编写具有最低时空复杂度的算法是很容易的。 准确性,速度和效率很重要,但是仅仅因为您的代码有效并且您的算法快速,并不一定意味着公司会将您视为资产。 其他工程师需要能够查看您的程序并非常快速地了解它在做什么。 他们需要能够加入并无缝地进行更改。 您的程序需要扩展。 使用适当的变量名,添加注释以及通常使用最少的冗长函数和语法将使您脱颖而出。 更清晰简洁的逻辑甚至可能比更快但不太清晰的东西更可取。
2.数据结构是您的朋友 (2. Data structures are your friend)
I had a question that required me to track whether numbers had been seen before. I ended up achieving this with an array. In JavaScript, there’s a data structure that is similar to an array but automatically does not allow you to add duplicates. Sets! Of course. I was familiar with the data structure but knew my program would not end up adding duplicates into the array anyway, so I went with arrays. This was a mistake. A good strategy before picking a data structure would have been to make a quick list of what I needed to achieve (no duplicates, random access not necessary) and then a list of possible data structures (array, object/hash table, set). That quick process would have led me to a set, the superior data structure for this use case not because it was faster but because it would have been more clear to my collaborators. Another way to follow the first piece of advice, “Write code as if you were working here” is to choose a data structure that offers other developers very obvious signals about what the program is doing.
我有一个问题,要求我跟踪以前是否查看过数字。 我最终通过数组实现了这一点。 在JavaScript中,有一个类似于数组的数据结构,但是自动不允许您添加重复项。 集! 当然。 我熟悉数据结构,但是知道我的程序最终不会将重复项添加到数组中,所以我选择了数组。 这是一个错误。 选择数据结构之前的一个好策略是快速列出我需要实现的目标(没有重复,不需要随机访问),然后列出可能的数据结构(数组,对象/哈希表,集合)。 如此快速的过程将使我得到一个针对该用例的高级数据结构,不是因为它更快,而是因为它对我的协作者而言更加清晰。 遵循第一条建议的另一种方法是“就像在这里一样编写代码”,是选择一种数据结构,该结构为其他开发人员提供有关程序运行情况的明显信号。
This advice has also helped me better understand why companies ask these types of questions. While the whiteboarding exercises may seem unrelated to an engineer’s everyday work building software — and I do think there are better ways to understand how skilled your candidate is at programming — I now see much more of a connection. Approaching an algorithm problem with these two points in mind turns a whiteboarding problem into an opportunity to show a company that you can write code in a clear and efficient way as part of a team.
这些建议还帮助我更好地理解了公司为什么会问这些类型的问题。 虽然白板练习似乎与工程师的日常工作构建软件无关,而且我确实认为有更好的方法来了解候选人在编程方面的熟练程度,但我现在看到了更多的联系。 考虑到这两点来解决算法问题,就可以将白板问题变成向公司展示可以作为团队一部分以清晰有效的方式编写代码的机会。
翻译自: https://onezero.medium.com/what-i-learned-from-my-interview-with-amazon-375ff633a034
amazon s3 是什么