尽管计算机编程曾经被视为是极客和计算机书呆子所必须具备的技能,但如今它已被视为21世纪学习者的一项基本技能,并且甚至在小学中也已成为许多课程的重要组成部分。由于在学校本身学习编程基础知识变得至关重要,因此,如果您是一名新兴的CS工程师,则需要领先于这些基础知识来证明自己。
逻辑上的思考无疑是必不可少的,即使您不在一级大学学习,也可以提高获得精英职位的机会。学习编程语言和CS基础知识是您课程的一部分,但必定会对数据结构和算法有深入的了解,这将提高您的履历。
学习数据结构:何时以及为什么?
虽然永远不会太晚学习,但是早点开始总是一个福音。在高中或第一年学习数据结构和算法可能是最好的开始时间,因为它可以帮助您准备在三年级时进行入职面试。
从高中或一年级开始的好处:
- 仅编码是不够的,高效的编程只需要一个小时:在您的100个批处理中,每个人都知道如何用C++进行编码-那么您将如何脱颖而出?答案很简单,要高效。要知道如何编码是基础知识,而超越基础知识将使您无处不在。因此,开始学习如何与编程语言(如C,C++, Java等)一起有效地使用数据结构和算法
- 更好的算法,更好的程序员:学会编码之前先思考。业内人士说,一旦您学习了“如何思考”,就可以在不同语言之间切换只是很少的时间。因此,更早地专注于思考过程应该可以给您带来优势
- 在校园外找工作可能会更容易:这是最重要的方面之一,许多极客都证明了这一事实。仅通过在正确的时间和正确的时间学习概念,就有大量的学生获得了出色的工作。顶部的极客证明了这一事实,可以帮助您选择自己的方式。
- 竞争性编程的艺术:竞争性编程可以帮助您与世界各地的学生竞争,以证明您的编程技能,并且可以极大地帮助您通过比赛获得工作。但是,您需要的是出色的高效编码,并在正确的位置应用正确的数据结构和算法。 ACM-ICPC为工程师提供了一个绝佳的平台,以展示他们的编码技能和前进的进步。
- 精明的人和精明的代码总是受到赞赏:如果您不够聪明,无法分析和有效解决面试中的特定问题,那么良好的沟通能力,令人印象深刻的性格,上好的大学可能会徒劳无功。因此,在生理和心理上也要聪明。
- 编程语言和数据结构的正确组合是一个很大的好处:当您专注于数据结构和算法时,请确保至少与C++这样的一种编程语言保持一致。用一种/两种编程语言进行有效的编码肯定会走上正确的道路。
考虑一个简单的面试场景:
Interviewer : Perform sorting on array of N elements
Interviewee : Ok, I can do it using Selection Sort
The next question you are expected to be asked is :
Interviewer : Can you do it in a better way?
Interviewee : Thinks… Yes I can
Interviewer : How?
Interviewee : I can use QuickSort. As its time complexity is better than Selection sort in average and best case O(n log n)
Interviewer : What if all the elements of Array are already sorted in same order.(worst case of QuickSort)?
Interviewee : Then we might use Insertion Sort because in Insertion Sort, if element at position i is greater than all elements after it, no movements happen. So the outer loop will loop through all the elements without going inside making time complexity as O(n)
and so on…..
从这里可以很容易地看出,实际上,熟悉DS和Algos会让您为将来的采访和未来的竞争性编程挑战做好准备。
如何开始?
学习编程语言的入门并不像听起来那样令人生畏,学习也不为时已晚。您可以从免费的开源网站开始。一些链接可能会帮助您:
- 学习数据结构和算法
- 如何开始竞争性编程?
- C,C++, Java, Python
极客课程*如何为您提供帮助?
尽管很多学生可以使用电子学习自行学习,但会有更多的人喜欢在竞争激烈但健康的环境中与工程师一起学习。
GeekforGeeks已开始通过Geek Classes开展课堂学习计划,以帮助年轻的高中生和崭露头角的工程师提高他们的技术水平。
好处可能有很多:
- 与行业人士的直接互动:直接向行业专业人士学习的优势可能是双重的。一,您将从趋势行业的趋势方面了解一种新的学习方法,二,您将简单地学习如何有效地进行编码。
- 与其他编程人员的协作学习:与个人学习不同,协作学习利用评估彼此的想法,监视彼此的工作并获得越来越多的方法来完成一项任务。更具体地说,此模型增强了可以在极客中创建知识的地方,在极客中,他们仅通过共享就可以积极地进行交互。
- 个人关注和进度跟踪:如果您属于那些可能需要个人关注以即兴创作的人,那么请直接参加极客课程
- 实习以提高您的技能:当然,您也可以参加课程学习,但是如果您也有机会获得“在职学习”的机会,那该怎么办。是的,在极客课程中,我们也尝试向学生提供实习机会,以扩大他们的学习范围。 GeeksforGeeks的实习生现在在Google,Microsoft,Amazon,Samsung,PayTm等公司工作。
*目前,极客课程仅在诺伊达举行。我们正在进行中,即将开始在线教程。
如有疑问,请咨询专家
因此,尽管对编码的想法可能会使您有些紧张,但这并不是什么可以避开的。甚至有点了解总比完全不了解要好。另外,它还允许您与实际的程序员进行交流,使您了解编写某些程序所需要的知识,并从总体上提高自己。
如果仍有疑问,请发送电子邮件至geeks.classes@gmail.com或致电Ayushmaan,电话为8375042560来帮助您!
如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。