你想成为一个成功的软件开发人员,并梦想进入大科技公司吗?
你是否有人已经作为开发商工作,但在职业生涯中寻找大举动?
好吧,如果你是其中之一,那么你肯定已经试着做一些准备,你可能已经试着涵盖各种主题了。你制定一个计划,你试着按照你的计划去做,你开始通过各种资源、教程和视频做准备。188金宝搏真人20你刚开始学,但过了几天或几个月,你发现你哪儿也去不了。你没有任何进展,事情让你不知所措。
你不是一个人,很多新手程序员和有经验的开发人员都遇到过这种情况。他们尝试着学习编码,尝试着涵盖各种主题,但是由于缺乏良好的路线图和指导,事情对他们来说变得混乱和困惑。在准备过程中,他们错过了很多重要的内容。
为了帮助你做到这一点,我们基于大量的研究和在大型科技公司工作的软件开发人员的经验,创建了一个实用的路线图“100天代码”。这个路线图将为您提供一个完整的指南,帮助您建立强大的编码习惯,并实现作为软件开发人员的目标。你所需要的只是一台笔记本电脑,一个正常工作的网络连接,定期解决问题的决心,在几个月内,你就可以养成编程的习惯,学习要点,并破解面试。
在这里,我们已经涵盖了:
什么是100天的代码?
怎样才能在合适的时间范围内打通大型科技公司的面试?
这个问题来自每个新手和经验丰富的程序员的思想。
好吧,如果您定位一些大型技术公司,还有很多主题和事情要覆盖。挑战是有限的时间范围,并根据我们的研究,我们需要说它可能需要近14周或100天。我们将完整的主题分为100天,所有您只需遵循它并保持致力于编码100天。
如果你遵循这个方法,并坚持编码,那么你不仅会养成良好的编码习惯,而且你将能够破解60-70%的科技公司的面试。
我们将在100天内涵盖5-6个主要主题,我们将针对Facebook,Google,Microsoft,Amazon等大型科技公司的访谈。以下这些主题如下所示
- 数据结构和算法(编码部分和问题解决)
- 系统设计
- 操作系统和数据库管理系统
- 面向对象设计
- 文化适应
在我们继续这个路线图之前,有几件事需要记住……
- 如果您是初学者,那么使目标解决近450-500个编码问题。
- 如果你是一个有经验的人,那么把目标设定为解决300到350个问题。
- 系统设计主要是由有经验的人提出的,所以初学者较少关注这一部分,而有经验的人则更多关注这一部分。
- 如果你是一个初学者,那么试着每天花至少4-6个小时。
- 如果你是一个有经验的人,那么你需要承诺每天花2-3个小时。
- 理想情况下,你不应该花超过20-30分钟的时间来解决任何给定的问题,但要记住,这个规则并不适用于所有的问题。
先决条件:我们假设,如果你是一个初学者,那么你在大学里已经完成了一些项目,如果你是一个有经验的开发者,那么你肯定会参与一些项目。
给初学者的100天代码
在你继续前进之前,请记住,作为一个程序员新手,你会被这么多的问题压垮,在解决这些问题时,你将面临很多困难。如果你花更多的时间来解决问题也没关系,但不要灰心。
即使需要几个小时的时间,也要尝试解决问题。花了很多小时后,如果你没有得到解决方案,那么你可以伸展几天或拿出暗示。正如您将取得进展,您将看到自己的改进,并且您也需要更少的时间解决问题。
第1天至第10天
选择一种编程语言并学习它的基础知识
您需要选择一个编程语言,您需要坚持下去。探索各种编程语言,阅读有关它们,请在您的代码编辑器中尝试,并检查您是否对其感到满意。
当您选择一种语言时会出现很多问题。Python比Java好吗?C ++是一种更快的语言,所以我应该选择这种语言,Java语法是更复杂的,但大公司正在努力,如果我知道多种语言怎么办?
所有这些问题都会造成困惑,当你在代码编辑器中尝试这些语言时,你也会切换到一些不同的语言。探索这些语言,然后选择一种最适合你的。不要仅仅因为某一种语言在科技行业很流行就选择它。你需要选择一种你最熟悉的语言。学一门语言几乎需要4-5天的时间。
一旦你选择了一门语言,学习它的基础知识,但如果你已经掌握了基础知识(你可能已经用那门语言创建了你的项目),那么就温习一下。我们已经看到,很多人忘记了他们所选择的语言的基本东西。所以你需要确保你对你选择的语言有一个很好的掌握。学习基本的语法,做一些在线测试,记住你所选语言的基本知识。你可能需要一个星期或七天的时间来学习语言的基础知识。
你应该记住的几件事是……
- 从/读/写文件。
- 从控制台读取输入。
- 分裂串
- 2D阵列实现以及如何使用它。
- 非常基本的语言,如C / C ++处理空终止字符串
Lyft和Salesforce等大量公司对其招聘程序具有轻微的差异。他们希望候选人编写代码并解决笔记本电脑上的问题。您必须编写完整的程序,您的代码应通过给定的测试用例。您可能必须在命令行参数上工作,或者您可能必须解析CSV或文本文件。
其他公司如谷歌、亚马逊或微软使用白板。所以,在面试中,你最好能掌握语言的基础知识,以应对这两种编程场景。所以,你几乎需要10天的时间来决定哪一种语言最适合你,你会觉得舒服。
资源
你也可以试试188金宝搏滚球投注GeeksforGeeks免费课程:
第11天到第20天
学习数据结构和算法
现在是时候学习编码中最重要的部分了,即数据结构和算法。这门课主要在本科生中讲授,大多数人忽视了它的重要性。但是在编码面试中,这个主题是最重要的。
学习各种数据结构和算法的基础知识,包括复杂性部分。主题如下…
在代码编辑器中涵盖以上所有基本内容并实现各种DSA。你还需要覆盖细绳这是在面试中最有可能被问到的部分。
如果你认为你已经知道DSA的所有主题,那么就做一些在线测试,测试你的技能。你肯定会发现,你仍然需要修改基本概念。
学习实现数组,链接列表,堆栈,队列,树等。基本基础有助于解决编码问题,所以不要跳过它并掌握它。
资源
第21天到第40天
解决基本层面问题
一旦您熟悉基本编码问题的基本数据结构和算法练习。练习基本级别问题将帮助您伸展思想,并将您准备解决中等水平问题。
不要跳过基本的水平,否则你将面临困难,解决更难的问题,你将不得不回到基本水平。尝试在10天内解决近200个基本水平的问题。根据时间和速度,你可以增加问题的数量。每天在4-6小时的时间内回答8-12个问题会帮你打好基础。
样本数组的问题
示例链接列表问题
样本堆栈和队列问题
样本树问题
样品图的问题
样本堆问题
第41天至第60天
解决中层问题
现在是练习一些中等水平的问题的时候了。中等水平的问题可以帮助你解决较难的问题,这些问题在面试中最有可能被问到。试着在20天内解决150-170道中等水平的题目。根据时间和速度,你可以增加问题的数量。每天在4-6小时的时间内回答7-8个问题就足够了。
样本数组的问题
示例链接列表问题
样本堆栈和队列问题
样本树问题
样品图的问题
第61天到第75天
解决难度较大的问题
当你解决了基础和中级问题后,就可以进入到最后的难点问题。试着在15天内解决近80-90个难度级别的问题。根据时间和速度,你可以增加问题的数量。
样品的问题
解决编码问题的最佳资源:188金宝搏滚球投注GeeksforGeeks实践门户
第76天至第85天
系统设计
对于初学者来说,这部分不是很重要,但有时面试官也会向没有经验的应聘者提出系统设计相关的问题。所以了解系统设计部分也是很好的。首先学习系统设计的基本概念比如负载均衡、缓存、代理、CAP定理、一致性、分片或数据分区等。
您将被要求设计一个web规模的服务。因此,一旦你完成了基本的概念,准备一些最有可能的系统设计问题,如……
- URL缩短服务(Tinyurl)
- 设计Facebook feed
- 设计优步或Lyft
准备好这些问题将有助于你应对这轮面试,你将会知道在这轮面试中你要做什么。你将获得这一轮的所有权,你将描述系统的不同组成部分。
如果候选人能够建立一个大型和复杂的系统,采访者检查。正如我们提到这一轮的那样,大多数不是从初学者那里询问,所以你不需要进入这个部分的太多深度。但是,您应该具备这一轮究竟发生了什么,因此如果在面试中被问及,可以处理它。
必须经历:
第86天到92天
OS和DBMS.
现在是时候学习两个最重要的计算机科学科目了,操作系统和数据库管理系统。大多数时候,初级工程师都在努力解决与操作系统和DBMS相关的问题,并跳过这一部分。但是准备这两个主题对面试也很重要。
学习操作系统的基本概念,例如
- 流程和流程管理
- 线程和并发性
- 多线程
- 锁
- 进程调度
- 同步和死锁
- CPU调度
- 分布式文件系统
- 内存管理
- 临界区问题
此外,使用一些与数据库相关的问题进行准备,例如关系和非关系数据库,分片,缩放,酸性,索引等。
资源
- 常见操作系统面试问题|
- 在亚马逊(Amazon)、微软(Microsoft)和Flipkart等网站上,被问及最多的计算机学科面试问题
- 188金宝搏滚球投注GeeksforGeeks操作系统
- 188金宝搏滚球投注GeeksforGeeks DBMS
第93天到第99天
面向对象设计
为一个面向对象的设计问题做好准备7天。您应该对软件设计模式,固体/干燥原则和各种oops概念进行良好的理解。下面给出了一些面向对象的设计问题......
- 设计一个自动取款机
- 设计自动售货机
- 设计停车场
- 设计一个电影票预订系统
您的主要目标是收集所有要求并将其转化为可理解的课程。您需要从问题声明中识别不同的对象和实体。
在采访中,你必须解释不同的组件和它们的接口。此外,您还将解释不同的组件如何使用接口相互交互。用用例图、活动图和类图为自己做准备。
一天100
文化适应
最后一天,为文化轮做准备。公司不会雇佣不良员工,也不会雇佣对产品不感兴趣的应聘者。了解公司文化。例如,亚马逊的文化是根深蒂固的,他们进行了一轮挑刺。他们很注重领导原则。
在面试中,你必须表现出对产品的兴趣,而且必须诚实。假人不会被娱乐的。所以你一定要记住所有这些,并以正确的态度为自己做好准备。
100天的经验代码
在你前进之前,请记住,您需要专注于许多事情。您希望在编码圆形,系统设计中以及在另一轮中进行良好。您有利于使用您在日常工作中学到的知识。
有时,这不是面试官很重要的经验,但您花费了削强了他们的编码或技术技能的时间。因此,在多年的经验的基础上判断您的技能并不好。跟踪您的知识,给出一些在线测试,并检查您仍然必须走多远。
第1天到第7天
选择一种编程语言并学习它的基础知识
作为经验丰富的开发人员,您将很容易地选择编程语言并学习它的基本原理。您可以尝试新语言,或者您可以选择您在日常工作中使用的语言。一旦您通过所有基本概念进行决定。
不要以为你在日常工作中使用语言就不需要通过这些基础知识。很多时候,开发人员忘记了基本的概念,或者他们错过了一些东西。所以不要跳过这一部分,并且要熟练掌握你所选择的语言。
你应该记住的几件事是……
- 从/读/写文件。
- 从控制台读取输入。
- 分裂串
- 2D阵列实现以及如何使用它。
- 非常基本的语言,如C / C ++处理空终止字符串
Lyft和Salesforce等大量公司对其招聘程序具有轻微的差异。他们希望候选人编写代码并解决笔记本电脑上的问题。您必须编写完整的程序,您的代码应通过给定的测试用例。您可能必须在命令行参数上工作,或者您可能必须解析CSV或文本文件。
其他公司如谷歌、亚马逊或微软使用白板。所以,在面试中,你最好能掌握语言的基础知识,以应对这两种编程场景。几乎需要7天才能覆盖这一部分。
资源
你也可以试试188金宝搏滚球投注GeeksforGeeks免费课程:
第8天到14天
学习数据结构和算法
经验丰富的开发人员已经在日常作业中使用数据结构和算法(例如:数组在各种应用中最广泛使用)。它们使用具有不同数据结构的编码逻辑,以及深化要求的各种算法。
仍然,很多人忘记了基本实现,他们无法执行简单的任务。因此最好不要跳过这部分并直接跳入编码中。
学习数据结构的所有基本知识,如数组、链表、队列、堆栈、树等,以及它的实现。复习一下在这些数据结构上执行的基本操作。清晰所有关于复杂性的概念,学习不同的算法及其实现。
编码的基本基础即DSA的概念必须是强大的,以解决不同层次的编码问题。你可以通过在线测试来检查你的基本技能。
资源
第15天到28天
解决基本层面问题
刷新数据结构和算法后,练习基本级别编码问题。通过经验丰富的开发人员,大多数时间基本级别问题都没有在访谈中被要求。即使它是它只是一种热身问题。在电话采访中,您可以遇到这些问题。所以不要忽略这个部分并在移动到复杂的之前先解决基本问题。
给你14天的时间来回答基本的问题,试着解决大约70-80个问题。根据时间和速度,你可以增加问题的数量。每天在2-3小时的时间范围内提问5-6个问题已经足够你为电话面试做准备了,这是一种热身的问题,也可以为面试打下基础。
样本数组的问题
示例链接列表问题
样本堆栈和队列问题
样本树问题
样品图的问题
样本堆问题
第29到49天
解决中层问题
在练习基本级别编码问题后移动到中等级别问题并开始解决它。中等水平的问题可以帮助你解决较难的问题,这些问题在面试中最有可能被问到。尝试在21天内必须解决近120-130个中等级别问题。根据时间和速度,你可以增加问题的数量。在2-3小时的时间范围内每天几乎5-6个问题是善于解决的。
示例链接列表问题
样本堆栈和队列问题
样本树问题
样品图的问题
第50天到第70天
解决难度较大的问题
一旦你解决了基础和中级的问题,转移到复杂或困难的级别的问题,并解决它。给你21天的时间,试着解决100-110道问题。根据时间和速度,你可以增加问题的数量。
样品的问题
解决编码问题的最佳资源:188金宝搏滚球投注GeeksforGeeks实践门户
第71天到第85天
系统设计
本节对于有经验的开发人员来说更重要。系统设计是高级工程师面试中最重要的环节。有经验的开发人员需要更多地关注这一部分,在面试中,他们必须告诉面试官设计一个高度可扩展的系统的方法。
首先要了解所有系统设计的基本概念比如负载均衡、缓存、代理、CAP定理、一致性、分片或数据分区等。一旦你完成了基本的概念,准备一些最有可能的系统设计问题,如……
- 网址缩短服务(TinyURL)
- 设计Facebook feed
- 设计Netflix / Youtube
- 设计优步或Lyft
准备好这些问题将有助于你应对这轮面试,你将会知道在这轮面试中你要做什么。你将获得这一轮的所有权,你将描述系统的不同组成部分。在这一轮面试中,面试官会检查应聘者是否能够建立一个庞大而复杂的系统。
在准备了5-6个问题之后,你就会知道这一轮面试是什么样的,你应该怎么做,你需要怎么处理它。
必须阅读:
第86天到92天
OS和DBMS.
现在是时候学习两个最重要的计算机科学科目了,操作系统和数据库管理系统。当高级工程师在面试中被问及这两个主题的概念时,他们应该表现得很好,因为他们在日常工作中编写代码时需要多个核心和线程的帮助。
在操作系统中,刷新在您的本科程序期间您留下了很长时间的基本概念......
- 流程和流程管理
- 线程和并发性
- 多线程
- 锁
- 进程调度
- 同步和死锁
- CPU调度
- 分布式文件系统
- 内存管理
- 临界区问题
此外,使用一些与数据库相关的问题进行准备,例如关系和非关系数据库,分片,缩放,酸性,索引等。
资源
- 常见操作系统面试问题|
- 在亚马逊(Amazon)、微软(Microsoft)和Flipkart等网站上,被问及最多的计算机学科面试问题
- 188金宝搏滚球投注GeeksforGeeks操作系统
- 188金宝搏滚球投注GeeksforGeeks DBMS
第93天到第99天
面向对象设计
为一个面向对象的设计问题做好准备7天。您应该对软件设计模式,固体/干燥原则和各种oops概念进行良好的理解。下面给出了一些面向对象的设计问题......
- 设计一个自动取款机
- 设计自动售货机
- 设计停车场
- 设计一个电影票预订系统
您的主要目标是收集所有要求并将其转化为可理解的课程。您需要从问题声明中识别不同的对象和实体。
在采访中,你必须解释不同的组件和它们的接口。此外,您还将解释不同的组件如何使用接口相互交互。用用例图、活动图和类图为自己做准备。
一天100
文化适应
最后一天,为文化轮做准备。公司不会雇佣不良员工,也不会雇佣对产品不感兴趣的应聘者。了解公司文化。例如,亚马逊的文化是根深蒂固的,他们进行了一轮挑刺。他们很注重领导原则。
在面试中,你必须表现出对产品的兴趣,而且必须诚实。假人不会被娱乐的。所以你一定要记住所有这些,并以正确的态度为自己做好准备。