What does HackerNews think of coding-interview-university?
A complete computer science study plan to become a software engineer.
Define a relative metric for comparison
Programmer's Competency Matrix: https://cuamckuu.github.io/index.html
Coding Interview University: https://github.com/jwasham/coding-interview-university
Coding Guidelines: https://awesome-safety-critical.readthedocs.io/en/latest/#co...
Predict software quality and/or career success
Predict applied ML/AI failure due to insufficient Data Science fundamentals
By well-rounded do you mean the ACM Computer Science Curriculum; or a strong liberal arts program which emphasizes critical thinking and effective communication; or Emotional Intelligence, Servant Leadership, and Project Management?
InfoSec; Computer Security > Careers: https://en.wikipedia.org/wiki/Computer_security#Careers
The NIST NICE Framework describes Categories (7), Specialty Areas (33), Work Roles (52) and Knowledge, Skills, and Abilities which are in demand in cybersecurity: https://niccs.cisa.gov/workforce-development/nice-framework
You and/or a good program can help you find projects and jobs where you can learn and demonstrate application of KSA's (before you present a certificate for your first job and finally begin your career in lifelong learning). A good program teaches you how to learn; study skills, personal people skills, computer skills.
Is managing a team of engineers engineering, and will they still let me do engineering if I do management (which none of us have taken a course in)?
Which programs have QIS Quantum Information Science in their cirricula as more than a paragraph and a quiz question?
DevSecOps > DevSecOps, shifting security left: https://en.wikipedia.org/wiki/DevOps
In interview loops I've done recently, I realized I was most nervous around Systems/Scaling and Graph (e.g. Dijkstra's) questions, so took some time to work on those.
You don't have to do like the author of that piece and work for hundreds of hours. If trees are proving a problem or are an area you know you aren't so up on, then use studying to fill in the gap. Anything is better than nothing, and studying for, let's say, 10 hours might make you just more comfortable with the topic to turn the interview in a more positive direction.
(Disclaimer: I have a academic background from years ago, just haven't used most of these things in years, since like everyone here has admitted, it isn't regularly a part of day-to-day life)
I don't believe solving LeetCode problems well is something that you have to be gifted to achieve. Ironically, I believed it once upon a time. I got very frustrated when failed tech interviews for Microsoft and Google when I was a new-grad and trying to find a decent job.
I know it's frustrating to just look at somebody finishing all the contest problems in 10min and you're scratching your head for many hours or even a whole day. Believe me I was literaly doing this for a long time. But I started my professional occupation anyway. What I did then is keep trying for several years since I know I'm stupid and stubborn. It turns out to be promising in the third year doing so.
I gradually find out there IS a way! There is a clear and straightforward path to do better in algorithm problems: just get a full list of basic data structures and algorithms, understand them all by watching youtube videos, learning online courses (MIT online courses helped be a lot), and practice tens of problems in each subject until you get sick of it. Currently I get 2481 points in LeetCode contest and I'm preparing for my next period of career and hope these hard work finally pay off!
In case someone need it, these 2 lists are very comprehensive and helped me a lot:
* https://github.com/jwasham/coding-interview-university * https://techdevguide.withgoogle.com/
Hope it helps!
I know a place.
From the Github repo Coding Interview University[0] there is a link to a Jupyter notebook[1] on various ways to solve the traveling salesman problem - it is a very good, detailed, resource.
[0] https://github.com/jwasham/coding-interview-university
[1] https://nbviewer.jupyter.org/url/norvig.com/ipython/TSP.ipyn...
Critical thinking: https://en.wikipedia.org/wiki/Critical_thinking
Computational Thinking: https://en.wikipedia.org/wiki/Computational_thinking
> 1. Problem formulation (abstraction);
> 2. Solution expression (automation);
> 3. Solution execution and evaluation (analyses).
Interviewers may be more interested in demonstrating problem solving methods and f thinking aloud than an actual solution in an anxiety-producing scenario.
https://en.wikipedia.org/wiki/Brilliant_(website) ;
> Brilliant offers guided problem-solving based courses in math, science, and engineering, based on National Science Foundation research supporting active learning.[14]
Coding Interview University: https://github.com/jwasham/coding-interview-university
Programmer Competency Matrix: https://github.com/hltbra/programmer-competency-checklist
Inference > See also: https://en.wikipedia.org/wiki/Inference
- Deductive reasoning: https://en.wikipedia.org/wiki/Deductive_reasoning
- Inductive reasoning: https://en.wikipedia.org/wiki/Inductive_reasoning
> This is the [open] textbook for the Foundations of Data Science class at UC Berkeley: "Computational and Inferential Thinking: The Foundations of Data Science" http://inferentialthinking.com/
Computing Curricula 2020 (ACM, IEEE,) http://www.cc2020.net/
Official SAT Practice (College Board, Khan Academy) https://www.khanacademy.org/sat
http://wrdrd.github.io/docs/consulting/software-development#... (TODO: add link to cc2020 draft)
Programmer Competency Matrix: http://sijinjoseph.com/programmer-competency-matrix/ , https://competency-checklist.appspot.com/ , https://github.com/hltbra/programmer-competency-checklist
Re: Computational thinking https://westurner.github.io/hnlog/#comment-15454421
Coding Interview University: https://github.com/jwasham/coding-interview-university
As the url suggests, it's got an agenda about interview prep but the materials do not - they're straight up CS resources. Like I said, this may not be exactly what you want, but it could be helpful.
On a different note, I have completed the Stanford Algorithms Course part 1 (currently working on part 2) and I can recommend it.
What does the curriculum look like? I’m on a phone and it wasn’t obvious
What percentage take the course and don’t succeed at getting a job offer?
What percentage get a FAANG level offer?
What does the typical successful “candidate” look like that takes the course?
How is this better than just doing leetcode/CTCI/CIU[0]?
How does this differ from /better than similar programs like techlead’s one[1]
What happens if you pay the $8k upfront and fail to get an offer?
[0] https://github.com/jwasham/coding-interview-university
[1] https://www.techseries.dev/
Edit: FYI your domain is 1 letter away from https://www.codebreakeracademy.com (which is a very different thing)
What you need to differentiate yourself is to learn the undocumented dark arts for whiteboard interviews that the FAANMG are really looking for in a technical interview.
Firstly, [0] explains where these data structures are used in Computer Science and should be a start on implementing them and understanding their complexities and use-cases. The rest from [1 - 4] goes straight into the advanced details of areas like competitive-programming which will give you explanations and clever solutions which are better than the typical DS and algorithm answers that even the interviewers will suggest.
Some of these resources might even give a walkthrough of a proof of these complexities if you really need to convince the interviewer who wants to rigorously test your understanding.
[0] - https://cstheory.stackexchange.com/questions/19759/core-algo...
[1] - http://courses.csail.mit.edu/6.851/
[2] - http://jeffe.cs.illinois.edu/teaching/algorithms/
[3] - http://cp-algorithms.com/
[4] - https://concatenative.org/wiki/view/Exotic%20Data%20Structur...
If you really don't know where to start, you can search and pick a specific topic here to study it in depth: https://github.com/jwasham/coding-interview-university
Personally, If I were preparing for a FAANMG interview, I would contribute to widely known open-source projects that utilise these concepts such as compilers like LLVM, Rust or V8 and operating systems.
When studying from this, choose only to learn the optimal data structures and algorithms, understand why the other solutions are bad and then find out where these concepts are applied in several open-source projects.
Once you have completed the essentials, solve the puzzles in Hackerrank and Leetcode, before the interview.
To be honest, I dislike this sort of interviewing for DS/Algos unless the company can justify using them other than for a secret IQ test or another candidate filtering technique. If it were me, I'd just ask for links to significant open-source contributions instead of this nonsense.
jwasham/coding-interview-university also links to a number of also helpful OER resources: https://github.com/jwasham/coding-interview-university
PS: I also failed much easier interviews at CrowdStrike and SourceGraph so maybe I just suck at being interviewed in a way that's not clear to me. It really takes a toll on your confidence though.
1) By what metric? Also, who's we? I am a full-stack engineer and feel properly compensated if not over-payed given my expectations.
2) Leetcode has been extremely helpful. Not just in interviewing, but also in understanding how to have more granular control of space/performance. However, it is not the whole picture and I would point people to the famous coding university github: https://github.com/jwasham/coding-interview-university and further push people to follow research and coders they admire such as Peter Norvig: http://norvig.com/
https://learnxinyminutes.com/docs/python3/ (Python3)
https://learnxinyminutes.com/docs/javascript/ (Javascript)
https://learnxinyminutes.com/docs/git/ (Git)
https://learnxinyminutes.com/docs/markdown/ (Markdown)
Read the docs. Read the source. Write docstrings. Write automated tests: that's the other half of the code.
Keep a journal of your knowledge as e.g. Markdown or ReStructuredText; regularly pull the good ones from bookmarks and history into an outline.
I keep a tools reference doc with links to Wikipedia, Homepage, Source, Docs: https://wrdrd.github.io/docs/tools/
And a single-page log of my comments: https://westurner.github.io/hnlog/
> To get a job, "Coding Interview University": https://github.com/jwasham/coding-interview-university
https://github.com/jwasham/coding-interview-university
https://github.com/jwasham/coding-interview-university/blob/...
Although you hear of Google hiring thousands of developers a year, and those that do get hired having a 5% chance of success or whatever, that doesn't mean that Google are guaranteed to offer you an interview. I've applied a handful of times, and despite having a Computer Science degree, startup, and small/large agency experience I've never managed to get past the application stage at Google or Microsoft. Microsoft and Amazon contacted me in the past, but neither actually resulted in an interview. Google rejected me within days of applying on both occasions I applied.
With that in mind I would recommend that you follow a loose curriculum, and just focus on becoming the best developer you can be. I'm currently working through John Washam's repo on getting a job at one of the big four, and it was good enough to get him through the door at Amazon.
https://github.com/jwasham/coding-interview-university
In general I think it's a good idea to rethink what your aims as a developer are every now and then, regardless of what company you want to work for. Recently, I was a senior .NET developer at a large agency working for big-name clients, but I often felt like I wasn't a "proper developer" because I worked on the .NET stack, and because for the past few years I've felt complacent in a senior-level role. To combat this, I started learning some new languages on the side, and eventually moved to a new job where I've switched from being the go-to guy for .NET to the goes-to guy for working on a Linux stack, and I hope that over the next few years I'll pick up enough knowledge that I can throw an application in again and not get immediately rejected.
I wouldn't recommend going back to school. You already have a Master's in Physics, which should give you all the math background you need to understand CS algos. I'd even encourage you to start to "translate" your Physics knowledge into code.
Google, FB, Microsoft, et. al. are more concerned with your ability to explain CS concepts at a whiteboard than your degrees.
Have you considered SpaceX? http://www.spacex.com/careers/list
They are usually very interested in cross discipline candidates.
IMO with all the other languages available Java just doesn't really offer anything special enough to warrant it's dealing with it's awkward type system and verbosity. Unless you want to do something with Java specifically like Android dev it just doesn't offer anything worth the pain. If want higher performance and the type safety that Python doesn't have I prefer Go. It's syntax is very similar to Python and it has some interesting concepts.
Whatever you choose don't choose based off hype/promises of jobs. Most companies will hire engineers who have never used the language(s) in their stack as long you can demonstrate knowledge of core programming concepts. Python's `list`, Java's `ArrayList` and Go's `slice` might have some slight differences in implementations and different warts and what have you but deep down they are arrays. If you are familiar with the data structures and algorithms core to programming you can learn to use any language to solve problems.
At the end of the day a language is just a tool. The concepts that underpin these tools are what is important. So choose a tool you enjoy using and fits the scenario. Here are some links that were helpful for me, hopefully they will be helpful for you:
Python:
- https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial... - Good tutorial written for Flask.
- https://docs.python.org/3/ - Python docs, lots of good info there
- https://docs.djangoproject.com/en/2.0/intro/tutorial01/ - Django tutorial. Good intro to developing applications with Django, probably the most popular/common Python web framework.
Go:
- https://tour.golang.org/welcome/1
General:
- https://www.codecademy.com/catalog/subject/web-development - Very basic tutorials, has Java and Python as well as others
- https://github.com/jwasham/coding-interview-university - Lots of general CS info, this is the important stuff
"Coding Interview University" https://github.com/jwasham/coding-interview-university
- "Open Source Society University: Path to a self-taught education in Computer Science!" https://github.com/ossu/computer-science
This is also great:
- "Coding Interview University" https://github.com/jwasham/coding-interview-university
Neither these nor the ACM Curriculum are specifically topologically sorted.
https://github.com/jwasham/coding-interview-university
It's pretty in depth and extremely popular (44k stars). Hope it helps.