Skip to content

Instantly share code, notes, and snippets.

@Aaroneld
Last active April 18, 2022 17:54
Show Gist options
  • Save Aaroneld/2084a47b5d5a3f3fb86d40ed683ea880 to your computer and use it in GitHub Desktop.
Save Aaroneld/2084a47b5d5a3f3fb86d40ed683ea880 to your computer and use it in GitHub Desktop.

Intern Learning Resources

This short resource list/autodidactic curriculum has been created in the hopes that it will better prepare interns for full integration into the Software Development Industry. As an intern it is important to think about the extent of your current knowledge and where you can improve, as well as the expectations you must set for yourself in terms of learning and growth. A professional setting can help better shape ones perspective as to what is required. This internship is an opportunity to grow not only in a careerwise manner but as professional in the industry. To this extent it is expected that time will be spent thoroughly exploring and attempting to understand the many aspects of your craft as it pertains not only to your day-to-day activities but your overall understanding as well.

Asking for Help

Basic etiquette

  1. Respect other peoples time
  2. Ask your question in your opening statement state it clearly

Think about the nature of the problem you are having. What do you know? What don't you know? What led you to the problem. Provide this information when asking for help

Researching

Never underestimate the power of a good question.

  • Think about the different ways in which you can ask your question.
  • Think if you need to be more specific or more general.
  • Google and Stack Overflow are magical and often times comprehensive resources for those willing to search
  • Don't be afraid to dive a few pages deep

Things Worth Contemplating

Time Spent (Am I putting in enough time? Am I using my time efficiently?)
Focus/Method (What should I focus on? Where are my problem points? How will I go about my learning?)
Iterative Learning (Look into a topic but don't dive too deeply too fast; being well rounded often means we have to first sacrifice depth of learning for breadth until we can coming back to a topic we have gone over before)


Points for Study

Java

  • Classes/Interface
  • Collections/Streams
  • API Primitive Types and Arrays
  • Basics of Functional Java (Functional interfaces, Lambdas, ect)
  • OOP Fundamentals and how they are applied in Java
  • Java Build Management Tools (Maven, Gradle)
  • Testing in Java with JUnit/TestNG

Some resources to get you started with Java


JavaScript and Node

JavaScript Getting Started

  • Arrays and their methods
  • Objects and their methods
  • Classes
  • Functions (defintions, arrow functions, callback functions, higher order functions)
  • Closures
  • Prototypal inheritance
  • Primitives
  • Imports

Web

  • Asynchronous Coding (Async and Await, .then())
  • HTTP requests(HTTP methods,AJAX requests, Axios, HTTP headers)
  • Interacting with the DOM
  • Local/Session storage

Node Runtime

  • NPM
  • require vs import
  • system I/O
  • Node STLs
  • Express framework for REST APIs


Data Structures and Algorithms

  • Binary Search Tree
  • HashMap
  • Arrays
  • LinkedLists
  • Graphs
  • Stacks
  • Queues
  • Merge Sort
  • Binary Search
  • Heaps
  • Priority Queues
  • How to implement, why to use, Big(O) space and time of (read, write, view, delete) If Big(O) is new research

Don't forget youtube is a great friend here look up information by topic and dig in! Learning how to research properly is a large part of what makes a software developer successful.

Don't forget to refer to the code challange project I shared in the email in which this resource was also shared as these are the level of questions which are expected to be asked and fall in the domain of DSA learning.

Geeks for Geeks


SQL

  • Knowledge of Tools (PGAdmin, MYSQL Dashboard, etc)
  • How to make SELECTions with WHERE conditions (TEXT, CONTAINS, TIMESPAN, EQUALS)
  • Basic aggregate functions (COUNT, AVG, SUM, MAX, MIN, etc)
  • How to SELECT rows based on DISTINCT columns
  • The use of GROUP BY and its WHERE equivalent HAVING
  • The use of ORDER BY
  • The use of LIMIT and OFFSET for pagination
  • How to CREATE tables
  • How to enforce column constraints (NOT NULL, UNIQUE, etc)
  • What are foreign keys
  • What are ON DELETE and ON UPDATE (RESTRICT, CASCADE, SET NULL, NO ACTION) constraints when to use them
  • How to DROP a table
  • How to DELETE rows in a table
  • How to UPDATE rows in a table
  • How to JOIN tables on foreign keys (INNER JOIN, OUTER JOIN, LEFT/RIGHT JOIN)


Linux

  • Knowledge of the Linux filesystem (/bin, /boot, /dev, /etc, /home, /lib, /sbin, /root)
  • Basic commands (mv, rm, cat, grep, touch, find, cd, cp, ls, echo, chmod, chown, tail, head)
  • File permissions
  • User groups
  • How to act as super user
  • How to run process for CLI in the background (&)
  • How to view running processes (jobs)
  • How to kill a process (pkill)
  • Pipping commands (|)
  • The redirection operator (> >>)
  • How to use apt install

Paid Learning resources:

These next three resources are not free but I have used them and they are very good

  • Cracking the Code Interview -- coding interview book in Java:

  • Jetbrains Academy -- offers java course in bite size pieces they are the makers of Intellij IDEA:

  • Pluralsight -- kind of a one stop shop for technical course and tutorials over a wide range of topics kind of pricey but very well curated in my opinion:

Software Support Specific Resources

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment