Tuesday, December 27, 2016

How can I get a job at Facebook or Google in 6 months?



Follow these 10 steps  and eventually you may be in good position to apply to these companies
  1. Stick to one programming language, make sure you can code with absolute ease in this language. I am sure Google and FB dont have affinity to one specific language.Code them on Linux or Mac preferably. They are Unix variants 
  2. Get yourself a good book on Algorithms and data structures
  3. Complete the book so that you get the hang of all basic algorithms and data structures. (Book,Data Structures Using C)
  4. Learn other computer basics like OS concepts, bit programming, networking and about data bases(Preferably The world's most popular open source database (MySql) should be enough)
  5. Understand that you have just completed the course and you are still not expert in Algorithms!
  6. Now you need to sharpen your coding and algo skills, which should be taken  in parallel.
  7. Fork some small and famous  Build software better, together (Git)  projects and try understanding the code and if possible try contributing to it. This will ensure that you code the right way!
  8. Participate in topcoder or codechef or codesprint. These sites have practice problems which will sharpen your algorithms skill.
  9. I find Programming Interviews has some awesome explanations to very nice problems from a IITian if you can follow Indian English accent.
  10. Please glance back what ever you learn in these days and make sure you dont forget what you learn

Guide for Technical Development        

        
          Having a solid foundation in Computer Science is important to become a successful Software Engineer. This guide is a suggested path for university students to develop their technical skills academically and non-academically through self paced hands-on learning. You may use this guide to determine courses to take, but please make sure you are taking courses required for your major in order to graduate. The online resources    provided in this guide are not meant to replace courses available at your university. However, they may help supplement your learning or provide an introduction to a topic.         
        
 Using this guide:         
       
  • Please use this guide at your discretion          
  • There may be other things you want to learn or do outside of this guide - go for it!          
  • Checking off all items in this guide does not guarantee a job at Google          
  • This guide will evolve or change - check back for updates          
          
                   Recommendations for Academic Learning                 
  •    Introduction to CS Course           
                  Take Introduction to Computer Science courses that provide basic instructions on coding.            
               
                  Online resources: Udacity - intro to CS courseCoursera - Computer Science 101           
             
  •   Code in at least one object oriented programming language: C++, Java, or Python           
                  Beginner Online Resources: Coursera - Learn to Program: The  FundamentalsMIT Intro to Programming in JavaGoogle's Python ClassCoursera - Introduction to PythonPython Open Source               E-Book           
               
                  Intermediate Online Resources: Udacity's Design of Computer ProgramsCoursera - Learn to Program: Crafting Quality CodeCoursera - Programming LanguagesBrown University - Introduction to Programming Languages           
             
  •   Learn other Programming Languages           
                  Notes: Add to your repertoire - JavaScript, CSS & HTML; Ruby; PHP; C; Perl; shell script; Lisp and Scheme.            
               
                  Online Resources: w3school.com - HTML TutorialCodecademyUdacity - Mobile Web DevelopmentUdacity - HTML5 Game Development           
             
  • Test Your Code           
                  Notes: Learn how to catch bugs, create tests, and break your software            
               
                  Online Resources: Udacity - Software Testing MethodsUdacity - Software Debugging           
             
  • Develop logical reasoning and knowledge of discrete math           
                  Online Resources: MIT Mathematics for Computer Science, Coursera - Introduction to Logic, Coursera - Linear and Discrete Optimization, Coursera - Probabilistic Graphical Models,               Coursera - Game Theory            
             
  • Develop strong understanding of Algorithms and Data Structures           
                  Notes: Learn about fundamental data types (stack, queues, and bags), sorting algorithms (quicksort, mergesort, heapsort), data structures (binary search trees, red-black trees, hash tables), and Big O.            
               
                  Online Resources: MIT Introduction to Algorithms, Coursera Introduction to Algorithms Part 1 & Part 2List of  AlgorithmsList of Data Structures, Book:The Algorithm Design Manual           
             
  • Develop a strong knowledge of operating systems           
                  Online Resources: UC Berkeley Computer Science 162           
             
  • Learn UX Design           
                  Online Resources: Udacity - UX Design for Mobile Developers           
             
  • Learn Artificial Intelligence           
                  Online Resources: Stanford University - Introduction               to RoboticsNatural Language ProcessingMachine Learning           
             
  • Learn how to build compilers           
                  Online Resources: Coursera - Compilers           
             
  • Learn cryptography           
                  Online Resources: Coursera - CryptographyUdacity - Applied  Cryptography           
             
  • Learn Parallel Programming           
                  Online Resources: Coursera - Heterogeneous Parallel Programming           
             
  • Work on project outside of the classroom.           
                  Notes: Create and maintain a website, build your own server, or build a robot.            
               
                  Online Resources: Apache List of ProjectsGoogle Summer of CodeGoogle Developer Group           
             
  • Work on a small piece of a large system (codebase), read and understand existing code, track down documentation, and debug things.           
                  Notes: GitHub is a great way to read other people’s code or contribute to a project.            
               
                  Online Resources: GitHubKiln           
             
  • Work on project with other programmers.           
                  Notes: This will help you improve your ability to work well in a team and enable you to learn from others.            
             
  • Practice your algorithmic knowledge and coding skills           
                  Notes: Practice your algorithmic knowledge through coding competitions like CodeJam or ACM’s International Collegiate Programming Contest.            
               
                  Online Resources: CodeJamACM ICPC           
             
  • Become a Teaching Assistant           
                  Helping to teach other students will help enhance your knowledge in the subject matter.            
             
  • Internship experience in software engineering           
                  Notes: Make sure you apply for internships well in advance of the period internships take place. In the US, internships take place during the summer, May-September. Applications are usually accepted several months in advance.             

No comments:

Send free SMS Text Messages with Python

Short Message Service (SMS) text messages are ubiquitous for communication all over the world. It is easy to send SMS text messages fro...

Data Science

WEB Development