开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
今日推荐开源项目:《用来干嘛 Faker》
今日推荐英文原文:《How I Was Able to Pass Interviews at Top Tech Companies Without a CS Degree》

今日推荐开源项目:《用来干嘛 Faker》传送门:GitHub链接
推荐理由:该项目能用于用于生成假数据,例如姓名,地址和电话号码。那么,这个项目究竟能用来干什么呢?
今日推荐英文原文:How I Was Able to Pass Interviews at Top Tech Companies Without a CS Degree作者:Joey Colon
原文链接:
推荐理由:是金子总会发光

How I Was Able to Pass Interviews at Top Tech Companies Without a CS Degree

With a timeline and resources so you can do it too!

(Photo by Maranda Vandergriff on Unsplash.)

Introduction

Preparing for technical interviews might feel like a really vague task to work on — at least it did for me. In this article, I want to shed light on my personal timeline for studying and the strategies that I developed for myself. It should be noted that there is not an exclusive strategy you must follow in order to succeed.

I’m a firm believer in surrounding yourself with like-minded, motivated individuals. While some outlets existed for myself during my time of self-study, I wanted to allocate some of my own time and create my own community to help people who are in a similar position to myself. That is why I created the cscareers.dev community.

Before applying and interviewing with these companies, I highly suggest you check out the community that I am building. We are aiming to provide our community members with free company-specific interview questions as well as mock interviews and resume reviews by engineers from top tech companies to help you obtain and ace the interview.

Picking a Language — May 2019

Going into the interview preparation phase, I didn’t actually have a language to interview in. I was, and still am, a JavaScript developer by day. In my opinion, JavaScript is a suboptimal language in which to complete these algorithm interviews. I can explain why, but that deserves an article of its own.

Regardless, this put me in a particular position where I needed to get comfortable both with an interviewing language and problem-solving. I found Java to be appealing due to its verbosity, but in hindsight, I would have rather invested in learning Python due to its simplicity. Either way, don’t get tripped up on picking a language for too long. Most people are interviewing in C++/Python/Java. Commit to one and start focusing on more important things.

CodeSignal — May 2019

Since LeetCode was too difficult for me to complete even the easiest of problems, the first resource I started to use was CodeSignal. The platform provides several different categories of varying difficulty. For me, I needed to learn how to write Java code and start exercising my problem-solving muscles. I spent around a week completing various coding challenges from the Intro section of their Arcade area. I was able to kill two birds with one stone using this section of their website.

(CodeSignal website.)

LeetCode — May-June 2019

At this point, I decided to revisit LeetCode. It was still really difficult for me to complete problems given my lack of familiarity with how to apply data structures to problems, but there really is no way to get around this learning curve. Since I did not have the luxury of taking an algorithms course, I had to supplement my gap of knowledge through online lectures available on YouTube.

My biggest tip is to respect your time when doing a single problem. It becomes extremely inefficient to spend longer than 30 minutes thinking about how to approach a problem. If you aren’t on the right track (you’ll gain this intuition over time), head over to the discussion tab of the question and read the solution. LeetCode’s discussion tab is a wonderful resource to understand how others approach/solve a problem. The difference you gain between spending hours on a problem vs. 30 minutes is suboptimal. You want to be very respectful of your time when learning different concepts.

To really understand solutions to a problem, I would write the person’s solution into my code editor and really try my best to understand what each line served. For problems where I peeked at the solution, I would add them to a backlog of problems to do at a later date to reinforce the approach.

Mock Interviews — June-August 2019

Mock interviews are a great way to get prepare yourself for an interview. At this time, I was partaking in CodePath’s technical interviewing course, which gave me access to do a mock interview every week. It was a great resource to take advantage of. If I was preparing right now, I would definitely take advantage of Pramp and try to set up a schedule for myself where I do 1-2 mock interviews a week. While they are pretty nerve-racking, failure is free and you want to receive it in an environment that has no repercussions. Mock interviews are the perfect tool for that.

While completing my own mock interviews, being able to watch how other successful people interviewed was honestly game-changing. There are several YouTube channels that have mock interviews with experienced engineers.

With cscareers.dev, I am personally taking my time to mock interview people who have passed these difficult technical interviews and broadcast these interviews online in hopes that they are able to be as resourceful as I found them to be:
https://youtu.be/DeBekxKPi_E

LeetCode — July-October 2019

By July, I am starting to become more comfortable with LeetCode. The problems that stomped me back in May became trivial and I was finally able to start solving problems from the Blind Top 75 Questions list. I recommend tackling the problems on this list, as they hit a lot of the concepts that these interview problems cover. I even encountered being asked the same exact question in an actual interview.

In the CSCareers Discord server, there is a bot that you can interact with to choose a random question from the popular Blind list as well as any company-specific question.

(CSCareers Discord bot.)
Whenever I would have an interview, I would take time to do problems that the company frequently asks. For example, Facebook loves asking tree problems based on their frequently asked problems, so I would make sure that I was extremely comfortable with answering tree problems. This isn’t a bulletproof method, but it serves as a great way to prepare for a company’s specific interview.

On top of studying company questions, I would answer all the questions on a whiteboard. You don’t want the real interview to be the first time you write on a whiteboard. There are tricks that you can learn to help you write code faster on a whiteboard, but you won’t be learning them if you don’t take the time out to prepare yourself.

Elements of Programming Interviews — September 2019

I would like to give a special acknowledgment to the Elements of Programming Interviews book. I would often see recommendations for the CTCI book, but when comparing the two side by side, I truly believe that this book alone would suffice as study material to succeed in the interview. I can’t say the same about CTCI anymore. EPI provides catered study plans based on how much time you have to prepare.

Conclusion

Just like any other skill, technical interviewing is a skill you must hone. I genuinely believe if you surround yourself with the right people during your process of studying and put in the conscious effort to improve, you will be able to pass interviews at these large tech companies.


下载开源日报APP:https://openingsource.org/2579/
加入我们:https://openingsource.org/about/join/
关注我们:https://openingsource.org/about/love/