开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
今日推荐开源项目:《人工智能课程 AI_Curriculum》
今日推荐英文原文:《Is Competitive Programming Helpful for Tech Interviews?》
(这里放日报封面) (请检查,本文勾上了且只勾了《开源日报》这一个分类,请检查,有添加文章 Tag,请检查,有添加文章摘要,请检查,有添加特色图像,有添加bigger图片,有选中头图“布局设置”为占满屏幕的那张“第3张”) (请检查,预览时候,所有图片和文字显示正常,且勾上了百度熊掌号-原创提交) (请检查,本文的信息已经添加到 https://pm.openingsource.org/projects/daily/wiki日报摘要里,每个月的摘要信息单独发一个page,格式参照 https://openingsource.org/daily-index/2018-5/,标题,URL,正文等格式均需保持一致) (检查上述都完成之后,请删掉括号里的字,包括这一句,每天发布时间为早晨8点左右)
今日推荐开源项目:《人工智能课程 AI_Curriculum》传送门:GitHub链接
推荐理由:该项目为开放的深度学习和强化学习课程,来自斯坦福大学、麻省理工学院、加州大学伯克利分校等顶尖大学。
今日推荐英文原文:《Is Competitive Programming Helpful for Tech Interviews?》作者:Dhananjay Trivedi
原文链接:https://medium.com/better-programming/is-competitive-programming-helpful-for-tech-interviews-e3d7ae1ba0b4
推荐理由:打比赛对我们的帮助还是挺大的

Is Competitive Programming Helpful for Tech Interviews?

Can CP help you get your dream job?

(Photo by Kaleidico on Unsplash)
In this piece, we will try to understand the importance of competetive programming (CP) and how it may or may not be helpful for your tech interview.

Competitive programming, for those of you who don’t know, is a type of mind-sport where you have to solve some programming problems with time and memory constraints and come up with an algorithm to do so.

It’s mostly about passing the test scenarios within the time and memory constraint — this sometimes requires you to think outside the box.

For example, there’s a problem — you read the problem, you understand it, you code it, you debug it and you finally successfully submit it. It might take you 10 minutes.

Meanwhile, some guy in the leaderboard has submitted the solution in 30 seconds. It’s simply because he was able to come up with a simple idea for the solution.

What makes some programmers so fast?
  • He didn’t have to go through the whole dataset making sure it's correct.
  • He didn’t need to get more clarity about the problem statement.
  • He didn’t have to think of edge cases.
With some simple, logical assumptions, he was able to come up with a simple solution, code it and submit it.

People don’t check your code in competitions, they want you to pass all the decided test scenarios.

Sometimes, for very complex problems, all the test cases can’t be predicted so the competition might miss a test case and you don’t have to worry about it.

That’s the beauty of competitive programming.

At the same time, competitive programming problems are harder than interview questions and they involve more advanced algorithms and data structures.

(Photo by Nik MacMillan on Unsplash)
In a coding interview, you can’t afford to assumptions. When you are given a coding problem in your interview, before you jump into actually coding it, you are expected to:
  • Ask good questions to get a better understanding of the problem.
  • Think of all the edge cases and be sure to cover them.
  • Be able to optimize your solution according to the specified requirements.
  • Write clean, solid code.
Coding interviews can ask questions that can’t be only solved by one computer, for example, parallel or distributed systems.

Interviews can also ask you to come up with some specialized algorithms for special cases — this might not be the best fit solution for a competitive programming problem but fits perfectly for the scenario of your interview.

Does Competitive Programming make Good Software Engineers?

(Photo by Phil Hearing on Unsplash)
Competitive programming helps sharpen your brain for programming and people at the top of the competitive programming domain are really smart. Also, some of their exceptional qualities like their maths and coding skills might be overkill for some SDE jobs.

But not all competitive programmers make good software engineers. There are a lot of other skills that competitive programming doesn’t teach you (and yes, you’re supposed to learn them on your own).

For example:
  • The art of writing clean code.
  • S.O.L.I.D principles.
  • Asking the right questions around the problem statements.
  • Scalable system designs.
The above-mentioned skills don’t help in CP. If your goal is to become the god of CP, you don’t have to worry about acquiring these skills.

But if you see yourself as a software engineer, then these are must-have qualities.

Should You do CP or Not?

This depends on where you are in your career.

1. If you’re a student at school/college.

Yes. You should invest as much time as you can to do competitive programming. It’s one of the best investments you can make in yourself.

It will sharpen your brain and you’ll learn some really strong computer science fundamentals, which are essential in programming jobs.

The companies interviewing you right after college won’t really look for the above mentioned SDE qualities. You’ll learn these as you progress into your career — it’s a cherry on top if you can learn some of them.

You can use the CP contents to attract your potential employers and even win the good prize money. But you don’t have to win those contests to get a job offer from the big tech companies — you just have to be amongst the top performers to attract them.

2. If you’re a working professional

Yes. You should at least practice one problem a day, to keep your programming mind sharpened. Working on projects doesn’t really push your brain and skills to the required extent. Over time you will lose your problem-solving abilities.

But you shouldn’t invest all your time and skills into competitive programming as you are already a professional. Invest time in upskilling your professional qualities as well.

CP will help you stay at the top of your problem-solving abilities and will give you the confidence to be interview-ready.

You can use the CP contests to get your next great job offer, earn some extra prize money.

Where Can You Practice Competitive Programming?


There are some popular coding competitions that you can practice and compete in:
  • Top Coder
  • Hackerrank (personal suggestion for beginners)
  • Codeforces
  • HackerEarth
  • Codechef
  • Leet Code
  • Google Codejam
  • Facebook hacker cup
I hope this has brought some value to you!

Have I missed anything? I would love to learn more from you.

Happy Hacking!


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